流体模拟(二)
SPH算法的数学原理:
标量场和矢量场
如果空间区域内任意一点P,都有一个确定的数f(P),则称这个空间区域内确定了一个标量场,如果空间区域内任意一点P,都有一个确定的向量vF(P),则称这空间区域内确定了一个矢量场。例如,流体中的密度,就是标量场(密度场),而速度,就是矢量场(速度场)。
偏导数
若z=f(x,y),则z对x的偏导数为:
同理对y的偏导数只要将x改为y即可。
哈密顿算子
哈密顿算子∇在流体力学中非常重要,这里介绍一下哈密顿算子,所谓“算子”,就是那种不能单独存在,必须和其他符号放在一起的一种数学符号,例如微分中的那个“d”。哈密顿算子的定义如下:
哈密顿算子有很多有趣的特性,它本身虽然并不是一个矢量,但很多运算确实可以把它视为一个矢量,例如把它作用在一个标量场A=f(x,y,z)上,那么
这个运算可以视为一个矢量和标量的乘法,得到的∇A是一个矢量场,称为A的“梯度”,梯度的含义就是标量场A在某处变化快慢和方向,比如一个标量场H(x,y)是一座高山在(x,y)处的高度,则H的梯度是该高山在某处陡峭的程度,并且方向指向高处。
下面两个图中,标量场是黑白的,黑色表示大的数值,而其相应的梯度用蓝色箭头表示:
而如果把哈密顿算子作用在一个矢量场A上,得到的∇∙A称为矢量场A的“散度”,散度的计算和矢量的点积运算相似,得到的是一个标量场。
散度的意义就是描述一个矢量场“发散”的程度,例如下面的两个矢量场,左边的有很大的散度,而右边的散度为0。
拉普拉辛算子
拉普拉辛算子∇2是二阶微分算子,有时也可写作Δ或者∇∙∇
例如对于A=f(x,y,z):
我们到目前为止已经介绍完了后面章节用到的基本数学概念。