实现了一个简易的SPH流体仿真器,暂时只测试了二维情况;比较了WCSPH, PCISPH, DFSPH三种方法, 其中后两种方法用到了semi-implicit格式。因为目前还没有加入流固耦合,就先用了不同颜色的水来制造一些冲击的情形。
-
仿真结果
从左向右:WCSPH, PCISPH, DFSPH -
仿真参数
粒子数4.5k, 仿真时间5秒(在0.4s出现水块撞击液体),采用自适应步长
硬件:MacBook pro(2017), cpu 2.3 GHz Intel Core i5 -
对比
-
WCSPH
WCSPH需要刚度足够的流体,才能尽力保持density小范围变动,因此整体呈现出的效果非常粘滞(图中的density变化在5%左右, 可以观察到体积膨胀);与此同时,高刚度要求非常短时间步长(< 0.1ms),导致仿真总时间很长(3046.3s) -
PCISPH
通过Predictive-Corrective (类似于Jacobi iteration)的方式修正density,保证density变化在阈值内(图中阈值为1%)
可选择更长的时间步长(平均0.25ms),仿真总时长下降至1674.9s -
DFSPH
除了修正density变化,进一步修正density divergence,使两者变化都在阈值内(图中阈值为1%)
时间步长可以进一步增大(平均1.0 ms),仿真总时长下降至517.4s
- Limitation / Further work:
PCISPH的结果有比较明显的damping现象
DFSPH在高速撞击下出现了一些不稳定的现象。。比如粒子飞溅, 需要进一步做Shock handle
边界处理仍然存在问题,DFSPH偶尔会出现边界粒子速度跳变的情况, 需要对boundary做进一步处理
稳定性条件的系数需要根据算例的具体情况进行调节