刚性浮体也属于实粒子,使用额外的数据容器,存储浮体粒子集合,在建立 NNPS 数据结构时进行映射,在更新粒子运动时, 将同一集合的粒子进行统一更新。
浮体受力是由浮体内部粒子受力之和,单个浮体粒子受到交互的流体粒子排斥力和重力:
fk=∑a∈WPsfka
其中,fk 为单个浮体粒子受力,fka 为每个交互的流体粒子提供给浮体粒子的受力。
受力满足动量守恒:
mkfka=−mafak
所有浮体粒子受力,引发浮体整体发生加速度:
MdVdt=∑k∈RPsmkfk
MdΩdt=∑k∈RPsmk(rk−R0)×fk
其中,M 为浮体质量,V 为浮体速度,Ω 为浮体角速度,R0 为浮体质心位置。
目前的排斥力边界方式可能不合理,是基于粒子数量本身的排斥力,一旦粒子数量密度不均匀,可能会导致浮体受力不均匀。
浮体粒子的速度可由浮体的整体速度得到:
uk=V+Ω×(rk−R0)