表面张力的作用会使流体表面积和曲率趋向于最小,对于小尺度流体的运动形态有较大的影响。PeriDyno目前使用的表面张力求解器是基于自由表面能量函数方法实现的,该方法相比于其它方法稳定性更好,而且不会引入过多的计算量。
表面张力的大小取决于流体气液表面的曲率,而流体表面的曲率($\nabla_i c$)可以通过以下公式计算,即: $$ \nabla_i c = \frac{\sum_j Vj \nabla_i W(r_{ij},h)}{\sum_j Vj W(r_{ij},h)} $$ (公式1)
由自由表面能最小化模型,流体的表面张力可通过如下公式计算获得: $$ F_i = 0.25 \kappa \sum_j V_i V_j \left ( |\nabla_i c |^2 + |\nabla_j c |^2 \right ) \nabla_i W(r_{ij},h) $$ (公式2)
上式中的 $V、\kappa$ 分别为粒子的体积以及控制表现张力作用强度的系数。
在获取到粒子的表面张力后,即可更新流体粒子的位置,实现表面张力作用下流体运动的模拟。
PeriDyno中,表面张力求解器的源码文件为:
"Engine/Dynamics/Module/SurfaceTension.cu";
"Engine/Dynamics/Module/SurfaceTension.h";