SPH实践之WCSPH两问题

SPH实践之WCSPH两问题

  • 背景
  • 问题一:边界接触处流体粒子躁动
  • 问题二:溃坝实验流体收缩现象
  • 结语

背景

本人入SPH已有一段时间,近日遇到两个问题(emmm,往日问题无数)。今日心血来潮,写下第一篇博客,既是保存一点工作进展,也供有需要的读者参考。若有错漏,还请指正。

近日实验所使用2D框架是一个改自三维模拟系统,该系统在三维方面表现良好,后强行将z轴的位置和速度设置为0,从而得到二维模拟框架,但二维模拟效果存在一些问题。个人看来,由于模拟系统的复杂性和迭代性,调试难度高。现将近日所遇两问题和解决方法总结如下。

问题一:边界接触处流体粒子躁动

这个问题目前原因未知,由于是边界接触处发生问题,所以自然想到会不会是边界处理引发。

尝试一:背景提到过该框架由三维改造而来,边界用固定粒子模拟,流体部分已经是z值为零的一层粒子,但边界依旧是一个三维盒子,所以本人怀疑是边界接触处的三维边界粒子太多导致的此问题,遂改成二维粒子边界,问题依旧存在。该尝试目前无果。

尝试二:由于本人看过其他几个二维框架,边界均是直接用反弹处理,所以就尝试通过这种方法解决。首先设置反弹界限为x[-2.0, 2.0],y[0.0, 4.0]。模拟异常,有些粒子会突然获得极大速度导致模拟异常。由于之前调试其他框架时也遇到过相似问现象(当时在其他框架调节其边界后模拟异常),所以将边界调整为x[-1.9, 1.9],y[0.1, 3.9]后,问题解决。

小结:这个问题目前算是浅度解决,就是模拟异常解决了,但是其中原因没搞清楚。另外说一下,直接反弹边界对比粒子边界,似乎能量损耗偏大,流体更快地平静下来。

问题二:溃坝实验流体收缩现象

二维溃坝实验,在模拟开始时,流体出现收缩聚拢,而后正常模拟。经观察实验,收缩时流体粒子的密度和压力波动很大。

尝试一:实际上这种收缩现象我曾经也遇到过,当时在一个二维框架中,我把程序的粒子光滑长度设置为原来的1.25倍后,出现了这个现象。所以这次遇到这个问题,我首先想到的就是把光滑长度调小试试,经过实验,调下光滑长度后该现象得到改善,但未完全解决,因为当调到较小的时候,会引发其他模拟问题(所有粒子躁动不止)。该尝试失败。

尝试二:一筹莫展之际灵光一闪,收缩问题会不会是一个体积问题。于是开始观察实验的体积变化(采用了一种暴力但简单的方法,把流体初始状态和最后稳定状态截图下来,通过截图分辨率判断流体体积变化)。结果如下:初始状态(大小为240x239)体积57360,稳定状态(大小为636x72)体积45792。
SPH实践之WCSPH两问题_第1张图片
稳定状态(大小为636*72)
由此,体积严重变小,所以我认为收缩问题应是初始粒子分布间距问题导致的。
故将初始粒子分布间距设置为原来的0.9倍,收缩问题得到解决。且稳定状态体积变为54060(更为接近初始体积,所以倍数应该再设置小一点?)

结语

此两个问题解决手段偏于应用(为效果服务呀),解决方法源于本人经验与直觉,但原理上仍有可以深入探究的地方。若对此问题有看法或对我解决方法存在疑惑,欢迎交流。

你可能感兴趣的:(SPH,流体模拟,弱可压)