
【牛体力学】 前置:场论及张量
封面图 ID:
0x00 引子
由于研究方向的改变,因此需要重点学习流体力学相关的知识。出于知识分享及整理的目的进行相关的整理,以求日后备用。
当前阶段主要参考资料:
- 钱宁, 万兆惠. 泥沙运动力学 [M]. 北京: 科学出版社, 1983.
- 吴望一. 流体力学 [M]. 北京: 北京大学出版社, 1982.
- 张兆顺, 崔桂香. 流体力学 (第 3 版) [M]. 北京: 清华大学出版社, 2015.
- 邵学军, 王兴奎. 河流动力学概论 [M]. 北京: 清华大学出版社, 2005.
- 谢树艺. 矢量分析与场论 (第 4 版) [M]. 北京: 高等教育出版社, 2012.
0x01 场论
什么是场?我们其实很早就知道电场、磁场这种概念,但是流体力学中的场,我们应该从欧拉场和拉格朗日观点来说(以后的文章我们会进行讨论)。
在物理里,场(英语:Field)是一个以时空为变数的物理量。空间中弥漫着的基本相互作用被命名为“场”。
维基百科
可以很容易就能得出:以往的各种变量均可以利用ϕ=f(x,y,z,t)\phi = f(x,y,z,t)
来表示,也即仅考虑某一时间内,各个变量在空间的分布,而不是追踪各个粒子在空间的变化。通过这种转换,可以避免研究于单个粒子并非整体研究。
我们主要讨论的是标量场(温度场)和矢量场(速度场)。
场中的矢量线定义为:场中的线,每一点的切向方向均与该点矢量方向重合,用数学公式表示,记为:a×dr=0{\bf a} \times dr = 0。这个定义很重要,在之后的流线、涡线都用得上。
0x01.1 方向导数及梯度
在讨论非均匀场的时候,往往需要知道其不均匀性该如何表达,因此引入方向导数的概念,也即场内某个量沿着指定曲线方向的变化率。
设场中某点 M(x,y,z)M(x, y, z),沿某一方向 s{\bf s}(方向余弦为 cosα,cosβ,cosγ\cos \alpha, \cos \beta, \cos \gamma)的变化率,其数学定义为:
∂ϕ∂s=∂ϕ∂xcosα+∂ϕ∂ycosβ+∂ϕ∂zcosγ\frac{\partial \phi}{\partial s} = \frac{\partial \phi}{\partial x}\cos \alpha + \frac{\partial \phi}{\partial y}\cos \beta + \frac{\partial \phi}{\partial z}\cos \gamma
为了更紧凑地表达这一概念,我们引入梯度 (Gradient)。梯度是一个矢量,记作 grad ϕ{\bf grad}\ \phi 或 ∇ϕ\nabla \phi。
梯度的物理意义非常关键:
- 方向:指向标量场 ϕ\phi 增长最快的方向(即法线方向 n{\bf n})。
- 大小:等于该方向上的最大变化率。
利用梯度,方向导数可以写成点积形式:
∂ϕ∂s=∇ϕ⋅s∘\frac{\partial \phi}{\partial s} = \nabla \phi \cdot {\bf s}^\circ
0x01.2 散度及奥——高定理
如果说梯度是描述标量场的最大变化率,那么散度 (Divergence) 则是描述矢量场在某一点的“通量源”强度。
对于矢量场 A{\bf A},其散度定义为单位体积内的通量:
div A=∇⋅A=∂Ax∂x+∂Ay∂y+∂Az∂z\text{div}\ {\bf A} = \nabla \cdot {\bf A} = \frac{\partial A_x}{\partial x} + \frac{\partial A_y}{\partial y} + \frac{\partial A_z}{\partial z}
物理意义:
- div A>0\text{div}\ {\bf A} > 0:该点为源 (Source),有流体流出。
- div A<0\text{div}\ {\bf A} < 0:该点为汇 (Sink),有流体汇入。
- div A=0\text{div}\ {\bf A} = 0:无源无汇。对于不可压缩流体(如水),速度场的散度为零(div u=0\text{div}\ {\bf u} = 0),这即是连续性方程的物理本质。
奥斯特罗格拉茨基——高斯定理 (Gauss-Ostrogradsky Theorem): 该定理建立了体积分与面积分之间的联系。它表明:矢量场穿过闭合曲面 SS 的通量,等于该矢量场的散度在闭合曲面所包围体积 VV 内的积分。
∭V(div A)dV=\oiintSA⋅dS\iiint_V (\text{div}\ {\bf A}) dV = \oiint_S {\bf A} \cdot d{\bf S}
0x01.3 旋度及斯托克斯公式
流体运动除了平移和变形,还有旋转。旋度 (Curl) 就是描述矢量场微团旋转强度的物理量。
对于矢量场 A{\bf A},旋度是一个矢量,记为 rot A\text{rot}\ {\bf A} 或 curl A\text{curl}\ {\bf A},亦可用算子表示为 ∇×A\nabla \times {\bf A}。
其直角坐标表达式为行列式形式:
curl A=∇×A=∣ijk∂∂x∂∂y∂∂zAxAyAz∣\text{curl}\ {\bf A} = \nabla \times {\bf A} = \left| \begin{matrix} {\bf i} & {\bf j} & {\bf k} \\ \frac{\partial}{\partial x} & \frac{\partial}{\partial y} & \frac{\partial}{\partial z} \\ A_x & A_y & A_z \end{matrix} \right|
斯托克斯公式 (Stokes’ Theorem): 该定理建立了面积分与线积分之间的联系。它表明:矢量场沿闭合曲线 LL 的环量,等于该矢量场的旋度在以 LL 为边界的任意曲面 SS 上的通量。
∮LA⋅dr=∬S(curl A)⋅dS\oint_L {\bf A} \cdot d{\bf r} = \iint_S (\text{curl}\ {\bf A}) \cdot d{\bf S}
0x02 哈密顿算子
在流体力学的推导中,如果不引入简化的算子符号,公式将会变得极其冗长且难以阅读。哈密顿算子(Hamiltonian Operator,又称 Nabla 算子)∇\nabla 是最强有力的工具。
0x02.1 哈密顿算子含义
哈密顿算子 ∇\nabla 在直角坐标系下的定义为:
∇=i∂∂x+j∂∂y+k∂∂z\nabla = {\bf i} \frac{\partial}{\partial x} + {\bf j} \frac{\partial}{\partial y} + {\bf k} \frac{\partial}{\partial z}
在这里需要额外强调它具有双重性质:
- 矢量性:它可以被视为一个矢量,参与点积(⋅\cdot)和叉积(×\times)运算。
- 微分性:它是一个偏微分算子,作用于其右侧的函数。
注意: 运算顺序至关重要。例如 ∇⋅A\nabla \cdot {\bf A} 是散度(标量),而 A⋅∇{\bf A} \cdot \nabla 是一个算子(对流算子),两者截然不同。
0x02.2 一些公式的哈密顿算子引入
梯度: grad ϕ=∇ϕ\text{grad}\ \phi = \nabla \phi
散度: div A=∇⋅A\text{div}\ {\bf A} = \nabla \cdot {\bf A}
旋度: rot A=∇×A\text{rot}\ {\bf A} = \nabla \times {\bf A}
奥—高定理:∭V(∇⋅A),dV=\oiintSA⋅dS\iiint_V (\nabla \cdot {\bf A}) , dV = \oiint_S {\bf A} \cdot d{\bf S}
斯托克斯公式:∮LA⋅dr=∬S(∇×A)⋅dS\oint_L {\bf A} \cdot d{\bf r} = \iint_S (\nabla \times {\bf A}) \cdot d{\bf S}
0x02.3 拉普拉斯符号
在流体力学方程(尤其是 N-S 方程)中,我们还会频繁遇到以下两种复杂运算,必须在此处进行定义。
拉普拉斯算子 (Laplacian)
当 ∇\nabla 对标量场先求梯度,再求散度时,即 ∇⋅(∇ϕ)\nabla \cdot (\nabla \phi),我们得到了拉普拉斯算子 ∇2\nabla^2(有时也写作 Δ\Delta):
∇2=∇⋅∇=∂2∂x2+∂2∂y2+∂2∂z2\nabla^2 = \nabla \cdot \nabla = \frac{\partial^2}{\partial x^2} + \frac{\partial^2}{\partial y^2} + \frac{\partial^2}{\partial z^2}
对流算子 (Convective Operator)
这是流体力学中最具特色的算子,来源于流体质点加速度的欧拉描述(物质导数)。 表达式为 (u⋅∇)({\bf u} \cdot \nabla),其中 u{\bf u} 为速度矢量。
展开来看,它是一个标量算子,作用于矢量:
(u⋅∇)=ux∂∂x+uy∂∂y+uz∂∂z({\bf u} \cdot \nabla) = u_x \frac{\partial}{\partial x} + u_y \frac{\partial}{\partial y} + u_z \frac{\partial}{\partial z}
当它作用于速度本身时 (u⋅∇)u({\bf u} \cdot \nabla){\bf u},即构成了 N-S 方程中著名的非线性对流项。
0x03 张量
我们简单写一个流体力学中的常用公式:不可压缩流体的质量守恒方程(微分形式):
∂u∂x+∂v∂y+∂w∂z=0\frac{\partial u}{\partial x} + \frac{\partial v}{\partial y} + \frac{\partial w}{\partial z} = 0
用哈密顿算子表示可以简化为:
∇⋅U=0\nabla \cdot {\bf U} = 0
这已经是较为简单的写法,但是往往还会遇到比较复杂的 xyz 三个变量的梯度,那么这样的势必会出现 3 * 3 = 9 个变量,如果再使用标量书写将会非常麻烦,因此需要引入新的书写方式。
0x03.1 张量定义
简单理解就是:0 阶张量是标量;1 阶张量是向量;2 阶张量是矩阵;3 阶及以上张量在流体力学中很少使用。
采用更加标准的定义则为:
设在直角坐标系 Ox1x2x3Ox_1x_2x_3 中,有 3n3^n 个分量组成的集合 Ti1i2...inT_{i_1i_2...i_n}。若当坐标系旋转为 Ox1′x2′x3′Ox'_1x'_2x'_3 时(变换矩阵为 aija{ij},即 xi′=aijxjx'_i = a_{ij}x_j),新分量满足:
T′i1i2...in=ai1j1ai2j2...ainjnTj1j2...jnT'{i_1i_2...i_n} = a{i_1j_1} a_{i_2j_2} ... a_{i_nj_n} T_{j_1j_2...j_n}
则称该集合为一个 n 阶张量。
0 阶张量(标量): 1 个分量,如压力 pp、温度 TT。
1 阶张量(矢量): 3 个分量,如速度 uiu_i。
2 阶张量(矩阵): 9 个分量,如应力张量 τij\tau_{ij}、变形速率张量 SijS_{ij}。
0x03.2 张量相关计算及爱因斯坦求和公约
为了简化求和号 ∑\sum,我们约定:在一个项中,如果同一个指标出现两次,则表示对该指标在所有维数(1, 2, 3)上求和。
爱因斯坦求和:
aibi=a1b1+a2b2+a3b3a_i b_i = a_1b_1 + a_2b_2 + a_3b_3 (即点积 a⋅b{\bf a} \cdot {\bf b})
Kronecker delta 符号 (δij\delta_{ij}):
δij={1,i=j 0,i≠j\delta_{ij} = \begin{cases} 1, & i=j \ 0, & i \neq j \end{cases}
它在计算中具有“换标”作用:aiδij=aja_i \delta_{ij} = a_j。
排列符号 / Levi-Civita 符号 (ϵijk\epsilon_{ijk}):
用于表示叉积。当指标为正序排列(123, 231, 312)时为 1,逆序(132, 213, 321)时为 -1,有重复指标时为 0。
\epsilon - \delta 恒等式,可用于化简计算:
ϵijkϵimn=δjmδkn−δjnδkm\epsilon_{ijk}\epsilon_{imn} = \delta_{jm}\delta_{kn} - \delta_{jn}\delta_{km}
0x03.3 一些公式的张量写法
引入张量符号后,复杂的矢量运算变得极度简洁:
梯度: (∇ϕ)i=∂iϕ=∂ϕ∂xi(\nabla \phi)_i = \partial_i \phi = \frac{\partial \phi}{\partial x_i}
散度: ∇⋅u=∂iui\nabla \cdot {\bf u} = \partial_i u_i
旋度: (∇×u)i=ϵijk∂juk(\nabla \times {\bf u})_i = \epsilon_{ijk} \partial_j u_k
对流项: [(u⋅∇)u]i=uj∂jui[({\bf u} \cdot \nabla){\bf u}]_i = u_j \partial_j u_i (这是 N-S 方程中最常见的形式)
0x03.4 张量识别定理、二阶张量及其性质
张量识别定理可以用来判断一个未知量是不是张量、是几阶张量。其核心思想是:
- 若某未知量与任意已知张量按某种收缩/乘积运算后,总能得到一个在坐标旋转下满足张量变换律的量,则该未知量本身也必为张量。
- 阶数可由“自由指标个数”判断:等式两侧自由指标必须一致,重复指标表示求和并被消去。
在指标记号中,可以更直观地理解这个规则。
设 Qi1...imQ_{i_1...i_m} 为任意 mm 阶张量,若 Pi1...imj1...jnQj1...jnP_{i_1...i_mj_1...j_n}Q_{j_1...j_n} 对任意 QQ 都是 mm 阶张量,则 PP 必是 (m+n)(m+n) 阶张量。
例如,上文的叉积写成:
(a×b)i=ϵijkajbk({\bf a}\times{\bf b})_{i} = \epsilon_{ijk}a_jb_k
左侧有一个自由指标 ii(一阶张量),右侧 ajbka_jb_k 为二阶对象,因此 ϵijk\epsilon_{ijk} 必为三阶张量。
二阶张量在流体力学中最常见。设二阶张量 AijA_{ij},它有以下几个关键性质。
-
对称与反对称分解(唯一分解)
Aij=Sij+Ωij,Sij=12(Aij+Aji),Ωij=12(Aij−Aji)A_{ij}=S_{ij}+\Omega_{ij},\quad S_{ij}=\frac12(A_{ij}+A_{ji}),\quad \Omega_{ij}=\frac12(A_{ij}-A_{ji})
其中 Sij=SjiS_{ij}=S_{ji} 为对称部分,Ωij=−Ωji\Omega_{ij}=-\Omega_{ji} 为反对称部分。
-
迹(trace)与球张量分解
tr(A)=Aii\mathrm{tr}(A)=A_{ii}
Aij=13Akkδij⏟各向同性(球)部分+(Aij−13Akkδij)⏟偏张量(无迹)部分A_{ij}=\underbrace{\frac13A_{kk}\delta_{ij}}_{\text{各向同性(球)部分}} +\underbrace{\left(A_{ij}-\frac13A_{kk}\delta_{ij}\right)}_{\text{偏张量(无迹)部分}}
该分解在应力张量中非常重要:球部分对应平均正应力(压力),偏张量对应剪切效应。
-
二阶张量不变量
在正交坐标旋转下,下列量保持不变(对任意二阶张量常用):
I1=Aii,I2=12[(Aii)2−AijAji],I3=det(A)I_1=A_{ii},\qquad I_2=\frac12\left[(A_{ii})^2-A_{ij}A_{ji}\right],\qquad I_3=\det(A)
这些不变量常用于判断流动状态、构造无关坐标系的本构关系。
-
流体力学中的典型例子:速度梯度张量
速度场 u{\bf u} 的梯度 ∂jui\partial_j u_i 是二阶张量,可分解为:
∂jui=Dij+Wij,Dij=12(∂jui+∂iuj),Wij=12(∂jui−∂iuj)\partial_j u_i = D_{ij}+W_{ij},\quad D_{ij}=\frac12(\partial_j u_i+\partial_i u_j),\quad W_{ij}=\frac12(\partial_j u_i-\partial_i u_j)
其中 DijD_{ij} 是形变速率张量(控制拉伸与剪切变形),WijW_{ij} 是旋转张量(描述局部刚体转动)。
对于不可压缩流体,连续性方程 ∂iui=0\partial_i u_i=0,即 tr(∂jui)=0\mathrm{tr}(\partial_j u_i)=0,说明速度梯度张量的迹为零。
0x04 较复杂的案例
0x04.1 欧拉公式并矢化简
在欧拉观点中,常会遇到并矢(dyadic)项 ∇⋅(vv)\nabla\cdot(\mathbf{v}\mathbf{v})。
这里 vv\mathbf{v}\mathbf{v} 是二阶张量,其分量为 (vv)ij=vivj(\mathbf{v}\mathbf{v})_{ij}=v_iv_j。
按分量展开,∇⋅(vv)\nabla\cdot(\mathbf{v}\mathbf{v}) 的第 ii 个分量为:
[∇⋅(vv)]i=∂j(vivj)=vj∂jvi+vi∂jvj[\nabla\cdot(\mathbf{v}\mathbf{v})]_i=\partial_j(v_iv_j) =v_j\partial_j v_i+v_i\partial_j v_j
故可写成紧凑矢量形式:
∇⋅(vv)=(v⋅∇)v+v(∇⋅v)\nabla\cdot(\mathbf{v}\mathbf{v}) =(\mathbf{v}\cdot\nabla)\mathbf{v}+\mathbf{v}(\nabla\cdot\mathbf{v})
这条恒等式非常重要:
- 可压缩流体中,需保留第二项 v(∇⋅v)\mathbf{v}(\nabla\cdot\mathbf{v})。
- 不可压缩流体中,∇⋅v=0\nabla\cdot\mathbf{v}=0,于是
∇⋅(vv)=(v⋅∇)v\nabla\cdot(\mathbf{v}\mathbf{v})=(\mathbf{v}\cdot\nabla)\mathbf{v}
因此,0x04.2 中对对流项 (v⋅∇)v(\mathbf{v}\cdot\nabla)\mathbf{v} 的兰姆分解,也可直接用于并矢散度项的进一步化简。
0x04.2 兰姆方程中加速度分解
欧拉描述下,流体质点加速度为:
dvdt=∂v∂t+(v⋅∇)v\frac{d\mathbf{v}}{dt}=\frac{\partial\mathbf{v}}{\partial t}+(\mathbf{v}\cdot\nabla)\mathbf{v}
其中非线性对流项可以化为兰姆形式:
(v⋅∇)v=∇ (v22)+ω×v,ω=∇×v(\mathbf{v}\cdot\nabla)\mathbf{v}=\nabla\!\left(\frac{v^2}{2}\right)+\boldsymbol{\omega}\times\mathbf{v}, \qquad \boldsymbol{\omega}=\nabla\times\mathbf{v}
下面用指标记号证明。先写出第 ii 个分量:
[(v⋅∇)v]i=vj∂jvi[(\mathbf{v}\cdot\nabla)\mathbf{v}]_i=v_j\partial_j v_i
再看右侧第二项:
(ω×v)i=ϵijkωjvk=ϵijkϵjmn(∂mvn)vk(\boldsymbol{\omega}\times\mathbf{v})_i =\epsilon_{ijk}\omega_jv_k =\epsilon_{ijk}\epsilon_{jmn}(\partial_m v_n)v_k
利用恒等式 ϵijkϵjmn=δinδkm−δimδkn\epsilon_{ijk}\epsilon_{jmn}=\delta_{in}\delta_{km}-\delta_{im}\delta_{kn} (需要注意这里的ijk中已取反),得
(ω×v)i=(δinδkm−δimδkn)(∂mvn)vk=vk∂kvi−vk∂ivk(\boldsymbol{\omega}\times\mathbf{v})_i =(\delta_{in}\delta_{km}-\delta_{im}\delta_{kn})(\partial_m v_n)v_k =v_k\partial_k v_i-v_k\partial_i v_k
而
[∇ (v22)]i=∂i (vkvk2)=vk∂ivk\left[\nabla\!\left(\frac{v^2}{2}\right)\right]_i =\partial_i\!\left(\frac{v_kv_k}{2}\right) =v_k\partial_i v_k
故
[∇ (v22)+ω×v]i=vk∂ivk+(vk∂kvi−vk∂ivk)=vj∂jvi\left[\nabla\!\left(\frac{v^2}{2}\right)+\boldsymbol{\omega}\times\mathbf{v}\right]_i =v_k\partial_i v_k+(v_k\partial_k v_i-v_k\partial_i v_k) =v_j\partial_j v_i
即证:
(v⋅∇)v=∇ (v22)+ω×v(\mathbf{v}\cdot\nabla)\mathbf{v}=\nabla\!\left(\frac{v^2}{2}\right)+\boldsymbol{\omega}\times\mathbf{v}
因此加速度也可写为兰姆形式:
dvdt=∂v∂t+∇ (v22)+ω×v\frac{d\mathbf{v}}{dt}=\frac{\partial\mathbf{v}}{\partial t} +\nabla\!\left(\frac{v^2}{2}\right)+\boldsymbol{\omega}\times\mathbf{v}


























