惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

SecWiki News
SecWiki News
I
InfoQ
The Cloudflare Blog
人人都是产品经理
人人都是产品经理
博客园 - Franky
T
Tailwind CSS Blog
让小产品的独立变现更简单 - ezindie.com
让小产品的独立变现更简单 - ezindie.com
量子位
博客园_首页
罗磊的独立博客
V
V2EX
李成银的技术随笔
大猫的无限游戏
大猫的无限游戏
钛媒体:引领未来商业与生活新知
钛媒体:引领未来商业与生活新知
T
True Tiger Recordings
Vercel News
Vercel News
Cyberwarzone
Cyberwarzone
Cisco Talos Blog
Cisco Talos Blog
F
Fox-IT International blog
D
Darknet – Hacking Tools, Hacker News & Cyber Security
M
Microsoft Research Blog - Microsoft Research
Know Your Adversary
Know Your Adversary
爱范儿
爱范儿
The Register - Security
The Register - Security
G
Google Developers Blog
The Hacker News
The Hacker News
Malwarebytes
Malwarebytes
S
Securelist
博客园 - 三生石上(FineUI控件)
Jina AI
Jina AI
T
Threat Research - Cisco Blogs
T
The Exploit Database - CXSecurity.com
S
SegmentFault 最新的问题
博客园 - 叶小钗
F
Fortinet All Blogs
Apple Machine Learning Research
Apple Machine Learning Research
宝玉的分享
宝玉的分享
博客园 - 聂微东
T
Threatpost
博客园 - 【当耐特】
D
Docker
P
Privacy & Cybersecurity Law Blog
www.infosecurity-magazine.com
www.infosecurity-magazine.com
G
GRAHAM CLULEY
V
Visual Studio Blog
C
Cisco Blogs
IT之家
IT之家
S
Security Archives - TechRepublic
Latest news
Latest news
阮一峰的网络日志
阮一峰的网络日志

俟河清

【牛GN】白色相簿 2 动画版 / IC 浅谈 【牛GN】最终幻想 16 【牛体力学】流体力学的基本概念 1 【牛GN】iPhone 80 Ultra & Apple Watch 6 Pro 2025 年总结:变了很多,但也没变。 【牛GN】最终幻想 7:重生 【牛 GN】女神异闻录 3 重制版 【牛GN】那些年用过的外围设备 MODIS 遥感产品数据处理及转换 【牛GN】那些年用过的电脑们 经纬度转换的那些麻烦事 【牛GN】那些年用过的爪机们 【牛GN】葬送的芙莉莲 降水序列重建思路 【All in Boom】第 2 期:服务部署 【牛GN】Darling in the Franxx 动漫随笔:败犬女主实在是太多了 【All in Boom】第 1.5 期:反向代理及内网 HTTPS 构建 动漫随笔:Mygo、Ave Mujica和孤独摇滚
【牛体力学】 前置:场论及张量
SatyrLee · 2026-03-17 · via 俟河清

【牛体力学】 前置:场论及张量

【牛体力学】 前置:场论及张量

封面图 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

梯度的物理意义非常关键:

  1. 方向:指向标量场 ϕ\phi 增长最快的方向(即法线方向 n{\bf n})。
  2. 大小:等于该方向上的最大变化率。

利用梯度,方向导数可以写成点积形式:

ϕs=ϕs\frac{\partial \phi}{\partial s} = \nabla \phi \cdot {\bf s}^\circ

0x01.2 散度及奥——高定理

如果说梯度是描述标量场的最大变化率,那么散度 (Divergence) 则是描述矢量场在某一点的“通量源”强度。

对于矢量场 A{\bf A},其散度定义为单位体积内的通量:

div A=A=Axx+Ayy+Azz\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}

物理意义:

  1. div A>0\text{div}\ {\bf A} > 0:该点为源 (Source),有流体流出。
  2. div A<0\text{div}\ {\bf A} < 0:该点为汇 (Sink),有流体汇入。
  3. 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=\oiintSAdS\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=ijkxyzAxAyAz\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 上的通量。

LAdr=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 在直角坐标系下的定义为:

=ix+jy+kz\nabla = {\bf i} \frac{\partial}{\partial x} + {\bf j} \frac{\partial}{\partial y} + {\bf k} \frac{\partial}{\partial z}

在这里需要额外强调它具有双重性质:

  1. 矢量性:它可以被视为一个矢量,参与点积(\cdot)和叉积(×\times)运算。
  2. 微分性:它是一个偏微分算子,作用于其右侧的函数。

注意: 运算顺序至关重要。例如 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=\oiintSAdS\iiint_V (\nabla \cdot {\bf A}) , dV = \oiint_S {\bf A} \cdot d{\bf S}
斯托克斯公式:LAdr=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==2x2+2y2+2z2\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)=uxx+uyy+uzz({\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 张量

我们简单写一个流体力学中的常用公式:不可压缩流体的质量守恒方程(微分形式):

ux+vy+wz=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}。若当坐标系旋转为 Ox1x2x3Ox'_1x'_2x'_3 时(变换矩阵为 aija{ij},即 xi=aijxjx'_i = a_{ij}x_j),新分量满足:

Ti1i2...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 (即点积 ab{\bf a} \cdot {\bf b}

Kronecker delta 符号 (δij\delta_{ij}):
δij={1,i=j 0,ij\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=ϵijkjuk(\nabla \times {\bf u})_i = \epsilon_{ijk} \partial_j u_k

对流项: [(u)u]i=ujjui[({\bf u} \cdot \nabla){\bf u}]_i = u_j \partial_j u_i (这是 N-S 方程中最常见的形式)

0x03.4 张量识别定理、二阶张量及其性质

张量识别定理可以用来判断一个未知量是不是张量、是几阶张量。其核心思想是:

  1. 若某未知量与任意已知张量按某种收缩/乘积运算后,总能得到一个在坐标旋转下满足张量变换律的量,则该未知量本身也必为张量。
  2. 阶数可由“自由指标个数”判断:等式两侧自由指标必须一致,重复指标表示求和并被消去。

在指标记号中,可以更直观地理解这个规则。

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},它有以下几个关键性质。

  1. 对称与反对称分解(唯一分解)

    Aij=Sij+Ωij,Sij=12(Aij+Aji),Ωij=12(AijAji)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} 为反对称部分。

  2. 迹(trace)与球张量分解

    tr(A)=Aii\mathrm{tr}(A)=A_{ii}

    Aij=13Akkδij各向同性(球)部分+(Aij13Akkδij)偏张量(无迹)部分A_{ij}=\underbrace{\frac13A_{kk}\delta_{ij}}_{\text{各向同性(球)部分}} +\underbrace{\left(A_{ij}-\frac13A_{kk}\delta_{ij}\right)}_{\text{偏张量(无迹)部分}}

    该分解在应力张量中非常重要:球部分对应平均正应力(压力),偏张量对应剪切效应。

  3. 二阶张量不变量

    在正交坐标旋转下,下列量保持不变(对任意二阶张量常用):

    I1=Aii,I2=12[(Aii)2AijAji],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)

    这些不变量常用于判断流动状态、构造无关坐标系的本构关系。

  4. 流体力学中的典型例子:速度梯度张量

    速度场 u{\bf u} 的梯度 jui\partial_j u_i 是二阶张量,可分解为:

    jui=Dij+Wij,Dij=12(jui+iuj),Wij=12(juiiuj)\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)=vjjvi+vijvj[\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})

这条恒等式非常重要:

  1. 可压缩流体中,需保留第二项 v(v)\mathbf{v}(\nabla\cdot\mathbf{v})
  2. 不可压缩流体中,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=vt+(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=vjjvi[(\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=vkkvivkivk(\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)=vkivk\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=vkivk+(vkkvivkivk)=vjjvi\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=vt+ ⁣(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}