SPH(光滑粒子流体动力学)流体模拟实现二:SPH算法(3)-光滑核函数

流体模拟(二)

光滑核函数:

sph中涉及的光滑核可以理解为:在一定的光滑核半径内,所受的力受距离权重的影响,距离越近所受影响越大。其表现形式如图所示。

这里我们便可以将流体看成一个个粒子的集合,每一个粒子都受周围一定范围内的其他粒子影响。该粒子的最终属性都由周围所有粒子的加权值来决定。如下图所示:

我们在流体中随机选择一个粒子\vec{r},在光滑核半径h范围内有多个粒子,位置分别是\vec{r_{1}},\vec{r_{2}},\vec{r_{3}},\vec{r_{4}},…\vec{r_{j}},则该处某项属性A的累加公式为:

其中Aj是要累加的某种属性(如密度,压力,粘度),m_{j}\rho _{j}是周围粒子的质量和密度,\vec{r}是该粒子的位置,h是光滑核半径。函数W就是光滑核函数。

光滑核函数两个重要属性,首先一定是偶函数,也就是W(−r)=W(r),第二,是“规整函数”,也就是\int W(r)dr=1

 

SPH推导过程

我们假设流体中一个位置为\vec{r}的点,此处的密度为ρ(r_{i})、压力为p(r_{i})、速度为u⃗ (r_{i}),那么我们可以根据上一篇2.8的公式,可以推导出此处的加速度a⃗ (r_{i})为:

对于SPH算法来说,基本流程就是这样,根据光滑核函数逐个推出流体中某点的密度,压力,速度相关的累加函数,进而推导出此处的加速度,从而模拟流体的运动趋势,下面依次分析密度,压力,粘度的求解。

 

密度

根据公式3.1,用密度ρ代替A,可以得到

计算使用的光滑核函数称为Poly6函数,具体形式为:


其中K_{Poly6} 是一个固定的系数,根据光滑核的规整属性,通过积分计算出这个系数的具体值,在2D情况下,在极坐标中计算积分:

3D情况下,在球坐标中计算:

  由于所有粒子的质量相同都是m,所以在3D情况下,\vec{r}处的密度计算公式最终为:

 

压力

根据2.5的公式代入3.1便可以求解压力,在位置r_{i}之处的由压力产生的作用力的计算公式为:

由于位于不同压强区的两个粒子之间的作用力不等,该等式是“不平衡”的。所以计算中一般使用双方粒子压强的算术平均值代替单个粒子的压力r_{i}之处的由压力产生的作用力的计算公式为:

对于单个粒子产生的压力p,可以用理想气体状态方程计算:

其中\rho_{0}是流体的静态密度,K是和流体相关的常数,只跟温度相关。压力计算中使用的光滑核函数称为Spiky函数:

 

在3D情况下,K_{Spiky}=15/(\pi h^{6}),则:

 将公式3.12带入3.9,可以整理出公式3.2中压力产生的加速度部分:

 

粘度

公式3.2中最后一部分,由粘度产生的作用力:

这个公式同样有“不平衡”的问题,考虑到公式中的速度其实并不是绝对速度,而是粒子间的相对速度,所以这个公式的正确写法应该是:

其中的光滑核函数形式如下:

 

在3D情况下,K_{viscosity}=15/(2\pi h^{3})。

由此可得到公式3.2的粘度部分:

到这里,根据我们已经获得的数据,把公式3.13和3.17带入3.2,我们就可以计算最后的加速度了:

到这里,我们SPH部分的数学公式都在这里,我们接下来只要用他们,就能模拟出水粒子的运动轨迹了。

在刚开始学习SPH的时候,我是从这里https://thecodeway.com/,了解到SPH的总体数学思路,虽然和后来看论文里,有些公式有些许不同,不过原理都是一模一样的。

接下来就需要创建专门的数据结构,以及算法来处理粒子间的关系来建立一个流体模拟的系统了。

  • 7
    点赞
  • 23
    收藏
    觉得还不错? 一键收藏
  • 6
    评论
光滑颗粒流体动力学SPH)是一种计算流体力学方法,用于模拟粒子流体中的运动。 SPH源程序是指实现SPH算法的计算机代码。 SPH源程序通常由一系列子程序组成,包括初始化粒子的位置和速度,计算粒子之间的相互作用力和压力,更新粒子的位置和速度等。 在SPH源程序中,粒子被假设为具有质量和体积的不可压缩流体颗粒。每个粒子的状态由其位置、速度和其他物理属性(如密度和压力)来描述。通过在流体中采样一系列离散的粒子,并将它们的运动和相互作用计算在内,SPH源程序能够模拟流体的行为。 SPH源程序使用核函数来近似描述粒子之间的相互作用力。核函数决定了粒子之间相互作用的强度和范围。这种相互作用通过计算每对粒子之间的力来实现。该力可以通过使用基本的物理定律,如牛顿运动定律和连续介质力学,来确定。 SPH源程序中还包含了一些数值计算方法和技巧,以提高模拟的准确性和效率。其中一种常见的技术是使用粒子的密度和压力来计算粒子之间的相互作用力,并使用计算流体力学中的迭代方法来更新粒子的位置和速度。 总而言之,光滑颗粒流体动力学SPH)源程序是一种计算流体力学方法的实现,用于模拟粒子流体中运动的行为。通过近似描述粒子之间的相互作用力,使用核函数和基本的物理定律,SPH源程序能够模拟真实流体动力学行为。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 6
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值