11月27日

11月27日

任务:

研究reducedDynamicSolver-rt,了解降维后的积分方法


代码结构:

函数initScene()准备必要的资源,按顺序为:

  1. 调用了ReadMatrixFromDisk_()从磁盘读取低维基向量,放入ModalMatrix 对象renderingModalMatrix之中,这个类可以由高维力算出低维力。同时分配低维坐标q 低维力 fq fqBase。其中fqBase表示在参考动作(参考动作不一定是未变形动作)的情形下的低维力,模拟实际的力是在这个力的基础上加上用户施加的力fq。

  2. 用模态矩阵和网格初始化SceneObjectReducedCPU对象deformableObjectRenderingMeshCPU,并赋给基类指针deformableObjectRenderingMeshReduced。SceneObjectReducedCPU可以即时指定的新的低维坐标,并换算成高维坐标(顶点的位移)。

  3.  用多项式系数初始化 StVKReducedInternalForces(cubicPolynomialFilename)对象stVKReducedInternalForces,此类既可以用已经计算好的stvk多项式系数初始化,也可以即时计算系数

    这个类可以用给定的低维坐标,计算出低维力

  4. 用 StVKReducedInternalForces 初始化 StVKReducedStiffnessMatrix,这个矩阵可以通过给定的低维坐标,构造出对应位置的tangent stiffness matrix

  5.  用前述计算低维力和低维切向刚度矩阵的两个类构造ReducedStVKForceModel对象

  6. 用以上数据初始化ImplicitNewmarkDense积分器


函数idleFunction()迭代求解

  1. 给积分器设置当前的外力fq,fq= 参考动作鼠标拖动的外力 + 当前鼠标拖动的外力

  2. 调用积分器的DoTimeStep函数进行数值积分

  3. 获得积分器计算出的低维坐标q,赋值给SceneObjectReducedCPU,并调用其Compute_uUq函数计算出高维坐标(顶点偏移)

  4. 更新显示







posted @ 2015-01-20 13:55  dydx  阅读(183)  评论(0编辑  收藏  举报