简介

     所谓显式和隐式,是指求解方法的不同,即数学上的出发点不一样。并不是说显式只能求动力学问题,隐式只能求静力学问题,只是求解策略不通。

     显式求解是对时间进行差分,不存在迭代和收敛问题,最小时间步取决于最小单元的尺寸。过多和过小的时间步往往导致求解时间非常漫长,但总能给出一个计算结果。解题费用非常昂贵。因此在建模划分网格时要非常注意。
  隐式求解和时间无关,采用的是牛顿迭代法(线性问题就直接求解线性代数方程组),因此存在一个迭代收敛问题,不收敛就的不到结果。
        两者求解问题所耗时间的长短理论上无法比较。实际应用中一般感觉来说显式耗时多些。由于两者解题的出发点,所以一般来说显式用于求解和时间相关的动力学问题。隐式用来求解和时间无关的静力学问题。但也不是绝对的。比如,用隐式求解时,为了克服迭代不收敛,改用显式算,但是要多给点时间,这样虽然克服了不收敛的问题,但是求解的时间费用也是相当客观的。另外,隐式也可以求解动力学问题。
        显式求解与隐式在数学上说主要是在求解的递推公式一个是用显式方程表示,一个是用影视方程来表示。比如a(n)=a(n-1)+b(n-1),后一次迭代可以由前一次直接求解,这就是显示方程,如果a(n)=a(n-1)+f[a(n)],f[a(n))为a(n)的函数,此时a(n) 不能用方程显示表示,及数学上的隐函数,一般很难直接求解,多用迭代试算法间接求解。有限元在求解动力学问题中直接积分法中的中心差分积分就是显示求解,而Newmark积分法则为隐式积分。

隐式积分求解有限元问题

      假设现在一个物体已经被离散成有点个单元。

       显式求解与隐式在数学上说主要是在求解的递推公式一个是用显式方程表示,一个是用影视方程来表示。比如a(n)=a(n-1)+b(n-1),后一次迭代可以由前一次直接求解,这就是显示方程,如果a(n)=a(n-1)+f[a(n)],f[a(n))为a(n)的函数,此时a(n) 不能用方程显示表示,及数学上的隐函数,一般很难直接求解,多用迭代试算法间接求解。有限元在求解动力学问题中直接积分法中的中心差分积分就是显示求解,而Newmark积分法则为隐式积分。显式求解与隐式在数学上说主要是在求解的递推公式一个是用显式方程表示,一个是用影视方程来表示。比如a(n)=a(n-1)+b(n-1),后一次迭代可以由前一次直接求解,这就是显示方程,如果a(n)=a(n-1)+f[a(n)],f[a(n))为a(n)的函数,此时a(n) 不能用方程显示表示,及数学上的隐函数,一般很难直接求解,多用迭代试算法间接求解。

      有限元在求解动力学问题中直接积分法中的中心差分积分就是显示求解,而Newmark积分法则为隐式积分。显式求解与隐式在数学上说主要是在求解的递推公式一个是用显式方程表示,一个是用影视方程来表示。比如a(n)=a(n-1)+b(n-1),后一次迭代可以由前一次直接求解,这就是显示方程,如果a(n)=a(n-1)+f[a(n)],f[a(n))为a(n)的函数,此时a(n) 不能用方程显示表示,及数学上的隐函数,一般很难直接求解,多用迭代试算法间接求解。有限元在求解动力学问题中直接积分法中的中心差分积分就是显示求解,而Newmark积分法则为隐式积分。

      首先定义几个变量:

      x : 当前物体位置;则 表示速度,表示加速度。

      为物体的质量矩阵,

对于牛顿第二定律: F=ma,用矩阵的形式表示的话:

其中:表示物体在X位置下,速度为X导的情况下的受力。

首先问题的初始条件是初始位移和初始速度

目的是求得h时间后的位移和速度

对于式子:

若用显示欧拉求解,记,则可得到:

这样,就利用欧拉前向方法在小步长的条件下求得当前状态的位置和速度。

对于欧拉隐式解法,上式就变成了

前向解法和后向解法的区别就是前向的求解只依赖于前一时刻的状态量,而后向求解则不仅依赖于前一时刻的状态,还依赖于当前时刻的状态。

上式是一个非线性方程,不好直接求解,先对 f 进行泰勒级数展开:

代入原式:

I 表示单位矩阵,对上式进行移项,有

通过这个式子很容易求得 detaV,然后detaX也可以求出,那么当前时刻的状态就求出来了。

参考

Large Steps in Cloth Simulation