我正在使用基于例如https://www10.informatik.uni-erlangen.de/Publications/Theses/2010/Staubach_BA10.pdf的 SPH 方法实现基本流体流动模拟器。
编辑(死网址):https ://www10.cs.fau.de/publications/theses/2010/Staubach_BT_2010.pdf
到目前为止,我已经实现:
均匀网格构造
密度和压力场计算
- 压力和粘性力计算
- 速度阻尼力计算
- 表面张力(表面法线和曲率值)计算
- 加速度和速度计算(基于这些力和重力)
不幸的是,我在校准参数以避免粒子聚集或在每个可能的方向上散布它们时遇到问题。
除了随机之外,还有其他方法可以计算出合适的模拟参数值吗?
我的参数是:
- 粒子半径- (我希望它是 0.3 并设置与此相对应的其他参数)
- 平滑半径- 4*粒子半径 = 1.2
- 粒子质量- 决定一切
- 刚度- 决定压力值(2.19 方程中的 k)
- 静息密度- 决定压力场(2.19 方程中的 ρ0)
- 动态粘度- 决定粘度力的值(2.25 方程中的 μ)
- 重力- (0.0, -9.81, 0.0)
- 速度阻尼- 决定阻尼力的值(F = -速度阻尼 * 速度)
- 张力系数- 决定表面张力的值(2.30 方程中的 σ)
- 张力阈值 - 计算表面张力的最小表面法线长度(2.31 方程中的 l)
- 时间步长
我很确定我的计算没有问题。不幸的是,此文档或其他文档中的示例值对我不起作用,我可能需要自己计算它们。
我很乐意回答有关我的实施的任何问题,以帮助您帮助我。:)
哦,差点忘了,我用的是CUDA 6.0。