光滑粒子流体动力学方法基本原理和求解固体力学问题的一般步骤

北京理工大学 | 李明健

1. 基本原理

光滑粒子流体动力学方法(Smoothed particle hydrodynamics,SPH)是计算流体力学、计算固体力学领域中一种常用的粒子类无网格数值模拟方法,它具有方便追踪自由界面、无网格畸变等优势。

SPH 方法采用核近似(Kernel approximation)和粒子近似(Particle approximation),对连续场变量和其梯度、散度在粒子上进行插值表示。下面介绍其基本思想和求解流程。

1.1 核近似

在空间域 Ω 中,假设任意连续的物理场标量 f(r),其是以空间位矢 r 为自变量的函数,该函数可用以下积分形式等效表示:

(1)f(r)=Ωf(r)δ(rr)dr

其中 δ 是 delta 函数,其性质满足:

(2)δ(rr)=0,rr
(3)δ(rr)d(rr)=1

即积分为 1,在非零点处为0,但实际上难以并不存在该函数,因此需要采用近似函数表示,SPH 方法中采用一个光滑的加权函数 W(rr,h) 来替代 delta 函数,它的自变量为两个位矢之间的距离矢量 (rr) 和光滑长度 h,其具有以下性质:

(4)limh0W(rr,h)=δ(rr)
(6)W(rr)=0,rr>κh

这种光滑的加权函数,在 SPH 中称为核函数(kernel function),包括多种形式,下面给出两种三维问题常用的核函数:

(1)高斯核函数:

(7)W={1π3/2h3eq2,0q30,q>3q=rrh

(2)三次样条核函数:

(8)W={1πh3(132q2+34q3),0q114πh3(2q)3,1<q20,q>2q=rrh

核函数中,h 越小,则函数越陡峭,h 越大,则越平缓。取核函数以后,即可以将公式(1)写为以下形式:

(9)f(r)Ωf(r)W(rr,h)dr

该式即为 SPH 中的积分表示,或称核近似

1.2 粒子近似

下面,仍需要将核近似得到的公式进一步进行粒子近似,即用紧支域内的一组粒子来表示场量:

(10)f(r)j=1NVjf(rj)W(rrj,h)

该式即为 SPH 中的求和方程,或称粒子近似,它的意义是:任意粒子 ri 处的标量函数的值,都可以由核函数半径 h 内所有相邻粒子处的值的加权平均值来近似。其中,Vj 是第 j 个粒子的体积,其通过质量与密度相除得到,即 Vj=mj/ρj,类似地,对于矢量场,同样有:

(11)f(ri)j=1NVjf(rj)W(rirj,h)

其中,N 表示域 Ω 内的所有粒子数,当然,由于核函数的紧支性,在域 Ω 内对所有粒子求和,与在紧支域内的粒子求和是等价的。

对于标量场的梯度,可以表示为:

(12)f(ri)j=1NVjf(rj)W(rirj,h)

对于矢量场的散度,可以表示为:

(13)f(ri)j=1NVjf(rj)W(rirj,h)

这样,就把对场量的求导转化成对核函数的求导,使复杂偏微分方程的离散求解成为了可能,这与有限元法中将场量求导转化成对形函数求导的做法是类似的。


2. 固体力学问题求解

2.1 控制方程

在固体力学求解中,连续性方程(质量守恒)为:

(14)ρt+(ρu)=0

动量方程为:

(15)ut=1ρσ+g

能量守恒方程(高速冲击中通常忽略热传导,主要考虑应力做功):

(16)et=1ρ(pu+s:ε˙)

其中 e 为比内能,该方式是由总能量方程减去动能部分余下的内能部分,表示应力做功,其中 s 为偏应力。

此外还需要满足几何方程、本构方程和状态方程。

2.2 求解流程

采用 SPH 方法求解时,首先,将连续介质离散为 N 个粒子,假设每个粒子的编号为 i,每个粒子携带质量 mi、位置 ri、速度 ui、密度 ρi、应力张量 σi 等属性。随后,在粒子上对控制方程进行求解。每个求解时间步内的求解流程如下:

2.2.1 连续性方程:密度更新

首先更新粒子密度,通常有两种方式,第一种是通过核函数对粒子密度进行插值计算:

(17)ρi=j=1NmjW(rirj,h)

根据核函数的归一性,该方程事实上隐含了质量守恒,这种处理简单高效,但当粒子分布不均匀时误差较大。

第二种方法是直接离散连续性方程(14),通过粒子速度场更新密度:

(18)dρidt=j=1Nmj(uiuj)iWij

其中 iWij 是核函数关于粒子 i 的梯度。随后再更新密度:

(19)ρin+1=ρin+Δtdρidt
2.2.2 状态方程:压力计算

根据状态方程更新压力,对于高速冲击问题,可采用刚性气体状态方程(Stiffened Gas Equation of State),压力计算如下:

(20)pi=c02(ρiρ0)+(γ1)ρiei

其中:p 是压力。c0 是参考声速,ρ0 是参考密度,γ 是给定参数,e 是比内能。随后更新声速:

(21)ci=c02+(γ1)(ei+piρi)

对于低速固体力学问题,上述状态方程中,取 γ=1,即退化为等温状态方程(Isothermal Equation of State),即不考虑内能的变化对压力的影响。

2.2.3 几何方程:应变率/旋率计算

根据邻域内粒子上的速度,求解当前粒子上的速度梯度:

(22)uij=1NVj(ujui)iWij

其中 表示并矢(张量积),得到的速度梯度实际是一个二阶张量:

(23)ui=[uxvxwxuyvywyuzvzwz]

其中 u, v, w 分别为 u 的三个分量,x, y, z 则为位矢的三个分量坐标。

根据速度梯度张量,即可计算应变率张量:

(24)ε˙i=12[ui+(ui)T]

以及计算旋率张量:

(25)Ωi=12[ui(ui)T]
2.2.4 本构方程:应力计算

随后根据应变率和旋率更新应力,对于线弹性材料,采用广义胡克定律得到偏应力变化率如下:

(26)s˙i=2G[ε˙i13tr(ε˙i)I]+siΩi+Ωisi

其中 G 是剪切模量,随后对偏应力进行更新:

(27)sin+1=sin+s˙iΔt

应力即为压力和偏应力的组合:

(28)σi=sipiI
2.2.5 能量方程:内能

考虑应力做功,将能量方程(16)离散为粒子形式:

(29)deidt=1ρisi:εi˙+j=1Nmj(piρi2+pjρj2+Πij)iWij

其中 Π 为人工粘性项,随后即可根据内能增量更新内能。

2.2.6 动量方程:速度/位移更新

将动量方程(15)离散为粒子形式:

(30)duidt=j=1Nmj(σiρi2+σjρj2+Rij)iWij+gi

其中 Rij 是避免数值不稳定的人工应力。

该式即为粒子的加速度,采用显式时间积分,如向前欧拉、预估-校正、龙格库塔、蛙跳等格式,即可得到更新的速度和位置。

通过上述步骤,SPH 方法将连续介质力学方程转化为粒子系统的离散动力学问题,实现了固体力学行为的数值模拟。