CFD: 公式速查/教材推荐

二阶张量全部用雷诺应力\(\boldsymbol{\tau}\)符号来表示。矢量全部用\(\bfU,\bfV\)来表示。标量用\(a,b,\alpha,\beta,\gamma,\nu\)来表示。

基本操作

\[\begin{split} \notag \nabla p = \left[\begin{matrix} \frac{\partial p}{\partial x} \\ \frac{\partial p}{\partial y} \\ \frac{\partial p}{\partial z} \end{matrix} \right], \nabla \cdot(\nabla p)=\nabla ^2p=\frac{\partial^2p}{\partial x^2}+\frac{\partial^2p}{\partial y^2}+\frac{\partial^2p}{\partial z^2} \end{split}\]
\[\begin{split} \notag \mathbf{U} \cdot \mathbf{V} =[u_1, u_2, u_3] \left[\begin{matrix} v_1 \\ v_2 \\ v_3 \end{matrix} \right]=u_1v_1+u_2v_2+u_3v_3 \end{split}\]
\[\begin{split} \notag \mathbf{U} \cdot \boldsymbol{\tau} = \left[\begin{matrix} u_1\tau_{xx}+u_2\tau_{yx}+u_3\tau_{zx} \\ u_1\tau_{xy}+u_2\tau_{yy}+u_3\tau_{zy} \\ u_1\tau_{xz}+u_2\tau_{yz}+u_3\tau_{zz} \end{matrix} \right] \neq \boldsymbol{\tau}\cdot\mathbf{U} \end{split}\]
\[\begin{split} \notag \boldsymbol{\tau}\cdot\mathbf{U} = \left[\begin{matrix} \tau_{xx}u_1+\tau_{xy}u_2+\tau_{xz}u_3 \\ \tau_{yx}u_1+\tau_{yy}u_2+\tau_{yz}u_3 \\ \tau_{zx}u_1+\tau_{zy}u_2+\tau_{zz}u_3 \end{matrix} \right] \neq \mathbf{U} \cdot \boldsymbol{\tau} \end{split}\]
\[\begin{split} \notag \mathbf{U}\mathbf{V}=\mathbf{U}\otimes\mathbf{V}=\left[ \begin{matrix} u_1 v_1 & u_1 v_2 & u_1 v_3\\ u_2 v_1 & u_2 v_2 & u_2 v_3\\ u_3 v_1 & u_3 v_2 & u_3 v_3 \end{matrix} \right] \end{split}\]
\[\begin{split} \notag \mathbf{U} \times \mathbf{V}=\left[ \begin{matrix} u_2v_3-u_3v_2\\ u_3v_1-u_1v_3\\ u_1v_2-u_2v_1\\ \end{matrix} \right] \end{split}\]
\[ \notag \nabla \cdot \mathbf{U} = \frac{\partial u_1}{\partial x}+\frac{\partial u_2}{\partial y}+\frac{\partial u_3}{\partial z} \]
\[\begin{split} \notag \nabla \mathbf{U} = \left[ \begin{matrix} \frac{\partial u_1}{\partial x} & \frac{\partial u_2}{\partial x} & \frac{\partial u_3}{\partial x}\\ \frac{\partial u_1}{\partial y} & \frac{\partial u_2}{\partial y} & \frac{\partial u_3}{\partial y} \\ \frac{\partial u_1}{\partial z} & \frac{\partial u_2}{\partial z} & \frac{\partial u_3}{\partial z}\\ \end{matrix} \right] \end{split}\]
\[\begin{split} \notag \nabla \cdot(\nabla \mathbf{U})= \left[ \begin{matrix} \frac{\partial}{\partial x}\left(\frac{\partial u_1}{\partial x}\right)+\frac{\partial}{\partial y}\left(\frac{\partial u_1}{\partial y}\right)+\frac{\partial}{\partial z}\left(\frac{\partial u_1}{\partial z}\right)\\ \frac{\partial}{\partial x}\left(\frac{\partial u_2}{\partial x}\right)+\frac{\partial}{\partial y}\left(\frac{\partial u_2}{\partial y}\right)+\frac{\partial}{\partial z}\left(\frac{\partial u_2}{\partial z}\right)\\ \frac{\partial}{\partial x}\left(\frac{\partial u_3}{\partial x}\right)+\frac{\partial}{\partial y}\left(\frac{\partial u_3}{\partial y}\right)+\frac{\partial}{\partial z}\left(\frac{\partial u_3}{\partial z}\right)\\ \end{matrix} \right] \end{split}\]
\[ \notag \nabla \cdot(\nu \nabla \mathbf{U}^T)=\nu\nabla(\nabla\cdot\mathbf{U}) + \nabla\nu\cdot\nabla\mathbf{U} \]
\[\begin{split} \notag \nabla\times\mathbf{U}=\left[ \begin{matrix} \frac{\partial u_3}{\partial y}-\frac{\partial u_2}{\partial z}\\ \frac{\partial u_1}{\partial z}-\frac{\partial u_3}{\partial x}\\ \frac{\partial u_2}{\partial x}-\frac{\partial u_1}{\partial y}\\ \end{matrix} \right] \end{split}\]
\[ \notag \mathbf{U}\cdot\mathbf{V}=\mathbf{V}\cdot\mathbf{U} \]
\[ \notag \mathbf{U}\times\mathbf{V}=-\mathbf{V}\times\mathbf{U} \]
\[ \notag \mathbf{U}\times\left(\mathbf{V}\times\mathbf{W}\right)\neq\left(\mathbf{U}\times\mathbf{V}\right)\times\mathbf{W} \]
\[ \notag \nabla\cdot\left(\nabla\times\mathbf{U}\right)=0 \]
\[ \notag \nabla\times\nabla\alpha=0 \]
\[ \notag \nabla (\alpha p)=\alpha\nabla p+p\nabla\alpha \]
\[ \notag \nabla \cdot(\alpha \mathbf{U})=\alpha\nabla\cdot \mathbf{U}+\mathbf{U} \cdot \nabla\alpha=\alpha\nabla\cdot\mathbf{U}+\nabla\alpha\cdot\mathbf{U} \]
\[ \notag \nabla \times (\alpha \mathbf{U})=\alpha\nabla\times \mathbf{U}+\left(\nabla\alpha\right) \times\mathbf{U} \]
\[ \notag \nabla\cdot(\gamma \nabla(\alpha \beta)) =(\nabla\gamma)\cdot(\nabla\alpha\beta)+\gamma\nabla\cdot(\nabla(\alpha\beta)) \]
\[ \notag \nabla\cdot(\nabla(\alpha \beta)) = \alpha \nabla^2 \beta+2(\nabla \alpha) \cdot(\nabla \beta)+\beta \nabla^2 \alpha \]
\[ \notag \nabla\cdot(\nabla(\alpha \mathbf{U})) = \alpha \nabla^2 \mathbf{U}+2(\nabla \alpha) \cdot(\nabla \mathbf{U})+\mathbf{U} \nabla^2 \alpha \]
\[ \notag \nabla (\alpha\bfU\cdot\bfV)=\alpha\bfU\cdot\nabla\bfV+\bfV\cdot\nabla\alpha\bfU \]
\[ \notag \nabla\alpha\bfU=\alpha\nabla\bfU+\bfU\nabla\alpha \]
\[ \notag \nabla\cdot(\mathbf{U} \mathbf{U})=\mathbf{U} \cdot \nabla \mathbf{U}+\mathbf{U} \nabla \cdot \mathbf{U} \]
\[ \notag \nabla\cdot(\alpha\boldsymbol{\tau})=\boldsymbol{\tau} \cdot\nabla \alpha + \alpha \nabla \cdot\boldsymbol{\tau} \]
\[ \notag \mathrm{tr}\left(\nabla\mathbf{U}\right)\bfI=\mathrm{tr}\left(\nabla\mathbf{U}^{\mathrm{T}}\right)\bfI=\left(\nabla\cdot\mathbf{U}\right)\bfI \]
\[ \notag \mathrm{tr}\left(\nabla\mathbf{U}+\nabla\mathbf{U}^{\mathrm{T}}\right)\bfI=2\mathrm{tr}\left(\nabla\mathbf{U}\right)\bfI=2\left(\nabla\cdot\mathbf{U}\right)\bfI \]
\[ \notag \nabla\cdot(\nabla\bfU)^T=\nabla(\nabla\cdot\bfU) \]
\[ \notag \nabla\cdot((\nabla\cdot\bfU)\bfI)=\nabla(\nabla\cdot\bfU) \]
\[\begin{split} \notag \nabla \cdot {\boldsymbol\tau} = \left[\begin{matrix} \frac{\partial\tau_{xx}}{\partial x}+\frac{\partial\tau_{yx}}{\partial y}+\frac{\partial\tau_{zx}}{\partial z} \\ \frac{\partial\tau_{xy}}{\partial x}+\frac{\partial\tau_{yy}}{\partial y}+\frac{\partial\tau_{zy}}{\partial z} \\ \frac{\partial\tau_{xz}}{\partial x}+\frac{\partial\tau_{yz}}{\partial y}+\frac{\partial\tau_{zz}}{\partial z} \end{matrix}\right] \end{split}\]
\[ \notag {\boldsymbol\tau}:{\boldsymbol\tau}=\tau_{11}\tau_{11}+\tau_{12}\tau_{12}+\tau_{13}\tau_{13}+ \tau_{21}\tau_{21}+\tau_{22}\tau_{22}+\tau_{23}\tau_{23}+ \tau_{31}\tau_{31}+\tau_{32}\tau_{32}+\tau_{33}\tau_{33} \]
\[ \notag |{\boldsymbol\tau}|=\sqrt{{\boldsymbol\tau}:{\boldsymbol\tau}} \]
\[ \notag |{\boldsymbol\tau}|^2={\boldsymbol\tau}:{\boldsymbol\tau} \]
\[\begin{split} \begin{equation}\notag \begin{split} |\nabla\nabla\bfU|^2 &=\left(\frac{\p u_i}{\p x_j \p x_k}\right)\left(\frac{\p u_i}{\p x_j \p x_k}\right)=|\nabla\nabla u_1|^2+|\nabla\nabla u_2|^2+|\nabla\nabla u_3|^2 \\\\ &=\left|\begin{matrix} \frac{\p u_1}{\p x \p x},\frac{\p u_1}{\p x \p y},\frac{\p u_1}{\p x \p z} \\ \frac{\p u_1}{\p y \p x},\frac{\p u_1}{\p y \p y},\frac{\p u_1}{\p y \p z} \\ \frac{\p u_1}{\p z \p x},\frac{\p u_1}{\p z \p y},\frac{\p u_1}{\p z \p z} \end{matrix}\right|^2 + \left|\begin{matrix} \frac{\p u_2}{\p x \p x},\frac{\p u_2}{\p x \p y},\frac{\p u_2}{\p x \p z} \\ \frac{\p u_2}{\p y \p x},\frac{\p u_2}{\p y \p y},\frac{\p u_2}{\p y \p z} \\ \frac{\p u_2}{\p z \p x},\frac{\p u_2}{\p z \p y},\frac{\p u_2}{\p z \p z} \end{matrix}\right|^2 + \left|\begin{matrix} \frac{\p u_3}{\p x \p x},\frac{\p u_3}{\p x \p y},\frac{\p u_3}{\p x \p z} \\ \frac{\p u_3}{\p y \p x},\frac{\p u_3}{\p y \p y},\frac{\p u_3}{\p y \p z} \\ \frac{\p u_3}{\p z \p x},\frac{\p u_3}{\p z \p y},\frac{\p u_3}{\p z \p z} \end{matrix}\right|^2 \end{split} \end{equation} \end{split}\]

代码操作

形变率 \(\mathbf{S}=\)symm(gradU)\( =\frac{\nabla\bfU+\nabla\bfU^T}{2}\)

剪切应力\(\boldsymbol{\tau} =2\mu \left(\mathbf{S} -\frac{1}{3}\mathrm{tr}\left(\mathbf{S} \right)\mathbf{I}\right)\)

dev(tau)\(=\boldsymbol{\tau}-\frac{1}{3}\mathrm{tr}\left(\boldsymbol{\tau}\right)\mathbf{I}\)

dev2(tau)\(=\boldsymbol{\tau}-\frac{2}{3}\mathrm{tr}\left(\boldsymbol{\tau}\right)\mathbf{I}\)

twoSymm(gradU)\( =\nabla\bfU+\nabla\bfU^T\)

dev(twoSymm(gradU))\(=\nabla\bfU+\nabla\bfU^T-\frac{1}{3}\mathrm{tr}\left(\nabla\bfU+\nabla\bfU^T\right)\mathbf{I}=\nabla\bfU+\nabla\bfU^T-\frac{2}{3}\left(\nabla\cdot\mathbf{U}\right)\bfI\)

dev(symm(gradU))\(=\frac{\nabla\bfU+\nabla\bfU^T}{2}-\frac{1}{3}\mathrm{tr}\left(\frac{\nabla\bfU+\nabla\bfU^T}{2}\right)\mathbf{I}=\frac{\nabla\bfU+\nabla\bfU^T}{2}-\frac{1}{3}\left(\nabla\cdot\mathbf{U}\right)\bfI\)

tr(tau)\( =\tau_{xx}+\tau_{yy}+\tau_{zz}\)

sph(tau)\(=\frac{1}{3}\left(\tau_{xx}+\tau_{yy}+\tau_{zz}\right)\)

skew(gradU)\(=\frac{\nabla\bfU-\nabla\bfU^T}{2}\)

magSqrGradGrad(U)\(=\left|\nabla\nabla\bfU\right|^2\)

det(tau)\(=|\boldsymbol{\tau}|\)

innerSqr(tau)\(=\boldsymbol{\tau}\cdot\boldsymbol{\tau}=\left[\begin{matrix} \tau_{xx}\tau_{xx}+\tau_{xy}\tau_{xy}+\tau_{xz}\tau_{xz}, \tau_{xx}\tau_{xy}+\tau_{xy}\tau_{yy}+\tau_{xz}\tau_{yz}, \tau_{xx}\tau_{xz}+\tau_{xy}\tau_{yz}+\tau_{xz}\tau_{zz} \\ \tau_{xx}\tau_{xy}+\tau_{xy}\tau_{yy}+\tau_{xz}\tau_{yz}, \tau_{xy}\tau_{xy}+\tau_{yy}\tau_{yy}+\tau_{yz}\tau_{yz}, \tau_{xy}\tau_{xz}+\tau_{yy}\tau_{yz}+\tau_{yz}\tau_{zz} \\ \tau_{xx}\tau_{xz}+\tau_{xy}\tau_{yz}+\tau_{xz}\tau_{zz}, \tau_{xy}\tau_{xz}+\tau_{yy}\tau_{yz}+\tau_{yz}\tau_{zz}, \tau_{xz}\tau_{xz}+\tau_{yz}\tau_{yz}+\tau_{zz}\tau_{zz} \end{matrix}\right]\)

cof(tau) \(=\left[ \begin{matrix} \tau_{yy}\tau_{zz} - \tau_{zy}\tau_{yz} & \tau_{zx}\tau_{yz} - \tau_{yx}\tau_{zz} & \tau_{yx}\tau_{zy} - \tau_{yy}\tau_{zx}\\ \tau_{xz}\tau_{zy} - \tau_{xy}\tau_{zz} & \tau_{xx}\tau_{zz} - \tau_{xz}\tau_{zx} & \tau_{xy}\tau_{zx} - \tau_{xx}\tau_{zy}\\ \tau_{xy}\tau_{yz} - \tau_{xz}\tau_{yy} & \tau_{yx}\tau_{xz} - \tau_{xx}\tau_{yz} & \tau_{xx}\tau_{yy} - \tau_{yx}\tau_{xy}\\ \end{matrix} \right] \)

inv(tau)\(=\boldsymbol{\tau}^{-1}\)

invariantI(tau)\( =\mathrm{tr} \left(\boldsymbol{\tau}\right)\)

invariantII(tau) \(=\tau_{xx}\tau_{yy}+\tau_{yy}\tau_{zz}+ \tau_{xx}\tau_{zz}-\tau_{xy}\tau_{yx}-\tau_{yz}\tau_{zy}-\tau_{xz}\tau_{zx} \)

invariantIII(tau)\( =\mathrm{det} \left(\boldsymbol{\tau}\right)\)

tau.T()\(=\boldsymbol{\tau}^{T}\)

U & V\(=\bfU\cdot\bfV\)

U ^ V\(=\bfU \times\bfV\)

U * V\(=\bfU\bfV\)

tau & tau\(=\boldsymbol{\tau}\cdot\boldsymbol{\tau}\)

tau && tau\(=\boldsymbol{\tau} :\boldsymbol{\tau}\)

sign(a)\(=\mathrm{sgn}(a)\)

log(a)\(=\mathrm{ln}(a)\)

log10(a)\(=\mathrm{log}(a)\)

常用定义与单位

\(\mathbf{F}\frac{\mathrm{kg}\cdot\mathrm{m}}{\mathrm{s}^2}\)

压力 \(p \frac{\mathrm{kg}}{\mathrm{m} \cdot\mathrm{s}^2}\)

湍流动能 \(k \frac{\mathrm{m}^2}{\mathrm{s}^2}\)

湍流动能耗散率 \(\varepsilon \frac{\mathrm{m}^2}{\mathrm{s}^3}\)

湍流频率 \(\omega \frac{1}{\mathrm{s}}\)

运动粘度 \(\nu \frac{\mathrm{m}^2}{\mathrm{s}}\)

动力粘度 \(\mu \frac{\mathrm{kg}}{\mathrm{m}\cdot\mathrm{s}}\)

加速度 \(\mathbf{A}\frac{\mathrm{m}}{\mathrm{s}^2}\)

动量\(m\bfU\) \(\frac{\mathrm{kg}\cdot\mathrm{m}}{\mathrm{s}}\)

动量密度\(\rho\bfU\) \(\frac{\mathrm{kg}}{\mathrm{m}^2\cdot\mathrm{s}}\)

比能密度\(\rho E\) \(\frac{\mathrm{kg}}{\mathrm{m}\cdot\mathrm{s}^2}\)

比内能密度\(\rho e\) \(\frac{\mathrm{kg}}{\mathrm{m}\cdot\mathrm{s}^2}\)

比气体常数\(R\) \(\frac{\mathrm{m}^2}{\mathrm{s}^2 \cdot\mathrm{K}}\)

定容比热容\(C_v\) \(\frac{\mathrm{m}^2}{\mathrm{s}^2 \cdot\mathrm{K}}\)

CFD推荐教材

封面

作者(点击下载)

备注

Ferziger et al.

这本书适合CFD中级之后看,没什么方程,
但是讨论很丰富,让人回味无穷。有深度。有难度。

Versteeg and Malalasekera

这本书适合CFD初级入门看。很简单。
方程推导都很详细。但是过了入门阶段之后,
深度略有不足。

陶文铨

CFD中文书里面的顶流。
略有难度。初学的话需要看几遍才能看懂。
有深度、有广度。

Wilcox

传奇人物Wilcox的湍流大作。Wilcox之前还蹲过监狱。
一直也没有高级职称。
这本书讨论的湍流,更偏向于算法。
相对于Pope那本,我更喜欢这个。

Hirsch

Hirsch的这本书第一卷也偏向于CFD入门。
但是比Versteeg and Malalasekera要更深一些。
涵盖的面也要更广。当然难度也要深一点。
书里面还有一些小故事。

Leveque

高超音速流经典巨著。这本书主要讨论双曲方程。
上半部分讨论间断、黎曼问题、以及相关的FVM概念。
如果用FVM做高超,强推这本书。
如果做不可压缩,就不用看了。

Toro

高超音速流经典巨著。
这本书主要讨论黎曼问题数值解。
类似Leveque那本书,这本书推导更加详细。
更偏向CFD一点。

Struchtrup

稀薄流矩方法巨著。不做稀薄流不用看了
Struchtrup自己开发了很多稀薄流算法。
那他自己的书当然偏向介绍自己的算法居多。
这个书有一定难度,开始我看也晕了。

Moukalled et al.

2015年出的一本CFD教材。偏OpenFOAM。
有些CFD小细节书中确实有提及。配图也有意思。
相对于Versteeg那本要难,相对于Ferziger的要简单。
CFD入门之后可以看看。

Vermeire et al.

比较小众的一本2020年新出的CFD教材。
面不是特别全,很多讨论也是一笔待过。
但是其中对黎曼问题、FVM格式的讨论比较直白易懂。

Marchisio and Fox

通过矩方法求解多相流的经典巨著。
我导师写的书,话不多说,矩方法必看,
我已经翻烂了。

Ishii

很多文献都表示,Ishii提出的多流体模型。
也有很多文献表明,是其他人提出来的。
不管怎么说,Ishii在多流体模型这面绝对是权威。
这本书主要介绍偏模型,偏封闭。
没怎么涉及到算法。

Demmel

Demmel作者开发了大名鼎鼎的LAPACK计算库
对于CFD来说,可以关注一下里面的迭代求解算法。

López de Bertodano et al.

López de Bertodano一直在玩多流体模型。
相对于Ishii的书,这本书偏向于算法。
但不是CFD算法,而是模型稳定性等内在的数值特征。

Xu

徐昆老师一直在做GKS格式。
这本书主要介绍GKS相关理论。
另外更入门的是徐老师2001年的报告。
那个报告更好理解一些。

Pope

这本书做湍流的都知道。不需要多说。
湍流领域No.1。
这本书偏湍流理论。CFD算法较少。

Jasak

Jasak的博士论文。
Jasak是早期FOAM的创始人之一。
他的博士论文里面讨论了OpenFOAM的算法思想。

Tryggvason

Tryggvason的多相流直接模拟玩的很溜。
他也是Front-tracking算法的提出人。
这本书里面不仅包含了多相流的内容。
还包含了一些CFD求解的基本思想。

Morton and Mayers

这本书关于PDE解释的很清楚。
尤其是一些关于PDE特征的东西。
以及各种格式的稳定性分析、误差分析等。

Nishikawa

这本书包含了很多CFD方程的形式。
并且推导的很清楚。不过没有包含离散求解方法。
做欧拉方程以及高超的可以看下。

Blazek

一些人强推这本书,我买一本原版。
属实没get到那个点。推导不是很详细。
拓展性也不是很强。但有很多人推荐。