From c2e9a0a3bb77d3e198c40404724ab6278f2aebd2 Mon Sep 17 00:00:00 2001 From: wangyang Date: Tue, 9 Feb 2021 13:31:51 +0800 Subject: [PATCH 1/9] =?UTF-8?q?=E6=B1=AA=E6=B4=8B=E8=AE=A4=E9=A2=86?= =?UTF-8?q?=E4=BA=86=E7=9B=B8=E5=85=B3=E4=BB=BB=E5=8A=A1?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- ...240\350\212\202\350\256\244\351\242\206.md" | 18 +++++++++--------- 1 file changed, 9 insertions(+), 9 deletions(-) diff --git "a/\347\277\273\350\257\221\347\253\240\350\212\202\350\256\244\351\242\206.md" "b/\347\277\273\350\257\221\347\253\240\350\212\202\350\256\244\351\242\206.md" index c1f795e..d542e0f 100644 --- "a/\347\277\273\350\257\221\347\253\240\350\212\202\350\256\244\351\242\206.md" +++ "b/\347\277\273\350\257\221\347\253\240\350\212\202\350\256\244\351\242\206.md" @@ -49,8 +49,8 @@ ### 39 The fvOption framework . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . skf0558 ### 40 The Lagrangian world 199 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . shujingshao ## V Solver 209 shujingshao -### **41 Solution Algorithms 209 -### **42 pimpleFoam 212 +### **41 Solution Algorithms 209 wangyang +### **42 pimpleFoam 212 wangyang ### **43 rhoPimpleFoam 219 ### **44 twoPhaseEulerFoam 220** ### **45 twoPhaseEulerFoam-2.3 226** @@ -72,14 +72,14 @@ ### 58 General remarks on OpenFOAM programming 340. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ## IX Theory 345 ### 59 **Discretization 345**. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . jesson Liu -### 60 **Momentum diffusion in an incompressible fluid 348** -### 61 **The incompressible k- turbulence model 349** -### 62 **Some theory behind the scenes of LES 357** -### 63 **The use of phi 362** -### 64 **Derivation of the IATE diameter model 365** -### 65 **Derivation of the MRF approach 376** +### 60 **Momentum diffusion in an incompressible fluid 348** wangyang +### 61 **The incompressible k- turbulence model 349* wangyang +### 62 **Some theory behind the scenes of LES 357** wangyang +### 63 **The use of phi 362** wangyang +### 64 **Derivation of the IATE diameter model 365** wangyang +### 65 **Derivation of the MRF approach 376** wangyang ## X Appendix 381 ### 66 **Useful Linux commands 381 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . xfygogo ### 67 **Archive data 386 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . xfygogo ## Bibliography 389 -## List of Abbreviations 392 \ No newline at end of file +## List of Abbreviations 392 -- Gitee From 60204b4e6a39daaf4ab32bec54fd00e4180451c7 Mon Sep 17 00:00:00 2001 From: 19810709 Date: Tue, 9 Feb 2021 16:00:06 +0800 Subject: [PATCH 2/9] finish 60.1 govening equaitons --- ...um_diffusion_in_an_incompressible_fluid.md | 166 ++++++++++++++++++ 1 file changed, 166 insertions(+) create mode 100644 60.Momentum_diffusion_in_an_incompressible_fluid.md diff --git a/60.Momentum_diffusion_in_an_incompressible_fluid.md b/60.Momentum_diffusion_in_an_incompressible_fluid.md new file mode 100644 index 0000000..4569056 --- /dev/null +++ b/60.Momentum_diffusion_in_an_incompressible_fluid.md @@ -0,0 +1,166 @@ +#### 60 不可压缩流体中的动量扩散 +##### 60.1 控制方程 +在42.1节中讨论过不可压缩流体的控制方程 +$$ +\frac{\partial \mathbf{u}}{\partial t} + \nabla(\mathbf{uu}) + \underbrace{\nabla\cdot(dev(\mathbf{R}^{eff}))}_{=div(dev(\mathbf{R}^{eff})} = -\nabla p + \mathbf{Q} +$$ + +$$ +\mathbf{R}^{eff} = -\nu_{eff}(\nabla\mathbf{u} + (\nabla\mathbf{u}^T)) +$$ + +$$ +\frac{\partial \mathbf{u}}{\partial t} + \nabla(\mathbf{uu}) + \nabla\cdot(dev(-{\nu}^{eff}(\nabla\mathbf{u} + (\nabla\mathbf{u}^T)))= -\nabla p + \mathbf{Q} +$$ + +使用湍流模型来处理动量湍流项: +$$ +\underbrace{\nabla\cdot(dev(\mathbf{R}^{eff}))}_{=div(dev(\mathbf{R}^{eff})} \quad \Longleftrightarrow \quad \texttt{turbulance->divDevReff(U)} +$$ +##### 60.2 空间离散 +空间离散的目的使将物理量从网格体心插值到表面,并使用表面物理量进行进一步的计算,如空间导数等。 +###### 59.2.1 *upwind*格式 +*upwind*格式简单地将物理量在来流侧网格的体心值插值到网格表面。 +###### 59.2.2 *linearUpwind*格式 +*linearUpwind*与*FLUENT*中二阶迎风格式等价。 +###### 59.2.3 *QUICK*格式 +*FLUENT*理论手册中指出: +在四边形和六面体网格中,能够识别出唯一的上游和下游面和单元,*ANSYS FLUENT*还提供了计算面处对流变量高阶值的*QUICK*格式。 +###### 59.2.4 *MUSCL* 格式 +##### 59.3连续性方程引起误差的修正 +*OPENFOAM*中一些求解器的控制方程中,比如*twoPhaseEulerFoam*(*OpenFOAM-2.3.x*),我们发现了对于连续性方程一个特殊的修正。 +###### 59.3.1 守恒形式 +在分析之前,我们先仔细观察输运方程的守恒和非守恒形式。首先,我们回顾一下随体导数的定义: + +$$ +\frac{D}{Dt}=\frac{\partial}{\partial t}+(\boldsymbol{u} \cdot \nabla) +$$ + +对于任意标量K,有 + +$$ +\frac{DK}{Dt}=\frac{\partial K}{\partial t}+\boldsymbol{u} \cdot \nabla K +$$ + +**连续性方程** + +首先让我们观察连续性方程的微分形式 +守恒形式: + +$$ +\frac{\partial \rho}{\partial t}+\nabla \cdot (\rho \boldsymbol{u})=0 +$$ + +非守恒形式 + +$$ +\frac{D \rho}{D t}+\rho \nabla \cdot \boldsymbol{u}=0 +$$ + +这两种形式是等价的,因为我们可以通过一些简单的数学运算,轻易地将一个方程表示成另一个方程。 + +$$ +\frac{\partial \rho}{\partial t}+\nabla \cdot (\rho \boldsymbol{u})=0 +$$ + +$$ +\frac{\partial \rho}{\partial t}+\nabla \rho \cdot \boldsymbol{u}+\rho \nabla \cdot \boldsymbol{u} +$$ + +$$ +\underbrace{\frac{\partial \rho}{\partial t}+\boldsymbol{u} \cdot (\rho \boldsymbol{u})}_\text{\frac{D \rho}{D t}}+\rho \nabla \cdot \boldsymbol{u}=0 +$$ + +**输运方程** + +下一个例子中我们使用多相流问题中焓输运方程的右端项。本例由*OpenFOAM-2.3.x*中*twoPhaseEulerFoam*的能量方程导出。我们也可以用动量方程,但是,我们想避免因为速度的反复出现而引起的混淆。 + +我们从教科书或其他资源[7,6]中得到多相流的能量方程。为了简洁起见,我们只陈述方程的左边。我们查到的方程(Eqn.(205))碰巧是守恒形式。为了得到非守恒形式,我们现在对方程进行推导。 + +$$ +\frac{\partial \alpha_k \rho_kh_k}{\partial t}+\nabla \cdot (\alpha_k \rho_k\boldsymbol{u}_k h_k)=RHS +$$ + +通过对LHS求偏导,我们得到 + +$$ +\frac{\partial \alpha_k \rho_k}{\partial t}h_k+\alpha_k \rho_k \frac{\partial h_k}{\partial t}+h_k \nabla \cdot (\alpha_k \rho_k\boldsymbol{u}_k)+\alpha_k \rho_k\boldsymbol{u}_k \cdot \nabla h_k =RHS +$$ + +$$ +h_k \underbrace{\frac{\partial \alpha_k \rho_k}{\partial t}+\nabla \cdot (\alpha_k \rho_k \boldsymbol{u}_k)}_\text{\romannumeral1}+\alpha_k \rho_k \underbrace{(\frac{\partial h_k}{\partial t}+\boldsymbol{u}_k \cdot \nabla h_k)}_\text{\romannumeral2} =RHS +$$ + +我们现在观察Ⅰ项,通过连续性方程,其等于0。第Ⅱ项为$h_k$的随体导数。因此,我们可以得到方程(208),即非守恒形式的能量方程 + +$$ +\alpha_k \rho_k(\frac{\partial h_k}{\partial t}+\boldsymbol{u}_k \cdot \nabla h_k) = RHS +$$ + +$$ +\alpha_k \rho_k \frac{Dh_k}{Dt} = RHS +$$ + +我们仅对式(205)至式(208)的左边进行了变换,因此,守恒形式和非守恒形式的区别仅存在于方程的左边。 + +###### 59.3.2 连续性方程引起的离散误差 + +在理论和数学意义上,守恒形式和非守恒形式是等价的。然而,我们求解的方程并不是物理方程,而是对偏微分方程离散化后得到线性方程组。我们解出的线性方程组不一定直接代表初始偏微分方程。代数方程组的(精确)解与数学模型(偏微分方程)的(未知)解之间的差异通常被称为离散化误差[36]。 + +利用eqn.(205)和(208)并整理得: + +$$ +\frac{\partial \alpha_k \rho_kh_k}{\partial t}+\nabla \cdot (\alpha_k \rho_k\boldsymbol{u}_k h_k)=\alpha_k \rho_k (\frac{\partial h_k}{\partial t}+\boldsymbol{u}_k \cdot \nabla h_k) +h_k(\frac{\partial \alpha_k \rho_k}{\partial t}+\nabla \cdot (\alpha_k \rho_k\boldsymbol{u}_k)) +$$ + +$$ +\frac{\partial \alpha_k \rho_kh_k}{\partial t}+\nabla \cdot (\alpha_k \rho_k\boldsymbol{u}_k h_k)-h_k(\frac{\partial \alpha_k \rho_k}{\partial t}+\nabla \cdot (\alpha_k \rho_k\boldsymbol{u}_k))=\alpha_k \rho_k (\frac{\partial h_k}{\partial t}+\boldsymbol{u}_k \cdot \nabla h_k) +$$ + +我们现在要求解能量方程,选择非守恒形式式(208) + +$$ +\alpha_k \rho_k(\frac{\partial h_k}{\partial t}+\boldsymbol{u}_k \cdot \nabla h_k) = RHS +$$ + +利用式(211),我们可以得到 + +$$ +\frac{\partial \alpha_k \rho_kh_k}{\partial t}+\nabla \cdot (\alpha_k \rho_k\boldsymbol{u}_k h_k)-h_k(\frac{\partial \alpha_k \rho_k}{\partial t}+\nabla \cdot (\alpha_k \rho_k\boldsymbol{u}_k)) = RHS +$$ + +数学上,(208)和(212)是等价的。然而,当我们离散这两个方程以数值求解时,式(208)和(212)的左侧值可能不同,因为离散的连续性方程可能不等于零。 + +下面我们从数学的观点看一下*twoPhaseEulerFoam-2.3.x*的源代码。在*List481*中,我们看到了单相能量方程的第一项。关于完整的能量方程的讨论见第45.5节。 + +在*List481*的第3行和第4行中,我们看到了式(212)的左侧 + +``` + fvScalarMatrix he1Eqn + ( + fvm :: ddt ( alpha1 , rho1 , he1 ) + fvm :: div ( alphaRhoPhi1 , he1 ) + - fvm :: Sp ( contErr1 , he1 ) + /* other stuff*/ + ) ; +``` +**Listing 480: *twoPhaseEulerFoam*求解器*EEqns.H*文件中能量方程的第一项** +``` + volScalarField contErr1 + ( + fvc :: ddt ( alpha1 , rho1 ) + fvc :: div ( alphaRhoPhi1 ) + - ( fvOptions ( alpha1 , rho1 ) & rho1 ) + ) ; + ``` +**Listing 481: *twoPhaseEulerFoam.C*文件中的连续性误差的定义** + +再次观察式(212),并对不同项命名。在*List481*中,连续性错误的定义与式(212)略有不同。这是由于求解器考虑了相位源,参见*List481*的第4行。 + +$$ +\underbrace{\frac{\partial \alpha_k \rho_kh_k}{\partial t}}_\text{fvm::ddt(alpha1, rho1, he1)}+\underbrace{\nabla \cdot (\alpha_k \rho_k\boldsymbol{u}_k h_k)}_\text{fvm::div(alphaRhoPhi1, he1)}-\underbrace{h_k(\frac{\partial \alpha_k \rho_k}{\partial t}+\nabla \cdot (\alpha_k \rho_k\boldsymbol{u}_k))}_\text{contErr1} = RHS +$$ + + + + + + -- Gitee From caf1fa24190f24b0eae2b81915cc4b823c156900 Mon Sep 17 00:00:00 2001 From: 19810709 Date: Thu, 11 Feb 2021 15:22:57 +0800 Subject: [PATCH 3/9] finish section 60.2 implementation --- ...um_diffusion_in_an_incompressible_fluid.md | 37 ++++++++++++++++++- 1 file changed, 35 insertions(+), 2 deletions(-) diff --git a/60.Momentum_diffusion_in_an_incompressible_fluid.md b/60.Momentum_diffusion_in_an_incompressible_fluid.md index 4569056..9c355c8 100644 --- a/60.Momentum_diffusion_in_an_incompressible_fluid.md +++ b/60.Momentum_diffusion_in_an_incompressible_fluid.md @@ -17,8 +17,41 @@ $$ $$ \underbrace{\nabla\cdot(dev(\mathbf{R}^{eff}))}_{=div(dev(\mathbf{R}^{eff})} \quad \Longleftrightarrow \quad \texttt{turbulance->divDevReff(U)} $$ -##### 60.2 空间离散 -空间离散的目的使将物理量从网格体心插值到表面,并使用表面物理量进行进一步的计算,如空间导数等。 +##### 60.2 功能实现 +OpenFOAM中所有的湍流模型都基于泛型湍流模型类。在57.10节的图134给出了类图。图中所示,所有的RAS湍流模型类与LES湍流模型类都是从同样的基类继承过来。OpenFOAM中的大量求解器都允许使用者选择层流模型或者RAS、LES湍流模型。因此,在写源代码的时候,没有人需要知道动量扩散项使用哪种湍流模型。 +因此为了克服这个问题,现代编程技术支持一种技术名为多态。在源代码中调用指令$\texttt{turbulence->divDevReff()}$计算扩散项。这条指令是调用对象$\texttt{turbulence}$的$\texttt{divDevReff()}$方法。 +``` +// Solve the Moment equation +tmp UEqn +( + fvm::ddt(U) + + fvm::div(phi, U) + + turbulence->divDevReff(U) +); + +UEqn().relax(); + +source.constrain(UEqn()); + +volScalarField rAU(1.0/UEqn().A()); + +if (pimple.momentumPredictor()) +{ + solve(UEqn() == -fvc::grad(p) + source(U)); +} +``` +**Listing 482: *pimpleFoam*中的UEqn.H的文件** +$\texttt{createFields.H}$文件中的源代码告诉我们,$\texttt{turbulence}$对象的数据类型是$\texttt{turbulenceModel}$ +``` +singlePhaseTransportModel laminarTransport(U, phi); + +autoPtr turbulence +( + incompressible::turbulenceModel::New(U, phi, laminarTransport) +); +``` +**Listing 483: *pimpleFoam*中的createFields.H文件 + ###### 59.2.1 *upwind*格式 *upwind*格式简单地将物理量在来流侧网格的体心值插值到网格表面。 ###### 59.2.2 *linearUpwind*格式 -- Gitee From ccdfd92db7d02a238856c08e95c6007c94f2ca5e Mon Sep 17 00:00:00 2001 From: 19810709 Date: Thu, 11 Feb 2021 15:55:02 +0800 Subject: [PATCH 4/9] finish the section 61 --- ...um_diffusion_in_an_incompressible_fluid.md | 32 +++++++++++++++++-- 1 file changed, 30 insertions(+), 2 deletions(-) diff --git a/60.Momentum_diffusion_in_an_incompressible_fluid.md b/60.Momentum_diffusion_in_an_incompressible_fluid.md index 9c355c8..f708c65 100644 --- a/60.Momentum_diffusion_in_an_incompressible_fluid.md +++ b/60.Momentum_diffusion_in_an_incompressible_fluid.md @@ -51,9 +51,37 @@ autoPtr turbulence ); ``` **Listing 483: *pimpleFoam*中的createFields.H文件 +在编译的时候,确保$\texttt{turbulence}$对象的数据类型为$\texttt{turbulenceModel}$。然而,$\texttt{turbulence}$的实际数据类型并不是$\texttt{turbulenceModel}$,而是从$\texttt{turbulenceModel}$继承的一种类型。只有在运行时确定了$\texttt{turbulence}$的实际数据类型,才能确定$\texttt{divDevReff()}$的实际调用方法。 +Listing 484给出了虚方法$\texttt{divDevReff()}$的声明。可以参考57.10节对虚方法的讨论。Listing 485给出了OpenFOAM中标准$k-\epsilon$湍流模型的具体实现。 +``` +//- Return the source term for the momentum equation +virtual tmp divDevReff(volVectorField& U) const = 0; +**Listing 484: *turbulenceModel.H*中的虚方法*divDevReff()*的声明** +``` + +``` +tmp kEpsilon::divDevReff(volVectorField& U) const +{ + return + ( + - fvm::laplacian(nuEff(), U) + - fvc::div(nuEff()*dev(T(fvc::grad(U)))) + ); +} +``` +**Listing 485: *kEpsilon.H*文件中虚方法*divDevReff*的实现 +$\texttt{divDevReff()}$的计算与公式79等价 +$$ +\texttt{divDevReff} = \nabla\cdot(dev(-\nu(\nabla{U} + (\nabla{U})^T)))\\ += \underbrace{-\nabla\cdot(\nu(\nabla{U}))}_{\texttt{laplacian(nu,U)}}-\underbrace{\nabla\cdot(\nu(\nabla{U})^T)}_{\texttt{div(nu*dev(T(grad(U))))}} +$$ +由于数值原因动量扩散项通常为分为两个部分。 ###### 59.2.1 *upwind*格式 -*upwind*格式简单地将物理量在来流侧网格的体心值插值到网格表面。 + +*://gitee.com/wo315/openFoamUserManual + +upwind*格式简单地将物理量在来流侧网格的体心值插值到网格表面。 ###### 59.2.2 *linearUpwind*格式 *linearUpwind*与*FLUENT*中二阶迎风格式等价。 ###### 59.2.3 *QUICK*格式 @@ -183,7 +211,7 @@ $$ fvc :: ddt ( alpha1 , rho1 ) + fvc :: div ( alphaRhoPhi1 ) - ( fvOptions ( alpha1 , rho1 ) & rho1 ) ) ; - ``` +``` **Listing 481: *twoPhaseEulerFoam.C*文件中的连续性误差的定义** 再次观察式(212),并对不同项命名。在*List481*中,连续性错误的定义与式(212)略有不同。这是由于求解器考虑了相位源,参见*List481*的第4行。 -- Gitee From a37351106e293c3ae31342c65847e5a9ab1df32a Mon Sep 17 00:00:00 2001 From: 19810709 Date: Thu, 11 Feb 2021 22:09:45 +0800 Subject: [PATCH 5/9] add 61-61.2.2 --- ...um_diffusion_in_an_incompressible_fluid.md | 46 ++- ...compressible k-epsilon turbulence model.md | 288 ++++++++++++++++++ 2 files changed, 329 insertions(+), 5 deletions(-) create mode 100644 61.The incompressible k-epsilon turbulence model.md diff --git a/60.Momentum_diffusion_in_an_incompressible_fluid.md b/60.Momentum_diffusion_in_an_incompressible_fluid.md index f708c65..36afa05 100644 --- a/60.Momentum_diffusion_in_an_incompressible_fluid.md +++ b/60.Momentum_diffusion_in_an_incompressible_fluid.md @@ -19,7 +19,9 @@ $$ $$ ##### 60.2 功能实现 OpenFOAM中所有的湍流模型都基于泛型湍流模型类。在57.10节的图134给出了类图。图中所示,所有的RAS湍流模型类与LES湍流模型类都是从同样的基类继承过来。OpenFOAM中的大量求解器都允许使用者选择层流模型或者RAS、LES湍流模型。因此,在写源代码的时候,没有人需要知道动量扩散项使用哪种湍流模型。 + 因此为了克服这个问题,现代编程技术支持一种技术名为多态。在源代码中调用指令$\texttt{turbulence->divDevReff()}$计算扩散项。这条指令是调用对象$\texttt{turbulence}$的$\texttt{divDevReff()}$方法。 + ``` // Solve the Moment equation tmp UEqn @@ -50,15 +52,20 @@ autoPtr turbulence incompressible::turbulenceModel::New(U, phi, laminarTransport) ); ``` -**Listing 483: *pimpleFoam*中的createFields.H文件 +**Listing 483: *pimpleFoam*中的createFields.H文件** 在编译的时候,确保$\texttt{turbulence}$对象的数据类型为$\texttt{turbulenceModel}$。然而,$\texttt{turbulence}$的实际数据类型并不是$\texttt{turbulenceModel}$,而是从$\texttt{turbulenceModel}$继承的一种类型。只有在运行时确定了$\texttt{turbulence}$的实际数据类型,才能确定$\texttt{divDevReff()}$的实际调用方法。 -Listing 484给出了虚方法$\texttt{divDevReff()}$的声明。可以参考57.10节对虚方法的讨论。Listing 485给出了OpenFOAM中标准$k-\epsilon$湍流模型的具体实现。 + +Listing 484给出了虚方法$\texttt{divDevReff()}$的声明。可以参考57.10节对虚方法的讨论。 + +Listing 485给出了OpenFOAM中标准$k-\epsilon$湍流模型的具体实现。 + ``` //- Return the source term for the momentum equation virtual tmp divDevReff(volVectorField& U) const = 0; -**Listing 484: *turbulenceModel.H*中的虚方法*divDevReff()*的声明** ``` +**Listing 484: *turbulenceModel.H*中的虚方法*divDevReff()*的声明** + ``` tmp kEpsilon::divDevReff(volVectorField& U) const { @@ -69,14 +76,43 @@ tmp kEpsilon::divDevReff(volVectorField& U) const ); } ``` -**Listing 485: *kEpsilon.H*文件中虚方法*divDevReff*的实现 -$\texttt{divDevReff()}$的计算与公式79等价 +**Listing 485: *kEpsilon.H*文件中虚方法*divDevReff*的实现** +$\texttt{divDevReff()}$的计算与公式79等价 $$ \texttt{divDevReff} = \nabla\cdot(dev(-\nu(\nabla{U} + (\nabla{U})^T)))\\ = \underbrace{-\nabla\cdot(\nu(\nabla{U}))}_{\texttt{laplacian(nu,U)}}-\underbrace{\nabla\cdot(\nu(\nabla{U})^T)}_{\texttt{div(nu*dev(T(grad(U))))}} $$ 由于数值原因动量扩散项通常为分为两个部分。 + +### 61 不可压缩$k-\epsilon$湍流模型 + +#### 61.1 文献中的$k-\epsilon$湍流模型 + +Wilcox[67]文献中给出单向流的$k-\epsilon$的控制方程 + +涡粘方程: +$$ +\mu_T=\rho C_{\mu}\frac{k^2}{\epsilon} +$$ +湍动能: +$$ +\rho\frac{\partial k}{\partial t}+\rho U_j\frac{\partial k}{\partial x_j} = \tau_{ij}\frac{\partial U_i}{\partial x_j} - \rho\epsilon+\frac{\partial}{\partial x_j}\left[(\mu+\frac{\mu_T}{\sigma_k})\frac{\partial k}{\partial x_j}\right] +$$ +湍耗散: +$$ +\rho\frac{\partial\epsilon}{\partial t} +\rho U_j\frac{\partial\epsilon}{\partial x_j} = C_{\epsilon 1}\frac{\epsilon}{k}\tau_{ij}\frac{\partial U_i}{\partial x_j}-C_{\epsilon 2}\rho\frac{\epsilon^2}{k}+\frac{\partial}{\partial x_j}\left[(\mu+\frac{\mu_T}{\sigma_k})\frac{\partial\epsilon}{\partial x_j}\right] +$$ +封闭系数: +$$ +C_{\epsilon 1} = 1.44, \quad C_{\epsilon 2} = 1.92, \quad C_{\mu} = 0.09, \quad \sigma_k=1.0, \quad \sigma_{\epsilon} = 1.3 +$$ +通过如下基本结构形式对$k$和$\epsilon$的输运方程重新组织: +$$ +\textrm{local derivative + convection + diffusion = source & sink terms} +$$ + + ###### 59.2.1 *upwind*格式 *://gitee.com/wo315/openFoamUserManual diff --git a/61.The incompressible k-epsilon turbulence model.md b/61.The incompressible k-epsilon turbulence model.md new file mode 100644 index 0000000..077030f --- /dev/null +++ b/61.The incompressible k-epsilon turbulence model.md @@ -0,0 +1,288 @@ +### 61 不可压缩$k-\epsilon$湍流模型 + +#### 61.1 文献中的$k-\epsilon$湍流模型 + +Wilcox[67]文献中给出单向流的$k-\epsilon$的控制方程 + +涡粘方程: +$$ +\mu_T=\rho C_{\mu}\frac{k^2}{\epsilon} +$$ +湍动能: +$$ +\rho\frac{\partial k}{\partial t}+\rho U_j\frac{\partial k}{\partial x_j} = \tau_{ij}\frac{\partial U_i}{\partial x_j} - \rho\epsilon+\frac{\partial}{\partial x_j}\left[(\mu+\frac{\mu_T}{\sigma_k})\frac{\partial k}{\partial x_j}\right] +$$ +湍耗散: +$$ +\rho\frac{\partial\epsilon}{\partial t} +\rho U_j\frac{\partial\epsilon}{\partial x_j} = C_{\epsilon 1}\frac{\epsilon}{k}\tau_{ij}\frac{\partial U_i}{\partial x_j}-C_{\epsilon 2}\rho\frac{\epsilon^2}{k}+\frac{\partial}{\partial x_j}\left[(\mu+\frac{\mu_T}{\sigma_k})\frac{\partial\epsilon}{\partial x_j}\right] +$$ +封闭系数: +$$ +C_{\epsilon 1} = 1.44, \quad C_{\epsilon 2} = 1.92, \quad C_{\mu} = 0.09, \quad \sigma_k=1.0, \quad \sigma_{\epsilon} = 1.3 +$$ +通过如下基本结构形式对$k$和$\epsilon$的输运方程重新组织: +$$ +\textrm{local derivative + convection + diffusion = source & sink terms} +$$ +湍动能: +$$ +\rho\frac{\partial k}{\partial t}+\rho U_j\frac{\partial k}{\partial x_j}-\frac{\partial}{\partial x_j}\left[\underbrace{(\mu+\frac{\mu_T}{\sigma_k})}_{D_k}\frac{\partial k}{\partial x_j}\right] =\underbrace{\tau_{ij}\frac{\partial U_i}{\partial x_j}}_{G} - \rho\epsilon +$$ +湍耗散: +$$ +\rho\frac{\partial\epsilon}{\partial t} +\rho U_j\frac{\partial\epsilon}{\partial x_j}-\frac{\partial}{\partial x_j}\left[\underbrace{(\mu+\frac{\mu_T}{\sigma_{\epsilon}})}_{D_{\epsilon}}\frac{\partial\epsilon}{\partial x_j}\right] = C_{\epsilon 1}\frac{\epsilon}{k}\underbrace{\tau_{ij}\frac{\partial U_i}{\partial x_j}}_{G}-C_{\epsilon 2}\rho\frac{\epsilon^2}{k} +$$ +扩散系数: +$$ +D_k = \mu + \frac{\mu_T}{\sigma_k} +$$ + +$$ +D_{\epsilon} = \mu + \frac{u_T}{\sigma_{\epsilon}} +$$ + +扩散项常数表达由扩散常数$D_k$和$D_{\epsilon}$合并组成。湍动能方程的右边第一项为湍动能生成率$G$ + +#### 61.2 OpenFOAM中$k-\epsilon$湍流模型 + +###### 61.2.1 控制方程 + +OpenFOAM中的$k-\epsilon$模型基本上与61.1节的控制方程相同。因为OpenFOAM语法以向量为主,所以本节以向量描述。OpenFOAM中某型有一定的修正。 + +首先,$k$和 $\epsilon$的输运方程除以了密度$\rho$。因此,包含粘性的所有项使用运动粘度$\nu$而不是动力粘度$\mu$ + +第二,OpenFOAM中的标准$k-\epsilon$模型取消了模型常数$\sigma_k$。使该常数取1,则该常数取消了。这种操作不会改变模型。然而,如果用户尝试改变模型常数,不会有任何效果。可参考32.4.2节的讨论和例子。 + +最后,对流项根据微分规则分为两项。参考公式222。 + +涡粘,参考Listing 486 +$$ +\mu_T = \rho\nu_T +$$ + +$$ +\nu_T = C_{\mu}\frac{k^2}{\epsilon} +$$ + +湍动能,参考Listing 487 +$$ +U_j\frac{\partial k}{\partial x_j} = \mathbf{U}\cdot\frac{\partial k}{\partial \mathbf{x}} = \mathbf{U}\cdot\nabla k +$$ + +$$ +\mathbf{U}\cdot\frac{\partial k}{\partial \mathbf{x}} = \nabla\cdot(\mathbf{U}k)-(\nabla\cdot\mathbf{U})k +$$ + +$$ +\frac{\partial k}{\partial t} + \nabla\cdot(\mathbf{U}k) - (\nabla\cdot\mathbf{U})k - \nabla\cdot(D_k\nabla k) = G - \epsilon +$$ + +湍耗散: +$$ +\frac{\partial \epsilon}{\partial t} + \nabla\cdot(\mathbf{U}\epsilon) - (\nabla\cdot\mathbf{U})\epsilon - \nabla\cdot(D_{\epsilon}\nabla\epsilon) = C_1G\frac{1}{k} - C_2\frac{\epsilon^2}{k} +$$ + + +扩散常数$\sigma_k$通过下面方程可以消除: +$$ +D_k = \texttt{DkEFF} = \nu + \nu_T +$$ + +$$ +D_{\epsilon} = \texttt{DepsilonEff} = \nu + \frac{\nu_T}{\sigma_\epsilon} +$$ + +封闭系数,默认值: +$$ +C_{\epsilon 1} = 1.44, \quad C_{\epsilon 2} = 1.92, \quad C_{\mu} = 0.09, \quad \sigma_{\epsilon} = 1.3 +$$ +湍流模型类的构造函数中设置了模型常数的默认值。 + +##### 61.2.2 源代码 + +Listing 486给出了涡粘的计算代码。简短的代码可能会导致混淆,例如函数$sqr()$可能与平方根函数$sqrt()$的功能类似。 + +Listing 487给出了涡粘的输运方程。方程右边最后一项进行了扩展。 +$$ +\epsilon = \underbrace{\frac{\epsilon}{k}{k}}_{\texttt{fvm::Sp(epsilon/k, k)}} +$$ + + +``` +nut_ = Cmu_ * sqr(K_)/epsilon_ +``` + +**Listing 486: 涡粘的计算** + +``` +tmp kEqn +( + fvm::ddt(k_) + + fvm::div(phi_, k_) + - fvm::Sp(fvc::div(phi_), k_) + - fvm::laplacian(DkEff(), k_) +== + G + - fvm::Sp(epsilon_/k, k_) +); +``` + +**Listing 487: 湍动能输运方程** + +##### 构造函数 + + + +###### 59.2.2 *linearUpwind*格式 + +*linearUpwind*与*FLUENT*中二阶迎风格式等价。 + +###### 59.2.3 *QUICK*格式 + +*FLUENT*理论手册中指出: +在四边形和六面体网格中,能够识别出唯一的上游和下游面和单元,*ANSYS FLUENT*还提供了计算面处对流变量高阶值的*QUICK*格式。 + +###### 59.2.4 *MUSCL* 格式 + +##### 59.3连续性方程引起误差的修正 + +*OPENFOAM*中一些求解器的控制方程中,比如*twoPhaseEulerFoam*(*OpenFOAM-2.3.x*),我们发现了对于连续性方程一个特殊的修正。 + +###### 59.3.1 守恒形式 + +在分析之前,我们先仔细观察输运方程的守恒和非守恒形式。首先,我们回顾一下随体导数的定义: + +$$ +\frac{D}{Dt}=\frac{\partial}{\partial t}+(\boldsymbol{u} \cdot \nabla) +$$ + +对于任意标量K,有 + +$$ +\frac{DK}{Dt}=\frac{\partial K}{\partial t}+\boldsymbol{u} \cdot \nabla K +$$ + +**连续性方程** + +首先让我们观察连续性方程的微分形式 +守恒形式: + +$$ +\frac{\partial \rho}{\partial t}+\nabla \cdot (\rho \boldsymbol{u})=0 +$$ + +非守恒形式 + +$$ +\frac{D \rho}{D t}+\rho \nabla \cdot \boldsymbol{u}=0 +$$ + +这两种形式是等价的,因为我们可以通过一些简单的数学运算,轻易地将一个方程表示成另一个方程。 + +$$ +\frac{\partial \rho}{\partial t}+\nabla \cdot (\rho \boldsymbol{u})=0 +$$ + +$$ +\frac{\partial \rho}{\partial t}+\nabla \rho \cdot \boldsymbol{u}+\rho \nabla \cdot \boldsymbol{u} +$$ + +$$ +\underbrace{\frac{\partial \rho}{\partial t}+\boldsymbol{u} \cdot (\rho \boldsymbol{u})}_\text{\frac{D \rho}{D t}}+\rho \nabla \cdot \boldsymbol{u}=0 +$$ + +**输运方程** + +下一个例子中我们使用多相流问题中焓输运方程的右端项。本例由*OpenFOAM-2.3.x*中*twoPhaseEulerFoam*的能量方程导出。我们也可以用动量方程,但是,我们想避免因为速度的反复出现而引起的混淆。 + +我们从教科书或其他资源[7,6]中得到多相流的能量方程。为了简洁起见,我们只陈述方程的左边。我们查到的方程(Eqn.(205))碰巧是守恒形式。为了得到非守恒形式,我们现在对方程进行推导。 + +$$ +\frac{\partial \alpha_k \rho_kh_k}{\partial t}+\nabla \cdot (\alpha_k \rho_k\boldsymbol{u}_k h_k)=RHS +$$ + +通过对LHS求偏导,我们得到 + +$$ +\frac{\partial \alpha_k \rho_k}{\partial t}h_k+\alpha_k \rho_k \frac{\partial h_k}{\partial t}+h_k \nabla \cdot (\alpha_k \rho_k\boldsymbol{u}_k)+\alpha_k \rho_k\boldsymbol{u}_k \cdot \nabla h_k =RHS +$$ + +$$ +h_k \underbrace{\frac{\partial \alpha_k \rho_k}{\partial t}+\nabla \cdot (\alpha_k \rho_k \boldsymbol{u}_k)}_\text{\romannumeral1}+\alpha_k \rho_k \underbrace{(\frac{\partial h_k}{\partial t}+\boldsymbol{u}_k \cdot \nabla h_k)}_\text{\romannumeral2} =RHS +$$ + +我们现在观察Ⅰ项,通过连续性方程,其等于0。第Ⅱ项为$h_k$的随体导数。因此,我们可以得到方程(208),即非守恒形式的能量方程 + +$$ +\alpha_k \rho_k(\frac{\partial h_k}{\partial t}+\boldsymbol{u}_k \cdot \nabla h_k) = RHS +$$ + +$$ +\alpha_k \rho_k \frac{Dh_k}{Dt} = RHS +$$ + +我们仅对式(205)至式(208)的左边进行了变换,因此,守恒形式和非守恒形式的区别仅存在于方程的左边。 + +###### 59.3.2 连续性方程引起的离散误差 + +在理论和数学意义上,守恒形式和非守恒形式是等价的。然而,我们求解的方程并不是物理方程,而是对偏微分方程离散化后得到线性方程组。我们解出的线性方程组不一定直接代表初始偏微分方程。代数方程组的(精确)解与数学模型(偏微分方程)的(未知)解之间的差异通常被称为离散化误差[36]。 + +利用eqn.(205)和(208)并整理得: + +$$ +\frac{\partial \alpha_k \rho_kh_k}{\partial t}+\nabla \cdot (\alpha_k \rho_k\boldsymbol{u}_k h_k)=\alpha_k \rho_k (\frac{\partial h_k}{\partial t}+\boldsymbol{u}_k \cdot \nabla h_k) +h_k(\frac{\partial \alpha_k \rho_k}{\partial t}+\nabla \cdot (\alpha_k \rho_k\boldsymbol{u}_k)) +$$ + +$$ +\frac{\partial \alpha_k \rho_kh_k}{\partial t}+\nabla \cdot (\alpha_k \rho_k\boldsymbol{u}_k h_k)-h_k(\frac{\partial \alpha_k \rho_k}{\partial t}+\nabla \cdot (\alpha_k \rho_k\boldsymbol{u}_k))=\alpha_k \rho_k (\frac{\partial h_k}{\partial t}+\boldsymbol{u}_k \cdot \nabla h_k) +$$ + +我们现在要求解能量方程,选择非守恒形式式(208) + +$$ +\alpha_k \rho_k(\frac{\partial h_k}{\partial t}+\boldsymbol{u}_k \cdot \nabla h_k) = RHS +$$ + +利用式(211),我们可以得到 + +$$ +\frac{\partial \alpha_k \rho_kh_k}{\partial t}+\nabla \cdot (\alpha_k \rho_k\boldsymbol{u}_k h_k)-h_k(\frac{\partial \alpha_k \rho_k}{\partial t}+\nabla \cdot (\alpha_k \rho_k\boldsymbol{u}_k)) = RHS +$$ + +数学上,(208)和(212)是等价的。然而,当我们离散这两个方程以数值求解时,式(208)和(212)的左侧值可能不同,因为离散的连续性方程可能不等于零。 + +下面我们从数学的观点看一下*twoPhaseEulerFoam-2.3.x*的源代码。在*List481*中,我们看到了单相能量方程的第一项。关于完整的能量方程的讨论见第45.5节。 + +在*List481*的第3行和第4行中,我们看到了式(212)的左侧 + +``` + fvScalarMatrix he1Eqn + ( + fvm :: ddt ( alpha1 , rho1 , he1 ) + fvm :: div ( alphaRhoPhi1 , he1 ) + - fvm :: Sp ( contErr1 , he1 ) + /* other stuff*/ + ) ; +``` + +**Listing 480: *twoPhaseEulerFoam*求解器*EEqns.H*文件中能量方程的第一项** + +``` + volScalarField contErr1 + ( + fvc :: ddt ( alpha1 , rho1 ) + fvc :: div ( alphaRhoPhi1 ) + - ( fvOptions ( alpha1 , rho1 ) & rho1 ) + ) ; +``` + +**Listing 481: *twoPhaseEulerFoam.C*文件中的连续性误差的定义** + +再次观察式(212),并对不同项命名。在*List481*中,连续性错误的定义与式(212)略有不同。这是由于求解器考虑了相位源,参见*List481*的第4行。 + +$$ +\underbrace{\frac{\partial \alpha_k \rho_kh_k}{\partial t}}_\text{fvm::ddt(alpha1, rho1, he1)}+\underbrace{\nabla \cdot (\alpha_k \rho_k\boldsymbol{u}_k h_k)}_\text{fvm::div(alphaRhoPhi1, he1)}-\underbrace{h_k(\frac{\partial \alpha_k \rho_k}{\partial t}+\nabla \cdot (\alpha_k \rho_k\boldsymbol{u}_k))}_\text{contErr1} = RHS +$$ + + + + + -- Gitee From b8e3ff868ee8d5037e2c80f2eeb0e97dcbdfd9a4 Mon Sep 17 00:00:00 2001 From: 19810709 Date: Fri, 12 Feb 2021 01:07:46 +0800 Subject: [PATCH 6/9] correct something wrong about 60 and 61 files --- ...um_diffusion_in_an_incompressible_fluid.md | 179 +----------------- ...compressible k-epsilon turbulence model.md | 158 +--------------- 2 files changed, 2 insertions(+), 335 deletions(-) diff --git a/60.Momentum_diffusion_in_an_incompressible_fluid.md b/60.Momentum_diffusion_in_an_incompressible_fluid.md index 36afa05..bc815d7 100644 --- a/60.Momentum_diffusion_in_an_incompressible_fluid.md +++ b/60.Momentum_diffusion_in_an_incompressible_fluid.md @@ -83,181 +83,4 @@ $$ \texttt{divDevReff} = \nabla\cdot(dev(-\nu(\nabla{U} + (\nabla{U})^T)))\\ = \underbrace{-\nabla\cdot(\nu(\nabla{U}))}_{\texttt{laplacian(nu,U)}}-\underbrace{\nabla\cdot(\nu(\nabla{U})^T)}_{\texttt{div(nu*dev(T(grad(U))))}} $$ -由于数值原因动量扩散项通常为分为两个部分。 - -### 61 不可压缩$k-\epsilon$湍流模型 - -#### 61.1 文献中的$k-\epsilon$湍流模型 - -Wilcox[67]文献中给出单向流的$k-\epsilon$的控制方程 - -涡粘方程: -$$ -\mu_T=\rho C_{\mu}\frac{k^2}{\epsilon} -$$ -湍动能: -$$ -\rho\frac{\partial k}{\partial t}+\rho U_j\frac{\partial k}{\partial x_j} = \tau_{ij}\frac{\partial U_i}{\partial x_j} - \rho\epsilon+\frac{\partial}{\partial x_j}\left[(\mu+\frac{\mu_T}{\sigma_k})\frac{\partial k}{\partial x_j}\right] -$$ -湍耗散: -$$ -\rho\frac{\partial\epsilon}{\partial t} +\rho U_j\frac{\partial\epsilon}{\partial x_j} = C_{\epsilon 1}\frac{\epsilon}{k}\tau_{ij}\frac{\partial U_i}{\partial x_j}-C_{\epsilon 2}\rho\frac{\epsilon^2}{k}+\frac{\partial}{\partial x_j}\left[(\mu+\frac{\mu_T}{\sigma_k})\frac{\partial\epsilon}{\partial x_j}\right] -$$ -封闭系数: -$$ -C_{\epsilon 1} = 1.44, \quad C_{\epsilon 2} = 1.92, \quad C_{\mu} = 0.09, \quad \sigma_k=1.0, \quad \sigma_{\epsilon} = 1.3 -$$ -通过如下基本结构形式对$k$和$\epsilon$的输运方程重新组织: -$$ -\textrm{local derivative + convection + diffusion = source & sink terms} -$$ - - -###### 59.2.1 *upwind*格式 - -*://gitee.com/wo315/openFoamUserManual - -upwind*格式简单地将物理量在来流侧网格的体心值插值到网格表面。 -###### 59.2.2 *linearUpwind*格式 -*linearUpwind*与*FLUENT*中二阶迎风格式等价。 -###### 59.2.3 *QUICK*格式 -*FLUENT*理论手册中指出: -在四边形和六面体网格中,能够识别出唯一的上游和下游面和单元,*ANSYS FLUENT*还提供了计算面处对流变量高阶值的*QUICK*格式。 -###### 59.2.4 *MUSCL* 格式 -##### 59.3连续性方程引起误差的修正 -*OPENFOAM*中一些求解器的控制方程中,比如*twoPhaseEulerFoam*(*OpenFOAM-2.3.x*),我们发现了对于连续性方程一个特殊的修正。 -###### 59.3.1 守恒形式 -在分析之前,我们先仔细观察输运方程的守恒和非守恒形式。首先,我们回顾一下随体导数的定义: - -$$ -\frac{D}{Dt}=\frac{\partial}{\partial t}+(\boldsymbol{u} \cdot \nabla) -$$ - -对于任意标量K,有 - -$$ -\frac{DK}{Dt}=\frac{\partial K}{\partial t}+\boldsymbol{u} \cdot \nabla K -$$ - -**连续性方程** - -首先让我们观察连续性方程的微分形式 -守恒形式: - -$$ -\frac{\partial \rho}{\partial t}+\nabla \cdot (\rho \boldsymbol{u})=0 -$$ - -非守恒形式 - -$$ -\frac{D \rho}{D t}+\rho \nabla \cdot \boldsymbol{u}=0 -$$ - -这两种形式是等价的,因为我们可以通过一些简单的数学运算,轻易地将一个方程表示成另一个方程。 - -$$ -\frac{\partial \rho}{\partial t}+\nabla \cdot (\rho \boldsymbol{u})=0 -$$ - -$$ -\frac{\partial \rho}{\partial t}+\nabla \rho \cdot \boldsymbol{u}+\rho \nabla \cdot \boldsymbol{u} -$$ - -$$ -\underbrace{\frac{\partial \rho}{\partial t}+\boldsymbol{u} \cdot (\rho \boldsymbol{u})}_\text{\frac{D \rho}{D t}}+\rho \nabla \cdot \boldsymbol{u}=0 -$$ - -**输运方程** - -下一个例子中我们使用多相流问题中焓输运方程的右端项。本例由*OpenFOAM-2.3.x*中*twoPhaseEulerFoam*的能量方程导出。我们也可以用动量方程,但是,我们想避免因为速度的反复出现而引起的混淆。 - -我们从教科书或其他资源[7,6]中得到多相流的能量方程。为了简洁起见,我们只陈述方程的左边。我们查到的方程(Eqn.(205))碰巧是守恒形式。为了得到非守恒形式,我们现在对方程进行推导。 - -$$ -\frac{\partial \alpha_k \rho_kh_k}{\partial t}+\nabla \cdot (\alpha_k \rho_k\boldsymbol{u}_k h_k)=RHS -$$ - -通过对LHS求偏导,我们得到 - -$$ -\frac{\partial \alpha_k \rho_k}{\partial t}h_k+\alpha_k \rho_k \frac{\partial h_k}{\partial t}+h_k \nabla \cdot (\alpha_k \rho_k\boldsymbol{u}_k)+\alpha_k \rho_k\boldsymbol{u}_k \cdot \nabla h_k =RHS -$$ - -$$ -h_k \underbrace{\frac{\partial \alpha_k \rho_k}{\partial t}+\nabla \cdot (\alpha_k \rho_k \boldsymbol{u}_k)}_\text{\romannumeral1}+\alpha_k \rho_k \underbrace{(\frac{\partial h_k}{\partial t}+\boldsymbol{u}_k \cdot \nabla h_k)}_\text{\romannumeral2} =RHS -$$ - -我们现在观察Ⅰ项,通过连续性方程,其等于0。第Ⅱ项为$h_k$的随体导数。因此,我们可以得到方程(208),即非守恒形式的能量方程 - -$$ -\alpha_k \rho_k(\frac{\partial h_k}{\partial t}+\boldsymbol{u}_k \cdot \nabla h_k) = RHS -$$ - -$$ -\alpha_k \rho_k \frac{Dh_k}{Dt} = RHS -$$ - -我们仅对式(205)至式(208)的左边进行了变换,因此,守恒形式和非守恒形式的区别仅存在于方程的左边。 - -###### 59.3.2 连续性方程引起的离散误差 - -在理论和数学意义上,守恒形式和非守恒形式是等价的。然而,我们求解的方程并不是物理方程,而是对偏微分方程离散化后得到线性方程组。我们解出的线性方程组不一定直接代表初始偏微分方程。代数方程组的(精确)解与数学模型(偏微分方程)的(未知)解之间的差异通常被称为离散化误差[36]。 - -利用eqn.(205)和(208)并整理得: - -$$ -\frac{\partial \alpha_k \rho_kh_k}{\partial t}+\nabla \cdot (\alpha_k \rho_k\boldsymbol{u}_k h_k)=\alpha_k \rho_k (\frac{\partial h_k}{\partial t}+\boldsymbol{u}_k \cdot \nabla h_k) +h_k(\frac{\partial \alpha_k \rho_k}{\partial t}+\nabla \cdot (\alpha_k \rho_k\boldsymbol{u}_k)) -$$ - -$$ -\frac{\partial \alpha_k \rho_kh_k}{\partial t}+\nabla \cdot (\alpha_k \rho_k\boldsymbol{u}_k h_k)-h_k(\frac{\partial \alpha_k \rho_k}{\partial t}+\nabla \cdot (\alpha_k \rho_k\boldsymbol{u}_k))=\alpha_k \rho_k (\frac{\partial h_k}{\partial t}+\boldsymbol{u}_k \cdot \nabla h_k) -$$ - -我们现在要求解能量方程,选择非守恒形式式(208) - -$$ -\alpha_k \rho_k(\frac{\partial h_k}{\partial t}+\boldsymbol{u}_k \cdot \nabla h_k) = RHS -$$ - -利用式(211),我们可以得到 - -$$ -\frac{\partial \alpha_k \rho_kh_k}{\partial t}+\nabla \cdot (\alpha_k \rho_k\boldsymbol{u}_k h_k)-h_k(\frac{\partial \alpha_k \rho_k}{\partial t}+\nabla \cdot (\alpha_k \rho_k\boldsymbol{u}_k)) = RHS -$$ - -数学上,(208)和(212)是等价的。然而,当我们离散这两个方程以数值求解时,式(208)和(212)的左侧值可能不同,因为离散的连续性方程可能不等于零。 - -下面我们从数学的观点看一下*twoPhaseEulerFoam-2.3.x*的源代码。在*List481*中,我们看到了单相能量方程的第一项。关于完整的能量方程的讨论见第45.5节。 - -在*List481*的第3行和第4行中,我们看到了式(212)的左侧 - -``` - fvScalarMatrix he1Eqn - ( - fvm :: ddt ( alpha1 , rho1 , he1 ) + fvm :: div ( alphaRhoPhi1 , he1 ) - - fvm :: Sp ( contErr1 , he1 ) - /* other stuff*/ - ) ; -``` -**Listing 480: *twoPhaseEulerFoam*求解器*EEqns.H*文件中能量方程的第一项** -``` - volScalarField contErr1 - ( - fvc :: ddt ( alpha1 , rho1 ) + fvc :: div ( alphaRhoPhi1 ) - - ( fvOptions ( alpha1 , rho1 ) & rho1 ) - ) ; -``` -**Listing 481: *twoPhaseEulerFoam.C*文件中的连续性误差的定义** - -再次观察式(212),并对不同项命名。在*List481*中,连续性错误的定义与式(212)略有不同。这是由于求解器考虑了相位源,参见*List481*的第4行。 - -$$ -\underbrace{\frac{\partial \alpha_k \rho_kh_k}{\partial t}}_\text{fvm::ddt(alpha1, rho1, he1)}+\underbrace{\nabla \cdot (\alpha_k \rho_k\boldsymbol{u}_k h_k)}_\text{fvm::div(alphaRhoPhi1, he1)}-\underbrace{h_k(\frac{\partial \alpha_k \rho_k}{\partial t}+\nabla \cdot (\alpha_k \rho_k\boldsymbol{u}_k))}_\text{contErr1} = RHS -$$ - - - - - - +由于数值原因动量扩散项通常为分为两个部分。 \ No newline at end of file diff --git a/61.The incompressible k-epsilon turbulence model.md b/61.The incompressible k-epsilon turbulence model.md index 077030f..4117330 100644 --- a/61.The incompressible k-epsilon turbulence model.md +++ b/61.The incompressible k-epsilon turbulence model.md @@ -129,160 +129,4 @@ tmp kEqn **Listing 487: 湍动能输运方程** -##### 构造函数 - - - -###### 59.2.2 *linearUpwind*格式 - -*linearUpwind*与*FLUENT*中二阶迎风格式等价。 - -###### 59.2.3 *QUICK*格式 - -*FLUENT*理论手册中指出: -在四边形和六面体网格中,能够识别出唯一的上游和下游面和单元,*ANSYS FLUENT*还提供了计算面处对流变量高阶值的*QUICK*格式。 - -###### 59.2.4 *MUSCL* 格式 - -##### 59.3连续性方程引起误差的修正 - -*OPENFOAM*中一些求解器的控制方程中,比如*twoPhaseEulerFoam*(*OpenFOAM-2.3.x*),我们发现了对于连续性方程一个特殊的修正。 - -###### 59.3.1 守恒形式 - -在分析之前,我们先仔细观察输运方程的守恒和非守恒形式。首先,我们回顾一下随体导数的定义: - -$$ -\frac{D}{Dt}=\frac{\partial}{\partial t}+(\boldsymbol{u} \cdot \nabla) -$$ - -对于任意标量K,有 - -$$ -\frac{DK}{Dt}=\frac{\partial K}{\partial t}+\boldsymbol{u} \cdot \nabla K -$$ - -**连续性方程** - -首先让我们观察连续性方程的微分形式 -守恒形式: - -$$ -\frac{\partial \rho}{\partial t}+\nabla \cdot (\rho \boldsymbol{u})=0 -$$ - -非守恒形式 - -$$ -\frac{D \rho}{D t}+\rho \nabla \cdot \boldsymbol{u}=0 -$$ - -这两种形式是等价的,因为我们可以通过一些简单的数学运算,轻易地将一个方程表示成另一个方程。 - -$$ -\frac{\partial \rho}{\partial t}+\nabla \cdot (\rho \boldsymbol{u})=0 -$$ - -$$ -\frac{\partial \rho}{\partial t}+\nabla \rho \cdot \boldsymbol{u}+\rho \nabla \cdot \boldsymbol{u} -$$ - -$$ -\underbrace{\frac{\partial \rho}{\partial t}+\boldsymbol{u} \cdot (\rho \boldsymbol{u})}_\text{\frac{D \rho}{D t}}+\rho \nabla \cdot \boldsymbol{u}=0 -$$ - -**输运方程** - -下一个例子中我们使用多相流问题中焓输运方程的右端项。本例由*OpenFOAM-2.3.x*中*twoPhaseEulerFoam*的能量方程导出。我们也可以用动量方程,但是,我们想避免因为速度的反复出现而引起的混淆。 - -我们从教科书或其他资源[7,6]中得到多相流的能量方程。为了简洁起见,我们只陈述方程的左边。我们查到的方程(Eqn.(205))碰巧是守恒形式。为了得到非守恒形式,我们现在对方程进行推导。 - -$$ -\frac{\partial \alpha_k \rho_kh_k}{\partial t}+\nabla \cdot (\alpha_k \rho_k\boldsymbol{u}_k h_k)=RHS -$$ - -通过对LHS求偏导,我们得到 - -$$ -\frac{\partial \alpha_k \rho_k}{\partial t}h_k+\alpha_k \rho_k \frac{\partial h_k}{\partial t}+h_k \nabla \cdot (\alpha_k \rho_k\boldsymbol{u}_k)+\alpha_k \rho_k\boldsymbol{u}_k \cdot \nabla h_k =RHS -$$ - -$$ -h_k \underbrace{\frac{\partial \alpha_k \rho_k}{\partial t}+\nabla \cdot (\alpha_k \rho_k \boldsymbol{u}_k)}_\text{\romannumeral1}+\alpha_k \rho_k \underbrace{(\frac{\partial h_k}{\partial t}+\boldsymbol{u}_k \cdot \nabla h_k)}_\text{\romannumeral2} =RHS -$$ - -我们现在观察Ⅰ项,通过连续性方程,其等于0。第Ⅱ项为$h_k$的随体导数。因此,我们可以得到方程(208),即非守恒形式的能量方程 - -$$ -\alpha_k \rho_k(\frac{\partial h_k}{\partial t}+\boldsymbol{u}_k \cdot \nabla h_k) = RHS -$$ - -$$ -\alpha_k \rho_k \frac{Dh_k}{Dt} = RHS -$$ - -我们仅对式(205)至式(208)的左边进行了变换,因此,守恒形式和非守恒形式的区别仅存在于方程的左边。 - -###### 59.3.2 连续性方程引起的离散误差 - -在理论和数学意义上,守恒形式和非守恒形式是等价的。然而,我们求解的方程并不是物理方程,而是对偏微分方程离散化后得到线性方程组。我们解出的线性方程组不一定直接代表初始偏微分方程。代数方程组的(精确)解与数学模型(偏微分方程)的(未知)解之间的差异通常被称为离散化误差[36]。 - -利用eqn.(205)和(208)并整理得: - -$$ -\frac{\partial \alpha_k \rho_kh_k}{\partial t}+\nabla \cdot (\alpha_k \rho_k\boldsymbol{u}_k h_k)=\alpha_k \rho_k (\frac{\partial h_k}{\partial t}+\boldsymbol{u}_k \cdot \nabla h_k) +h_k(\frac{\partial \alpha_k \rho_k}{\partial t}+\nabla \cdot (\alpha_k \rho_k\boldsymbol{u}_k)) -$$ - -$$ -\frac{\partial \alpha_k \rho_kh_k}{\partial t}+\nabla \cdot (\alpha_k \rho_k\boldsymbol{u}_k h_k)-h_k(\frac{\partial \alpha_k \rho_k}{\partial t}+\nabla \cdot (\alpha_k \rho_k\boldsymbol{u}_k))=\alpha_k \rho_k (\frac{\partial h_k}{\partial t}+\boldsymbol{u}_k \cdot \nabla h_k) -$$ - -我们现在要求解能量方程,选择非守恒形式式(208) - -$$ -\alpha_k \rho_k(\frac{\partial h_k}{\partial t}+\boldsymbol{u}_k \cdot \nabla h_k) = RHS -$$ - -利用式(211),我们可以得到 - -$$ -\frac{\partial \alpha_k \rho_kh_k}{\partial t}+\nabla \cdot (\alpha_k \rho_k\boldsymbol{u}_k h_k)-h_k(\frac{\partial \alpha_k \rho_k}{\partial t}+\nabla \cdot (\alpha_k \rho_k\boldsymbol{u}_k)) = RHS -$$ - -数学上,(208)和(212)是等价的。然而,当我们离散这两个方程以数值求解时,式(208)和(212)的左侧值可能不同,因为离散的连续性方程可能不等于零。 - -下面我们从数学的观点看一下*twoPhaseEulerFoam-2.3.x*的源代码。在*List481*中,我们看到了单相能量方程的第一项。关于完整的能量方程的讨论见第45.5节。 - -在*List481*的第3行和第4行中,我们看到了式(212)的左侧 - -``` - fvScalarMatrix he1Eqn - ( - fvm :: ddt ( alpha1 , rho1 , he1 ) + fvm :: div ( alphaRhoPhi1 , he1 ) - - fvm :: Sp ( contErr1 , he1 ) - /* other stuff*/ - ) ; -``` - -**Listing 480: *twoPhaseEulerFoam*求解器*EEqns.H*文件中能量方程的第一项** - -``` - volScalarField contErr1 - ( - fvc :: ddt ( alpha1 , rho1 ) + fvc :: div ( alphaRhoPhi1 ) - - ( fvOptions ( alpha1 , rho1 ) & rho1 ) - ) ; -``` - -**Listing 481: *twoPhaseEulerFoam.C*文件中的连续性误差的定义** - -再次观察式(212),并对不同项命名。在*List481*中,连续性错误的定义与式(212)略有不同。这是由于求解器考虑了相位源,参见*List481*的第4行。 - -$$ -\underbrace{\frac{\partial \alpha_k \rho_kh_k}{\partial t}}_\text{fvm::ddt(alpha1, rho1, he1)}+\underbrace{\nabla \cdot (\alpha_k \rho_k\boldsymbol{u}_k h_k)}_\text{fvm::div(alphaRhoPhi1, he1)}-\underbrace{h_k(\frac{\partial \alpha_k \rho_k}{\partial t}+\nabla \cdot (\alpha_k \rho_k\boldsymbol{u}_k))}_\text{contErr1} = RHS -$$ - - - - - +##### 构造函数 \ No newline at end of file -- Gitee From e7285eb048a12b2bc619f3a78d06b46bbb4f8fb4 Mon Sep 17 00:00:00 2001 From: 19810709 Date: Fri, 12 Feb 2021 19:50:05 +0800 Subject: [PATCH 7/9] translate to 61.4 Modelling the production of turbulent kinetic energy --- ...compressible k-epsilon turbulence model.md | 139 +++++++++++++++++- 1 file changed, 138 insertions(+), 1 deletion(-) diff --git a/61.The incompressible k-epsilon turbulence model.md b/61.The incompressible k-epsilon turbulence model.md index 4117330..b43ac9f 100644 --- a/61.The incompressible k-epsilon turbulence model.md +++ b/61.The incompressible k-epsilon turbulence model.md @@ -129,4 +129,141 @@ tmp kEqn **Listing 487: 湍动能输运方程** -##### 构造函数 \ No newline at end of file +##### 构造函数 + +Listing488给出了$\texttt{kEpsilon}$类的构造函数第一行代码。该构造函数接收5个参数。分号后,为初始化列表。初始化列表包含模型常数的默认值。更多关于C++的细节可以参考56.5节。模型常数$C_{\mu}$在18行定义 + +``` +kEpsilon::kEpsilon +( + const volVectorField& U, + const surfaceScalarField& phi, + transportModel& transport, + const word& turbulenceModelName, + const word& modelName +) +: + RASModel(modelName, U, phi, transport, turbulenceModelName), + + Cmu_ + ( + dimensioned::lookupOrAddToDict + ( + "Cmu", + coeffDict_, + 0.09 + ) + ) + /* code continue */ +``` + +**Listing 488: kEpsilon类的构造函数 + +#### 61.3 $bubbleFoam$和$twoPhaseEulerFoam$中的$k-\epsilon$模型 + +$bubbleFoam$和$twoPhaseEulerFoam$两个求解器中已经植入了$k-\epsilon$模型,所以不能像OpenFOAM中其他求解器一样使用广义湍流模型。 + +关于色散两相流中的湍流模型仍然没有完全解答。但是有以下几种策略可供选择。 + +**Per phase**,每一项流体使用各自独立的湍流模型 + +**Mixture**,使用基于混合量的湍流模型。 + +**Liquid Phase**,使用基于液相数量的湍流模型。对于色散项可以忽略或者使用常数。 + +##### 61.3.1 控制方程 + +$bubbleFoam$和$twoPhaseEulerFoam$中的$k-\epsilon$湍流模型在某些方面与OpenFOAM的标准$k-\epsilon$模型有区别 + +1. 使用有效涡粘计算扩散常数。比较方程219,220和234,235 +2. 模型常数$\sigma_k$和$\sigma_{\epsilon}$用它们各自的对偶值代替。 +3. 与标准$k-\epsilon$模型不同,模型常数$\sigma_k$没有舍去。通过定义常数$\alpha_{1,k} = 1/\sigma_{k}$,来赋值$\sigma_{k}$ + +$bubbleFoam$和$twoPhaseEulerFoam$使用的湍流模型基于液相数量。气项湍流模型使用模型常数$C_t$。该常数连接液相湍流粘度和气项。如果该常数设为0,则忽略气相湍流模型。 + +涡粘 +$$ +\nu_{2,T} = C_{\mu}\frac{k^2}{\epsilon} +$$ + +$$ +\nu_{2,eff} = \nu_2 + \nu_{2,T} +$$ + +$$ +\nu_{1,eff} = \nu_{1} + C_t^2\nu_{2,T} +$$ + +湍动能,参考Listing487 +$$ +\frac{\partial k}{\partial t} + \nabla\cdot(\mathbf{U}_2k)-(\nabla\cdot\mathbf{U}_2)k-\nabla\cdot(\alpha_{1,k}\nu_{2,eff}\nabla k) = G - \epsilon +$$ + +$$ +\frac{\partial \epsilon}{\partial t} + \nabla\cdot(\mathbf{U}_2\epsilon)-(\nabla\cdot\mathbf{U}_2)\epsilon-\nabla\cdot(\alpha_{1,\epsilon}\nu_{2,eff}\nabla \epsilon) = C_1G\frac{1}{k} - C_2\frac{\epsilon^2}{k} +$$ + +扩散系数,注意不同定义 +$$ +\alpha_{1,k} = \frac{1}{\sigma_k} +$$ + +$$ +\alpha_{1,\epsilon} = \frac{1}{\sigma_{\epsilon}} +$$ + +$$ +D_k=\alpha_{1,k}\nu_{2,eff}=\frac{\nu_{2,eff}}{\sigma_k} +$$ + +$$ +D_{\epsilon} = \alpha_{1,\epsilon}\nu_{2,eff} = \frac{\nu_{2,eff}}{\sigma_{\epsilon}} +$$ + +##### 61.3.2 源代码 + +$bubbleFoam$和$twoPhaseEulerFoam$的输运方程其他内容可参考$\texttt{kEpsilon.H}$文件。Listing 489给出了$\texttt{kEpsilon.H}$文件中的重要代码。 + +``` +tmp tgradU2 = fvc::grad(U2); +vosScalarField G(2*nut2*tgradU2() && dev(symm(tgradU2())))); + +// Dissipation equation +fvScalarMatrix epsEqn +( + fvm::ddt(epsilon) + + fvm::div(phi2, epsilon) + - fvm::Sp(fvc::div(phi2), epsilon) + - fvm::laplacian + ( + alpha1Eps*nuEff2, epsilon, + "laplacian(DepsilonEff, epsilon)" + ) + == + C1*G*epsilon/k + - fvm::Sp(G2*epsilon/k, epsilon) +); + +// Turbulence kinetic energy equation +fvScalarMatrix eps +( + fvm::ddt(k) + + fvm::div(phi2, k) + - fvm::Sp(fvc::div(phi2), k) + - fvm::laplacian + ( + alpha1k*nuEff2, k, + "laplacian(DkEff, k)" + ) + == + G + - fvm::Sp(epsilon/k, k) +); + +//- Re-calculate turbulence viscosity +nut2 = Cmu*sqr(k)/epsilon; +``` + +**Listing 489: $bubbleFoam$和$twoPhaseEulerFoam$求解器的湍流输运方程** + +#### 61.4 湍动能生成率模型 \ No newline at end of file -- Gitee From 97bc64af6d704de797aa8819b27329981bec9396 Mon Sep 17 00:00:00 2001 From: 19810709 Date: Sat, 13 Feb 2021 02:29:47 +0800 Subject: [PATCH 8/9] finish 61.4.5 in 61.md --- ...compressible k-epsilon turbulence model.md | 127 +++++++++++++++++- 1 file changed, 125 insertions(+), 2 deletions(-) diff --git a/61.The incompressible k-epsilon turbulence model.md b/61.The incompressible k-epsilon turbulence model.md index b43ac9f..96574f0 100644 --- a/61.The incompressible k-epsilon turbulence model.md +++ b/61.The incompressible k-epsilon turbulence model.md @@ -41,7 +41,7 @@ $$ D_{\epsilon} = \mu + \frac{u_T}{\sigma_{\epsilon}} $$ -扩散项常数表达由扩散常数$D_k$和$D_{\epsilon}$合并组成。湍动能方程的右边第一项为湍动能生成率$G$ +扩散项常数表达由扩散常数$D_k$和$D_{\epsilon}$合并组成。湍动能方程的右边第一项为湍动能生成$G$ #### 61.2 OpenFOAM中$k-\epsilon$湍流模型 @@ -266,4 +266,127 @@ nut2 = Cmu*sqr(k)/epsilon; **Listing 489: $bubbleFoam$和$twoPhaseEulerFoam$求解器的湍流输运方程** -#### 61.4 湍动能生成率模型 \ No newline at end of file +#### 61.4 湍动能生成模型 + +在比较文献和源码中的湍流模型方程时,二者在湍动能生成定义上有着巨大的差别。 + +##### 61.4.1 文献和源码的定义 + +湍动能生成的定义不同。 + +H.Rusche[54]的论文中,$bubbleFoam$和$twoPhaseEulerFoam$基于 +$$ +P_b = 2\nu_{2,eff}(\nabla\mathbf{U}_b\cdot \textrm{dev}(\nabla\mathbf{U}_b+(\nabla{U}_b)^T)) +$$ +源码-*bubbleFoam*对应的文件$\texttt{kEpsilon.H}$中,参考Listing 489的第二行 +$$ +G = 2\nu_T(\nabla\mathbf{U}_2:\textrm{dev(sym}(\nabla\mathbf{U}_2))) +$$ +源码-标准$k-\epsilon$模型对应的文件$\texttt{kEpsilon.C}$中, +$$ +G=2\nu_T[\textrm{sym}(\nabla\mathbf{U})]^2 +$$ +Ferzinger Peric[35] +$$ +P = \mu_T\nabla\mathbf{U}:(\nabla\mathbf{U}+(\nabla\mathbf{U})^T) +$$ +Wilcox[67] +$$ +G=\mu_T\nabla\mathbf{U}:(\nabla\mathbf{U}+(\nabla\mathbf{U})^T) - \frac{2}{3}\rho k\mathbf{I}:\nabla\mathbf{U} +$$ +有些定义使用动力粘度,有些使用运动粘度。对于不可压流动,这不是主要的区别。 + +##### 61.4.2 粘度使用的差别 + +方程237是唯一使用有效粘度代替湍流粘度的。具体原因此处不表。 + +然而,在Fluent理论指南[7]中所描述那样,当对于$k-\epsilon$模型在高雷诺数的情况下,使用有效粘度计算生成项。但是指南也没有进一步指明什么是$k-\epsilon$模型的高雷诺数情况。 + +##### 61.4.3 符号 + +在61.4.1节定义使用向量形式描述相关内容。但是对于方程237,这样会有一点问题。 +$$ +P_b = 2\nu_{2,eff}(\nabla\mathbf{U}_b\cdot \textrm{dev}(\nabla\mathbf{U}_b+(\nabla{U}_b)^T)) +$$ + +其中,点积符号并不是向量内积。从量纲角度看,除非点积符号表示缩并。因此,该公式应该为: +$$ +P_b = 2\nu_{2,eff}(\nabla\mathbf{U}_b : \textrm{dev}(\nabla\mathbf{U}_b+(\nabla{U}_b)^T)) +$$ + +##### 61.4.4 文献中的定义 + +公式240和241的唯一差别为最后一项 +$$ +G=\mu_T\nabla\mathbf{U}:(\nabla\mathbf{U}+(\nabla\mathbf{U})^T) - \frac{2}{3}\rho k\mathbf{I}:\nabla\mathbf{U} +$$ +使用下面等式,缩并可以用内积代替 + + +$$ +\mathbf{I}:\nabla\mathbf{U} = \textrm{tr}(\nabla\mathbf{U}) = \nabla\cdot\mathbf{U} +$$ +对于不可压流体,通过连续性方程可以推出速度的散度为0 +$$ +\nabla \cdot\mathbf{U} = 0 +$$ + +$$ +G=\mu_T\nabla\mathbf{U}:(\nabla\mathbf{U}+(\nabla\mathbf{U})^T) - \underbrace{\frac{2}{3}\rho k\mathbf{I}:\nabla\mathbf{U}}_{=0} +$$ +所以对于不可压缩流动而言,方程240和241是相等的。那么现在我们可以方程240作为参考检验生成项定义的不同。 + +##### 61.4.5 Rusche和*bubbleFoam*的定义 + +*bubbleFoam*和*twoPhaseEulerFoam*求解器基于H.Rusche的论文。但是,它们生成项的定义不同。比较方程237和238 +$$ +P_b = 2\nu_{2,eff}(\nabla\mathbf{U}_b\cdot \textrm{dev}(\nabla\mathbf{U}_b+(\nabla{U}_b)^T)) +$$ + +$$ +G = 2\nu_T(\nabla\mathbf{U}_2:\textrm{dev(sym}(\nabla\mathbf{U}_2))) +$$ + +我们忽视连续项速度符号的不同 +$$ +\mathbf{U}_2 = \mathbf{U}_b +$$ +上述两个公式第二个缩并符号不同。可以问一句,下述公式是否成立 +$$ +\nabla\mathbf{U}_2:\textrm{dev(sym}(\nabla\mathbf{U}_2)) = \nabla\mathbf{U}_b\cdot \textrm{dev}(\nabla\mathbf{U}_b+(\nabla{U}_b)^T) +$$ +如果有下述等式,上面这个问题很好回答 +$$ +\textrm{dev}(\mathbf{T}) = \mathbf{T} - \frac{1}{3}\textrm{tr}(\mathbf{T}) +$$ + +$$ +\textrm{sym}(\mathbf{T}) = \frac{1}{2}(\mathbf{T} + (\mathbf{T})^T) +$$ + +$$ +\mathrm{dev(sym(\nabla\mathbf{U}_2))} = \mathrm{dev\bigg(\frac{1}{2}(\nabla\mathbf{U}_2 + (\nabla\mathbf{U}_2)^T)}\bigg) +$$ + +$$ +\mathrm{dev(sym(\nabla\mathbf{U}_2))} = \frac{1}{2}\mathrm{dev(\nabla\mathbf{U}_2 + (\nabla\mathbf{U}_2)^T)} +$$ + +$$ +\mathrm{dev(sym(\nabla\mathbf{U}_2))} = \underbrace{\frac{1}{2}\bigg(\mathrm{(\nabla\mathbf{U}_2 + (\nabla\mathbf{U}_2)^T)} - \frac{1}{3}\mathrm{tr}\mathrm{(\nabla\mathbf{U}_2 + \mathrm{(\nabla\mathbf{U}_2}})^T)\bigg)}_{=\mathrm{dev(\nabla\mathbf{U}_2 + (\nabla\mathbf{U}_2)^T)}} +$$ + +$$ +\mathrm{dev(sym(\nabla\mathbf{U}_2))} = \frac{1}{2}\mathrm{dev(\nabla\mathbf{U}_2 + (\nabla\mathbf{U}_2)^T)} +$$ + +这样就给出了答案 +$$ +\nabla\mathbf{U}_2:\textrm{dev(sym}(\nabla\mathbf{U}_2)) = \frac{1}{2}\nabla\mathbf{U}_b\cdot \textrm{dev}(\nabla\mathbf{U}_b+(\nabla\mathbf{U}_b)^T) +$$ +从源代码的定义中可以发现有两种不同的生成项定义 + +1. 使用不同的粘性系数,参考公式237和238 +2. 公式247和公式254差了2倍的系数。 + +这个差异的原因不明。H. Rusche参考的文献不在有效。 \ No newline at end of file -- Gitee From ad7dea4c5ad58549aca67e92c8d329dc4ace60cc Mon Sep 17 00:00:00 2001 From: 19810709 Date: Sat, 13 Feb 2021 02:34:41 +0800 Subject: [PATCH 9/9] =?UTF-8?q?modify=20the=20=E7=BF=BB=E8=AF=91=E7=AB=A0?= =?UTF-8?q?=E8=8A=82=E8=AE=A4=E9=A2=86.md,=20=E6=97=B6=E9=97=B4=E6=9C=89?= =?UTF-8?q?=E9=99=90=E4=B8=8D=E8=83=BD=E9=A2=86=E5=8F=96=E5=A4=AA=E5=A4=9A?= =?UTF-8?q?=E3=80=82=E7=BF=BB=E8=AF=9160-63?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- ...21\347\253\240\350\212\202\350\256\244\351\242\206.md" | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git "a/\347\277\273\350\257\221\347\253\240\350\212\202\350\256\244\351\242\206.md" "b/\347\277\273\350\257\221\347\253\240\350\212\202\350\256\244\351\242\206.md" index d542e0f..099c859 100644 --- "a/\347\277\273\350\257\221\347\253\240\350\212\202\350\256\244\351\242\206.md" +++ "b/\347\277\273\350\257\221\347\253\240\350\212\202\350\256\244\351\242\206.md" @@ -49,8 +49,8 @@ ### 39 The fvOption framework . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . skf0558 ### 40 The Lagrangian world 199 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . shujingshao ## V Solver 209 shujingshao -### **41 Solution Algorithms 209 wangyang -### **42 pimpleFoam 212 wangyang +### **41 Solution Algorithms 209 +### **42 pimpleFoam 212 ### **43 rhoPimpleFoam 219 ### **44 twoPhaseEulerFoam 220** ### **45 twoPhaseEulerFoam-2.3 226** @@ -76,8 +76,8 @@ ### 61 **The incompressible k- turbulence model 349* wangyang ### 62 **Some theory behind the scenes of LES 357** wangyang ### 63 **The use of phi 362** wangyang -### 64 **Derivation of the IATE diameter model 365** wangyang -### 65 **Derivation of the MRF approach 376** wangyang +### 64 **Derivation of the IATE diameter model 365** +### 65 **Derivation of the MRF approach 376** ## X Appendix 381 ### 66 **Useful Linux commands 381 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . xfygogo ### 67 **Archive data 386 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . xfygogo -- Gitee