SPH流体模拟器 返回
流体力学

SPH流体模拟器

使用光滑粒子流体动力学(SPH)实时模拟二维流体。直观体验粘性、湍流和流体动力学。

参数设置
粒子数量 200
粘性系数 0.30
重力强度 9.8
--
帧率
--
粒子数
--
平均动能

SPH核函数

密度估算(Poly6核函数):

$$W_{poly6}(r,h) = \frac{315}{64\pi h^9}(h^2-r^2)^3$$

压力梯度(Spiky核函数):

$$\nabla W_{spiky}(r,h) = -\frac{45}{\pi h^6}(h-r)^2 \hat{r}$$

$h$:光滑长度,$r$:粒子间距

CAE工程备注: SPH法在工业上用于大变形自由表面流动问题——山体滑坡、混凝土浇筑和爆炸破碎。代表性求解器包括DualSPHysics和LS-DYNA SPH模块。

在画布上点击并拖动可添加粒子 | 圆形障碍物位于中央

什么是SPH流体模拟

🧑‍🎓
SPH模拟器里这些跑来跑去的小点就是“粒子”吗?它们和动画片里的水滴有什么区别?
🎓
简单来说,这些粒子不只是动画,每个都像一个小小的“传感器”,带着自己的速度、密度和压力信息。它们通过一个叫“核函数”的规则,和周围一定范围内的邻居粒子“聊天”,互相传递力。你试着在画布上点击并拖动,添加一些粒子,它们会立刻开始和中央的圆形障碍物互动,这就是在实时计算粒子间的相互作用力。
🧑‍🎓
诶,真的吗?那旁边的“粘性系数”滑块是干嘛的?我调大了会怎样?
🎓
在实际工程中,粘性就像流体的“内部摩擦力”。你试着把粘性系数滑块向右拉大,会发现流体粒子变得“粘稠”,流动变慢,像蜂蜜一样。如果调得很小,粒子就会像水一样快速流动,撞上障碍物后容易产生漂亮的湍流和漩涡。这个参数直接控制着模拟中平滑速度差异的那个力的大小。
🧑‍🎓
那“重力强度”呢?我把它调到零,粒子是不是就飘起来了?这和现实中的流体模拟有什么关系?
🎓
没错!把重力强度调到零,你就能模拟太空中的微重力流体,比如空间站里的燃料晃动。试着调高重力,粒子会加速下落,撞击更猛烈。工程现场常见的是,比如模拟大坝泄洪,就需要强大的重力驱动水流。改变这些参数后你会看到,SPH方法非常适合这种有自由表面、大变形和飞溅的场景,这是传统网格方法很难处理的。

物理模型与关键公式

SPH法的核心是“核函数”,它决定了粒子如何影响其邻居。密度估算通常使用平滑的Poly6核函数:

$$W_{poly6}(r,h) = \frac{315}{64\pi h^9}(h^2-r^2)^3$$

这里,$r$是两个粒子间的距离,$h$是影响半径(光滑长度)。这个函数像一个“帽子”,在$r=h$时平滑地降为零,保证了计算的稳定性。

然而,计算压力梯度时,Poly6核函数在中心处梯度为零,会导致粒子非物理性地聚集。因此,压力计算采用Spiky核函数的梯度形式:

$$\nabla W_{spiky}(r,h) = -\frac{45}{\pi h^6}(h-r)^2 \hat{r}$$

$\hat{r}$是单位方向向量。这个公式在中心处梯度不为零,能产生有效的排斥力,防止粒子穿透,是保证流体体积不压缩的关键。

现实世界中的应用

汽车工程:用于模拟油箱或发动机油底壳内的液体晃动,分析液体对车辆操控稳定性的影响,避免在急转弯或刹车时产生不可控的力矩。

土木与地质灾害:模拟山体滑坡、泥石流和溃坝洪水。SPH能自然追踪土石和水的自由表面与大变形,帮助评估灾害影响范围和设计防护结构。

铸造与制造:模拟熔融金属注入模具的充型过程,预测可能因湍流或卷气导致的铸造缺陷,优化浇注系统设计,提高零件质量。

海洋与海岸工程:模拟船舶航行时的兴波阻力、甲板上浪,或海啸波冲击海岸结构物。SPH擅长处理流体与复杂刚体结构的剧烈相互作用。

常见误解与注意事项

初次接触SPH时,有几个容易踩坑的地方。首先是“粒子数越多精度一定越高”的误解。虽然增加粒子数确实能呈现更细致的现象,但计算负荷会以接近粒子数平方的幅度飙升。例如将粒子数从1000倍增至2000时,邻近搜索的计算量实际上可能增加近4倍。学习时建议先用较少粒子数(如2000~5000)掌握宏观行为特征,再逐步增加数量。

其次是参数设置的陷阱。虽然粘性系数和压力系数可独立调整,但要再现真实流体必须保持这些参数的平衡。例如要模拟水这类具有特定运动粘度($ν$)的流体,不能仅调整粘性系数,还需联动修正密度和压力系数。实际应用中需注意“无量纲数”的概念。若在本工具中调高重力导致粒子飞散?不妨尝试适当增加压力系数来增强粒子凝聚力。

最后要警惕“SPH是无所不能的计算魔法”的过度期待。SPH虽擅长自由表面和大变形模拟,但也有其局限。例如不适合模拟微小湍流或边界层精细行为。此外,像本演示这样可视化所有粒子的方式虽直观,但实际工程中更常评估粒子的“统计行为”或“区域平均值”。建议通过工具感知现象后,养成退一步思考“如何量化此处特征?”的习惯。

相关工程领域

本模拟器采用的计算思路,其实可拓展到流体以外的多种连续介质力学问题。首推“固体力学中的破坏分析”。将金属疲劳或混凝土裂纹扩展建模为粒子间连接断裂过程的“粘结粒子法”,可视为SPH的衍生方法。

另一领域是“粉体工程”。面粉或砂粒等粉体流动主要由粒子间碰撞与摩擦主导。通过在SPH粒子模型中添加摩擦系数和旋转考量,可实现料仓卸料或混合过程的模拟。例如可用于预测咖啡豆包装机中易发生堵塞的位置。

更有趣的是在“生物力学”中的应用。血液虽无明确自由表面,却是血管内流动的非牛顿流体。若赋予SPH粒子随剪切速率变化的粘性特性,就能推进动脉瘤内复杂血流或红细胞等柔性粒子行为的研究。通过本工具调整粘性系数的操作体验,正是理解这些应用的基础。

进阶学习指南

熟悉本工具后若想深入理解,推荐以下三步学习法。第一步:掌握控制方程。SPH背后是描述流体运动的“纳维-斯托克斯方程”。即使难以立即掌握全部,至少应理解公式$$ \rho \frac{D\boldsymbol{v}}{Dt} = -\nabla p + \mu \nabla^2 \boldsymbol{v} + \rho \boldsymbol{g} $$ 右侧各项对应本工具中“压力”“粘性”“重力”参数。操作时带着“我正在调整这个项”的认知,能显著深化理解。

第二步:区分离散化核心——“核近似”与“粒子近似”。现有教材中的核函数$W$虽是“权重函数”,但如何用它通过粒子值表达物理量才是关键难点。例如某点密度$\rho$通过邻近粒子$j$的质量$m_j$计算的公式 $\rho(\boldsymbol{r}) \approx \sum_j m_j W(|\boldsymbol{r}-\boldsymbol{r}_j|, h)$,可想象为本模拟器在每个粒子处执行的计算过程。

最后的第三步:挑战实践课题。将学习目标具体化,例如“寻找能再现蜂蜜与水流动差异的参数组合”,或“改变障碍物角度观察流动分离条件”。在这个过程中,你会注意到参数的非线性影响和初始条件的重要性。这将成为未来在工程实践中使用CAE软件、开展实验数据与模拟结果校准工作的第一块基石。