What I Do?
我尝试在mpm99的代码基础上,加入一个风车(刚性固体,固定在某点处,绕着该点旋转。)
前情提要:我根本不懂mpm的理论,代码是靠着直觉摸的,我希望它能有点模样。
情形一
这个场景下风车匀速转动,与流体发生交互。风车会改变流体的运动状态,但风车的运动状态不受流体影响。
实现方式是:使用额外的粒子来表示风车,在做p2grid时,风车粒子也一起scatter到grid上。因为风车不会发生形变,所以风车的F和J都不更新。
#情形二
我希望能让风车的运动靠水流来驱动。我所掌握的公式仅有:力矩=力×力臂。
于是我在情形一的基础上,在grid2p时,add up风车上所有粒子的:
a_p.dot(c_p-c0)
这里的a_p表示风车粒子p相对于质心位置的角加速度,c_p表示粒子的位置,c0是质心位置。液体和风车交互的时候,没有考虑液体的重力对风车运动状态的影响。
这个情形下的模拟结果一点也不正常。我不知道我的思路是不是错的。
#情形三(playing)
请大家欣赏我的滚筒洗衣机 。