光滑粒子流体动力学方法基本原理和求解固体力学问题的一般步骤
北京理工大学 | 李明健
1. 基本原理
光滑粒子流体动力学方法(Smoothed particle hydrodynamics,SPH)是计算流体力学、计算固体力学领域中一种常用的粒子类无网格数值模拟方法,它具有方便追踪自由界面、无网格畸变等优势。
SPH 方法采用核近似(Kernel approximation)和粒子近似(Particle approximation),对连续场变量和其梯度、散度在粒子上进行插值表示。下面介绍其基本思想和求解流程。
1.1 核近似
在空间域 中,假设任意连续的物理场标量 ,其是以空间位矢 为自变量的函数,该函数可用以下积分形式等效表示:
其中 是 delta 函数,其性质满足:
即积分为 1,在非零点处为0,但实际上难以并不存在该函数,因此需要采用近似函数表示,SPH 方法中采用一个光滑的加权函数 来替代 delta 函数,它的自变量为两个位矢之间的距离矢量 和光滑长度 ,其具有以下性质:
归一性(用于质量等物理量时保证了守恒性):
紧支性(避免了全局求解,极大减少计算量):
这种光滑的加权函数,在 SPH 中称为核函数(kernel function),包括多种形式,下面给出两种三维问题常用的核函数:
(1)高斯核函数:
(2)三次样条核函数:
核函数中, 越小,则函数越陡峭, 越大,则越平缓。取核函数以后,即可以将公式(1)写为以下形式:
该式即为 SPH 中的积分表示,或称核近似。
1.2 粒子近似
下面,仍需要将核近似得到的公式进一步进行粒子近似,即用紧支域内的一组粒子来表示场量:
该式即为 SPH 中的求和方程,或称粒子近似,它的意义是:任意粒子 处的标量函数的值,都可以由核函数半径 内所有相邻粒子处的值的加权平均值来近似。其中, 是第 个粒子的体积,其通过质量与密度相除得到,即 ,类似地,对于矢量场,同样有:
其中, 表示域 内的所有粒子数,当然,由于核函数的紧支性,在域 内对所有粒子求和,与在紧支域内的粒子求和是等价的。
对于标量场的梯度,可以表示为:
对于矢量场的散度,可以表示为:
这样,就把对场量的求导转化成对核函数的求导,使复杂偏微分方程的离散求解成为了可能,这与有限元法中将场量求导转化成对形函数求导的做法是类似的。
2. 固体力学问题求解
2.1 控制方程
在固体力学求解中,连续性方程(质量守恒)为:
动量方程为:
能量守恒方程(高速冲击中通常忽略热传导,主要考虑应力做功):
其中 为比内能,该方式是由总能量方程减去动能部分余下的内能部分,表示应力做功,其中 为偏应力。
此外还需要满足几何方程、本构方程和状态方程。
2.2 求解流程
采用 SPH 方法求解时,首先,将连续介质离散为 个粒子,假设每个粒子的编号为 ,每个粒子携带质量 、位置 、速度 、密度 、应力张量 等属性。随后,在粒子上对控制方程进行求解。每个求解时间步内的求解流程如下:
2.2.1 连续性方程:密度更新
首先更新粒子密度,通常有两种方式,第一种是通过核函数对粒子密度进行插值计算:
根据核函数的归一性,该方程事实上隐含了质量守恒,这种处理简单高效,但当粒子分布不均匀时误差较大。
第二种方法是直接离散连续性方程(14),通过粒子速度场更新密度:
其中 是核函数关于粒子 的梯度。随后再更新密度:
2.2.2 状态方程:压力计算
根据状态方程更新压力,对于高速冲击问题,可采用刚性气体状态方程(Stiffened Gas Equation of State),压力计算如下:
其中: 是压力。 是参考声速, 是参考密度, 是给定参数, 是比内能。随后更新声速:
对于低速固体力学问题,上述状态方程中,取 ,即退化为等温状态方程(Isothermal Equation of State),即不考虑内能的变化对压力的影响。
2.2.3 几何方程:应变率/旋率计算
根据邻域内粒子上的速度,求解当前粒子上的速度梯度:
其中 表示并矢(张量积),得到的速度梯度实际是一个二阶张量:
其中 , , 分别为 的三个分量,, , 则为位矢的三个分量坐标。
根据速度梯度张量,即可计算应变率张量:
以及计算旋率张量:
2.2.4 本构方程:应力计算
随后根据应变率和旋率更新应力,对于线弹性材料,采用广义胡克定律得到偏应力变化率如下:
其中 是剪切模量,随后对偏应力进行更新:
应力即为压力和偏应力的组合:
2.2.5 能量方程:内能
考虑应力做功,将能量方程(16)离散为粒子形式:
其中 为人工粘性项,随后即可根据内能增量更新内能。
2.2.6 动量方程:速度/位移更新
将动量方程(15)离散为粒子形式:
其中 是避免数值不稳定的人工应力。
该式即为粒子的加速度,采用显式时间积分,如向前欧拉、预估-校正、龙格库塔、蛙跳等格式,即可得到更新的速度和位置。
通过上述步骤,SPH 方法将连续介质力学方程转化为粒子系统的离散动力学问题,实现了固体力学行为的数值模拟。