Homework1: SPH: WCSPH PCISPH, DFSPH

实现了一个简易的SPH流体仿真器,暂时只测试了二维情况;比较了WCSPH, PCISPH, DFSPH三种方法, 其中后两种方法用到了semi-implicit格式。因为目前还没有加入流固耦合,就先用了不同颜色的水来制造一些冲击的情形。

代码链接/后续更新

  • 仿真结果
    wcsph_optimize pcisph_op dfsph_optimize
    从左向右:WCSPH, PCISPH, DFSPH

  • 仿真参数
    粒子数4.5k, 仿真时间5秒(在0.4s出现水块撞击液体),采用自适应步长
    硬件:MacBook pro(2017), cpu 2.3 GHz Intel Core i5

  • 对比

  1. WCSPH
    WCSPH需要刚度足够的流体,才能尽力保持density小范围变动,因此整体呈现出的效果非常粘滞(图中的density变化在5%左右, 可以观察到体积膨胀);与此同时,高刚度要求非常短时间步长(< 0.1ms),导致仿真总时间很长(3046.3s)

  2. PCISPH
    通过Predictive-Corrective (类似于Jacobi iteration)的方式修正density,保证density变化在阈值内(图中阈值为1%)
    可选择更长的时间步长(平均0.25ms),仿真总时长下降至1674.9s

  3. DFSPH
    除了修正density变化,进一步修正density divergence,使两者变化都在阈值内(图中阈值为1%)
    时间步长可以进一步增大(平均1.0 ms),仿真总时长下降至517.4s

  • Limitation / Further work:
    PCISPH的结果有比较明显的damping现象
    DFSPH在高速撞击下出现了一些不稳定的现象。。比如粒子飞溅, 需要进一步做Shock handle
    边界处理仍然存在问题,DFSPH偶尔会出现边界粒子速度跳变的情况, 需要对boundary做进一步处理
    稳定性条件的系数需要根据算例的具体情况进行调节
9 Likes