8.2 颗粒位置的更新

得到某颗粒在时刻 \(t\) 所受合力后,就可以更新颗粒的位置和角速度 。根据牛顿第二运动定律有:

\[\vec{a_t}=\vec{F_t}/m\]
\[\eta_t=M_t/I\]

其中,\(\vec{a_t}\)\(\eta_t\) 分别表示颗粒在时刻 \(t\) 的平动加速度和角加速度, \(\vec{F_t}\)\(M_t\) 分别为颗粒在该时刻的合力和合力矩,\(m\)\(I\) 分别为颗粒的质量和惯性矩。

假设已知某颗粒在 \(\eta_t\) 时的位置 \(\vec{P_t}\)\(t-\bigtriangleup{t}\) 平动加速度 \(\overrightarrow{v_{t-\bigtriangleup{t}/2}}\) 时的平动速度,则按照跳蛙法有,

\[\overrightarrow{v_{t+\bigtriangleup{t}/2}}=\overrightarrow{v_{t-\bigtriangleup{t}/2}}+\vec{a_t}\cdot\bigtriangleup{t}\]
\[\overrightarrow{P_{t+\bigtriangleup{t}}}=\overrightarrow{P_{t}}+\overrightarrow{v_{t+\bigtriangleup{t}/2}}\cdot\bigtriangleup{t}\]

其中,\(\bigtriangleup{t}\) 为一个时步。

首先,得到颗粒在 \(t+\bigtriangleup{t}/2\) 时的速度 \(\overrightarrow{v_{t+\bigtriangleup{t}/2}}\) ,再得到颗粒在 \(t+\bigtriangleup{t}\) 时的位置 \(\overrightarrow{v_{t+\bigtriangleup{t}/2}}\)。之后,由相应的接触力学模型计算颗粒间的接触力,得到 \(t+\bigtriangleup{t}\) 时颗粒所受合力,通过牛顿第二运动定律求得 \(t+\bigtriangleup{t}\) 的颗粒的平动加速度,就可以更新颗粒 \(t+\bigtriangleup{t}\) 时的位置,这样一直迭代循环下去,直到计算结束。

同理,假设某颗粒在 \(t\) 时的角度为 \(\theta_{t}\) 和角加速度为 \(\eta_t\)\(t-\bigtriangleup{t}/2\) 时的角速度为 \(\omega_{t-\bigtriangleup{t}/2}\) ,则按照跳蛙法有,

\[\omega_{t+\bigtriangleup{t}/2}=\omega_{t-\bigtriangleup{t}/2}+\eta_t\cdot\bigtriangleup{t}\]
\[\theta_{t+\bigtriangleup{t}}=\theta_{t}+\omega_{t+\bigtriangleup{t}/2}\cdot\bigtriangleup{t}\]

在接触力学模型部分, 颗粒所受切向力一般由位移增量(颗粒在接触点处的相对速度 \(\times\bigtriangleup{t}\) )计算得到,不需要颗粒的角度值。如果没有其它特殊需要,可以不更新颗粒的角度,只更新颗粒的角速度即可。