SlideShare une entreprise Scribd logo
1  sur  50
Télécharger pour lire hors ligne
Fumiya Nozaki
最終更新日: 2015年4月26日
日本語版
OpenFOAM
乱流モデル
Turbulence Models
2
Chapter 1.
OpenFOAM の乱流モデル
3
乱流モデルのソースコードのディレクトリ
 乱流モデルのソースコードのディレクトリ:
$FOAM_SRC/turbulenceModels
非圧縮性流れ計算用のモデル
圧縮性流れ計算用のモデル
4
乱流モデルのソースコードのディレクトリ
 非圧縮性流れ計算用の乱流モデル:
$FOAM_SRC/turbulenceModels/incompressible
• RAS ディレクトリ
Reynolds-averaged Navier-Stokes (RANS) の各モデルのクラスの
ソースファイル (~.C) とヘッダファイル (~.H) が格納されています.
• LES ディレクトリ
Large eddy simulation (LES) の各モデルのクラスの
ソースファイルとヘッダファイルが格納されています.
 圧縮性流れ計算用の乱流モデル:
$FOAM_SRC/turbulenceModels/compressible
• RAS ディレクトリ
Reynolds-averaged Navier-Stokes (RANS) の各モデルのクラスの
ソースファイル (~.C) とヘッダファイル (~.H) が格納されています.
• LES ディレクトリ
Large eddy simulation (LES) の各モデルのクラスの
ソースファイルとヘッダファイルが格納されています.
5
乱流モデルのソースコードのディレクトリ
6
使用可能な乱流モデル
 ソルバーにより,使用できる乱流モデルが異なります.
• RANS モデルのみ使用可能なソルバー
• RANS モデルに加えて,LES モデルも使用可能なソルバー
simpleFoam, SRFSimpleFoam, boundaryFoam,
porousSimpleFoam, buoyantSimpleFoam,
buoyantBoussinesqSimpleFoam,
buoyantBoussinesqPimpleFoam, and other solvers
pimpleFoam, pimpleDyMFoam, SRFPimpleFoam,
pisoFoam, buoyantPimpleFoam,
chtMultiRegionFoam, chtMultiRegionSimpleFoam,
and other solvers
7
使用可能な乱流モデル
 ソルバーがどちらのタイプかは,ほとんどの場合,
createFields.H ファイルの以下の記述で確認できます.
• RANS モデルのみ使用可能なソルバー
• RANS モデルに加えて,LES モデルも使用可能なソルバー
autoPtr<incompressible::turbulenceModel> turbulence
(
incompressible::turbulenceModel::New(U, phi, laminarTransport)
);
autoPtr<incompressible::RASModel> turbulence
(
incompressible::RASModel::New(U, phi, laminarTransport)
);
8
乱流モデルの設定ファイル
 2つのタイプのソルバーでは,使用する乱流モデルの指定に必要な
設定ファイルが異なります.
• RANS モデルのみ使用可能なソルバーの場合
- constant/RASProperties のみ必要
• RANS モデルに加えて,LES モデルも使用可能なソルバーの場合
- constant/turbulenceProperties
RANS 計算(RASModel),LES 計算(LESModel),層流計算(laminar)
のどの計算を行うのかをこのファイルで指定します.
加えて
- constant/LESProperties (LES 計算を行う場合に必要)
- constant/RASProperties (RANS 計算を行う場合に必要)
層流計算の場合には,constant/turbulenceProperties のみ必要です.
9
乱流モデルの設定ファイル:turbulenceProperties
/*--------------------------------*- C++ -*----------------------------------*¥
| ========= | |
| ¥¥ / F ield | OpenFOAM: The Open Source CFD Toolbox |
| ¥¥ / O peration | Version: 2.3.0 |
| ¥¥ / A nd | Web: www.OpenFOAM.org |
| ¥¥/ M anipulation | |
¥*---------------------------------------------------------------------------*/
FoamFile
{
version 2.0;
format ascii;
class dictionary;
location "constant";
object turbulenceProperties;
}
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
simulationType RASModel;
// ************************************************************************* //
 simulationType RASModel
 simulationType LESModel
 simulationType laminar
: RANS 計算の場合
: LES 計算の場合
: 層流計算の場合
10
乱流モデルの設定ファイル:RASProperties
/*--------------------------------*- C++ -*----------------------------------*¥
| ========= | |
| ¥¥ / F ield | OpenFOAM: The Open Source CFD Toolbox |
| ¥¥ / O peration | Version: 2.3.0 |
| ¥¥ / A nd | Web: www.OpenFOAM.org |
| ¥¥/ M anipulation | |
¥*---------------------------------------------------------------------------*/
FoamFile
{
version 2.0;
format ascii;
class dictionary;
location "constant";
object RASProperties;
}
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
RASModel kEpsilon;
turbulence on;
printCoeffs on;
// ************************************************************************* //
• RASModel: 計算に使用する RANS モデルを指定
• turbulence: 乱流計算 (on) と層流計算 (off) の
切り替え
• printCoeffs: ソルバー開始時にモデル定数を
ターミナルへ標準出力するか否かのコントロール
/*--------------------------------*- C++ -*----------------------------------*¥
| ========= | |
| ¥¥ / F ield | OpenFOAM: The Open Source CFD Toolbox |
| ¥¥ / O peration | Version: 2.3.0 |
| ¥¥ / A nd | Web: www.OpenFOAM.org |
| ¥¥/ M anipulation | |
¥*---------------------------------------------------------------------------*/
FoamFile
{
version 2.0;
format ascii;
class dictionary;
location "constant";
object RASProperties;
}
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
RASModel hogehoge;
turbulence on;
printCoeffs on;
// ************************************************************************* //
11
RANS モデルのリストの表示
 RASModel に適当な名前を指定して,ソルバーを実行すると,
使用可能な RANS モデルのリストを表示してくれます.
次のページに続きます.
12
RANS モデルのリストの表示
--> FOAM FATAL ERROR:
Unknown RASModel type hogehoge
Valid RASModel types:
18
(
LRR
LamBremhorstKE
LaunderGibsonRSTM
LaunderSharmaKE
LienCubicKE
LienCubicKELowRe
LienLeschzinerLowRe
NonlinearKEShih
RNGkEpsilon
SpalartAllmaras
kEpsilon
kOmega
kOmegaSST
kkLOmega
laminar
qZeta
realizableKE
v2f
)
例えば,simpleFoam の場合,
非圧縮流れ計算用の RANS モデル が 18種類
選択可能であることが分かります.
laminar は,層流計算用なので,
実質 17 種類のモデルです.
13
モデル定数
 それぞれの乱流モデルには,モデル定数が定義されています.
 例えば,非圧縮性流れ計算用の 標準 k-ε モデル (kEpsilon) の場合
 ソースコードにデフォルト値が定義されています:
$FOAM_SRC/turbulenceModels/incompressible/RAS/kEpsilon
𝑅 𝑘 = 𝑣𝑗
𝜕𝑘
𝜕𝑥𝑗
−
𝜕
𝜕𝑥𝑗
𝜈 +
𝜈𝑡
𝜎 𝑘
𝜕𝑘
𝜕𝑥𝑗
− 𝑃𝑘 + 𝜀 = 0
𝑅 𝜀 = 𝑣𝑗
𝜕𝜀
𝜕𝑥𝑗
−
𝜕
𝜕𝑥𝑗
𝜈 +
𝜈𝑡
𝜎𝜀
𝜕𝜀
𝜕𝑥𝑗
− 𝑐1 𝑃𝑘
𝜀
𝑘
+ 𝑐2
𝜀2
𝑘
= 0
𝜈𝑡 = 𝑐 𝜇
𝑘2
𝜀
:OpenFOAMでの変数名
C1 C2Cmu
sigmaEps
14
モデル定数の確認
 設定ファイル RASProperties において,printCoeffs の設定を on にする
ことで,ソルバー実行時にモデル定数値を標準出力できます.
Create time
Create mesh for time = 0
Reading field p
Reading field U
Reading/calculating face flux field phi
Selecting incompressible transport model Newtonian
Selecting RAS turbulence model kEpsilon
kEpsilonCoeffs
{
Cmu 0.09;
C1 1.44;
C2 1.92;
sigmaEps 1.4;
}
No finite volume options present
15
モデル定数の編集
 モデル定数をデフォルト値から変更したい場合
1. 前ページのようにデフォルト値を表示させて、
2. これを RASProperties ファイルにコピー & ペーストして,
3. デフォルト値から変更したい変数の値を編集
FoamFile
{
version 2.0;
format ascii;
class dictionary;
location "constant";
object RASProperties;
}
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
RASModel kEpsilon;
turbulence on;
printCoeffs on;
kEpsilonCoeffs
{
Cmu 0.09;
C1 1.44;
C2 1.92;
sigmaEps 1.4;
}
// ************************************************************************* //
デフォルト値は、
標準的な値が設定されているので
変更が必要な機会は
あまり多くないかもしれません.
16
Chapter 2.
RANS モデルのクラスの設計
17
乱流モデルのクラスの関係
/*---------------------------------------------------------------------------*¥
Class kEpsilon Declaration
¥*---------------------------------------------------------------------------*/
class kEpsilon
:
public RASModel
{
protected:
// Protected data
// Model coefficients
dimensionedScalar Cmu_;
dimensionedScalar C1_;
dimensionedScalar C2_;
dimensionedScalar sigmaEps_;
派生クラス名
基底クラス名
 kEpsilon クラスは,RASModel クラスの派生クラスです.
 kOmega クラスなど,その他の RANS モデルのクラスも
RASModel の派生クラスです.
RASModel
kEpsilon
親クラス
子クラス
継承
18
kEpsilon クラスのメンバ
 kEpsilon クラスのメンバ
• データメンバ
- モデル定数 (Cmu_,C1_,C2_,sigmaEps_)
- 乱流変数 (k_,epsilon_,nut_)
- Runtime タイプ名
• コンストラクタ,デストラクタ
• メンバ関数
- DkEff(),DepsilonEff(): 乱流変数の拡散係数
- R(): レイノルズ応力テンソル
- divDevReff(volVectorField& U): 拡散項の離散化
- correct(): 乱流変数 𝑘 と 𝜀 の輸送方程式を解いて,
渦粘性係数 𝜈𝑡 を計算
など
19
メンバ関数: correct()
 RANS モデルにより,渦粘性係数の計算方法は異なります.
 turbulenceModel クラスは,correct() を純粋仮想関数として定義した
抽象クラスです.
RASModel
kEpsilon
継承
turbulence
Model
継承
virtual void correct() = 0;
void turbulenceModel::correct()
{
transportModel_.correct();
if (mesh_.changing())
{
y_.correct();
}
}
20
メンバ関数: correct()
 RANS モデルにより,渦粘性係数の計算方法は異なります.
 RASModel クラスでも,correct() を仮想関数として定義しています.
virtual void correct();
void RASModel::correct()
{
turbulenceModel::correct();
}
RASModel
kEpsilon
継承
turbulence
Model
継承
21
メンバ関数: correct()
 RANS モデルにより,渦粘性係数の計算方法は異なります.
 基底クラスの仮想関数 correct() を再定義することにより,
RANS モデルの渦粘性計算をカスタマイズしています.
void kEpsilon::correct()
{
RASModel::correct();
if (!turbulence_)
{
return;
}
volScalarField G(GName(), nut_*2*magSqr(symm(fvc::grad(U_))));
// Update epsilon and G at the wall
epsilon_.boundaryField().updateCoeffs();
// Dissipation equation
tmp<fvScalarMatrix> epsEqn
(
fvm::ddt(epsilon_)
+ fvm::div(phi_, epsilon_)
- fvm::laplacian(DepsilonEff(), epsilon_)
==
C1_*G*epsilon_/k_
- fvm::Sp(C2_*epsilon_/k_, epsilon_)
);
epsEqn().relax();
epsEqn().boundaryManipulate(epsilon_.boundaryField());
solve(epsEqn);
bound(epsilon_, epsilonMin_);
(以下省略)
RASModel
kEpsilon
継承
turbulence
Model
継承
22
Chapter 3.
乱流モデルのカスタマイズ
23
カスタマイズの手順
 Chalmers 大学の Håkan Nilsson 先生の資料 [1] の手順でカスタマイズが
可能です.
 ここでは,この資料の手順にしたがって kEpsilon モデルのカスタマイズを
行ってみます.
 kEpsilon モデルのソースコードをコピーします.
$ cd $WM_PROJECT_DIR
$ cp -r --parents src/turbulenceModels/incompressible/RAS/kEpsilon ¥
> $WM_PROJECT_USER_DIR
$ cd $WM_PROJECT_USER_DIR/src/turbulenceModels/incompressible/RAS
$ mv kEpsilon mykEpsilon
補足説明
• 入力コマンドが長くなる場合には,バックスラッシュ『¥』で改行を行い,
コマンド入力を複数行に分けることができます.
• WM_PROJECT_USER_DIR などの OpenFOAM の環境変数は,
etc/bashrc ファイルで定義されています.
24
カスタマイズの手順
 $FOAM_SRC/turbulenceModels/incompressible/RAS/Make を参考にし
て,ビルドに必要な Make/files と Make/options ファイルを準備します.
 Make ディレクトリを作成します.
$ mkdir Make
 Make ディレクトリの下に files という名前のファイルを作成します.この
ファイルに,次の2行を記述して保存します.
mykEpsilon/mykEpsilon.C
LIB = $(FOAM_USER_LIBBIN)/libmyIncompressibleRASModels
25
カスタマイズの手順
 Make ディレクトリの下に options という名前のファイルを作成します.
このファイルには,以下のように記述します.
EXE_INC = ¥
-I$(LIB_SRC)/turbulenceModels ¥
-I$(LIB_SRC)/transportModels ¥
-I$(LIB_SRC)/finiteVolume/lnInclude ¥
-I$(LIB_SRC)/meshTools/lnInclude ¥
-I$(LIB_SRC)/turbulenceModels/incompressible/RAS/lnInclude
LIB_LIBS = ¥
-lincompressibleTurbulenceModel ¥
-lfiniteVolume ¥
-lmeshTools
 ソースコードのファイル名を Make/files の記述に合わせて修正します.
$ cd mykEpsilon
$ mv kEpsilon.C mykEpsilon.C
$ mv kEpsilon.H mykEpsilon.H
$ rm kEpsilon.dep
26
カスタマイズの手順
 ソースコード内のクラス名を修正します.
$ sed -i -e "s/kEpsilon/mykEpsilon/g" mykEpsilon.C
$ sed -i -e "s/kEpsilon/mykEpsilon/g" mykEpsilon.H
 (オプション) カスタマイズしたモデルを使用している目印を作成します.
mysimpleFoam.C ファイルに次の1行を加えます.
補足説明
• sed コマンドの –i オプションで,対象ファイルの上書き編集が可能です.
{
Info << "Defining my own kEpsilon model" << endl;
bound(k_, kMin_);
bound(epsilon_, epsilonMin_);
nut_ = Cmu_*sqr(k_)/epsilon_;
nut_.correctBoundaryConditions();
printCoeffs();
}
27
カスタマイズの手順
 その他必要なカスタマイズを行います.
 コンパイルして,動的リンクライブラリを作成します.
$ cd ../
$ wmake libso
User Guide [2] 75ページ
28
カスタマイズの手順
 次のような表示があれば,コンパイル成功です.
(省略)
/platforms/linux64GccDPDebug/lib/libmyIncompressibleRASModels.so
' is up to date.
以上が,乱流モデルのカスタマイズの手順です.
29
カスタマイズした乱流モデルの使用
 カスタマイズした乱流モデルの使用
 system/controlDict ファイルに次の行を加えます.
FoamFile
{
version 2.0;
format ascii;
class dictionary;
location "system";
object controlDict;
}
// * * * * * * * * * * * * * * * * * * * * * * * * * * //
libs ("libmyIncompressibleRASModels.so");
application simpleFoam;
startFrom latestTime;
30
カスタマイズした乱流モデルの使用
 設定ファイル RASProperties において,RASModel に mykEpsilon を指
定することでカスタマイズした乱流モデルを使用できます.
 RASModel に適当な名前を指定して
ソルバーを実行してみると,
新しいモデルがリストに
加わっているのが確認できます.
--> FOAM FATAL ERROR:
Unknown RASModel type hogehoge
Valid RASModel types:
19
(
LRR
LamBremhorstKE
LaunderGibsonRSTM
LaunderSharmaKE
LienCubicKE
LienCubicKELowRe
LienLeschzinerLowRe
NonlinearKEShih
RNGkEpsilon
SpalartAllmaras
kEpsilon
kOmega
kOmegaSST
kkLOmega
laminar
mykEpsilon
qZeta
realizableKE
v2f
)
31
Chapter 4. RANS モデル
Launder-Sharma low-Re k-𝜀 モデル
32
支配方程式
𝜕𝑘
𝜕𝑡
+
𝜕 𝑢𝑗 𝑘
𝜕𝑥𝑗
−
𝜕
𝜕𝑥𝑗
𝜈 + 𝜈𝑡
𝜕𝑘
𝜕𝑥𝑗
= 𝑃𝑘 − 𝜀 − 𝐷
𝜕𝜀
𝜕𝑡
+
𝜕 𝑢𝑗 𝜀
𝜕𝑥𝑗
−
𝜕
𝜕𝑥𝑗
𝜈 +
𝜈𝑡
𝜎𝜀
𝜕𝜀
𝜕𝑥𝑗
= 𝑐1 𝑓1 𝑃𝑘
𝜀
𝑘
− 𝑐2 𝑓2
𝜀2
𝑘
+ 𝐸
ここで
𝜈𝑡 = 𝑐 𝜇 𝑓𝜇
𝑘2
𝜀
𝑃𝑘 = 𝜈𝑡
𝜕𝑢𝑖
𝜕𝑥𝑗
+
𝜕𝑢𝑗
𝜕𝑥𝑖
𝜕𝑢𝑖
𝜕𝑥𝑗
, 𝐷 = 2𝜈
𝜕 𝑘
𝜕𝑥𝑗
2
, 𝐸 = 2𝜈𝜈𝑡
𝜕2 𝑢 𝑘
𝜕𝑥𝑖 𝜕𝑥𝑗
2
𝑓𝜇 = exp
−3.4
1 +
𝑅𝑒𝑡
50
2 , 𝑓1 = 1, 𝑎𝑓2 = 1 − 0.3exp −𝑅𝑒𝑡
2
, 𝑅𝑒𝑡 =
𝑘2
𝜈𝜀
渦粘性係数
Damping
functions
𝜀 = 𝜀 − 𝐷
33
モデル定数
モデル定数 OpenFOAMの表記 デフォルト値
𝑐 𝜇 Cmu 0.09
𝑐1 C1 1.44
𝑐2 C2 1.92
σ 𝜀 sigmaEps 1.3
34
モデルに関して
 通常のエネルギー散逸率 𝜀 の代わりに,𝜀 についての方程式を解きます.
𝐷 の壁面での値が,𝜀 の壁面での値に等しいので,変数 𝜀 = 𝜀 − 𝐷 の壁面で
の値は,𝜀 = 0 となり,壁面上の境界条件が取り扱いやすくなります.
 高 Re 型のモデルには無い項 𝐸 が追加されている理由
Its inclusion is simply due to the fact that without it the peak level of
turbulence kinetic energy at y+ ≈ 20 did not accord with experiment.
Several other forms were tried including choosing f1 to be a function
of Reynolds number. The form quoted is however, the only one which
generated the desired profile of k near the wall.
これによると,
壁近傍での乱流エネルギー k の分布が実験と合うように,導入されている項
のようです.
文献 [4]
35
モデルに関して
 Damping 関数の分布
拡大
36
OpenFOAM の実装|𝑘 の輸送方程式
𝜕𝑘
𝜕𝑡
+
𝜕 𝑢𝑗 𝑘
𝜕𝑥𝑗
−
𝜕
𝜕𝑥𝑗
𝜈 + 𝜈𝑡
𝜕𝑘
𝜕𝑥𝑗
= 𝑃𝑘 − 𝜀 − 𝐷
数式 OpenFOAM
𝜕𝑘
𝜕𝑡
fvm::ddt(k_)
𝜕 𝑢𝑗 𝑘
𝜕𝑥𝑗
fvm::div(phi_, k_)
−
𝜕
𝜕𝑥𝑗
𝜈 + 𝜈𝑡
𝜕𝑘
𝜕𝑥𝑗
- fvm::laplacian(DkEff(), k_)
𝑃𝑘 G
−𝜀 − 𝐷 - fvm::Sp((epsilonTilda_ + D)/k_, k_)
37
OpenFOAM の実装|𝜀 の輸送方程式
𝜕𝜀
𝜕𝑡
+
𝜕 𝑢𝑗 𝜀
𝜕𝑥𝑗
−
𝜕
𝜕𝑥𝑗
𝜈 +
𝜈𝑡
𝜎𝜀
𝜕𝜀
𝜕𝑥𝑗
= 𝑐1 𝑃𝑘
𝜀
𝑘
− 𝑐2 𝑓2
𝜀2
𝑘
+ 𝐸
数式 OpenFOAM
𝜕𝜀
𝜕𝑡
fvm::ddt(epsilonTilda_)
𝜕 𝑢𝑗 𝜀
𝜕𝑥𝑗
fvm::div(phi_, epsilonTilda_)
−
𝜕
𝜕𝑥𝑗
𝜈 +
𝜈𝑡
𝜎𝜀
𝜕𝜀
𝜕𝑥𝑗
- fvm::laplacian(DepsilonEff(),
epsilonTilda_)
𝑐1 𝑃𝑘
𝜀
𝑘
C1_*G*epsilonTilda_/k_
−𝑐2 𝑓2
𝜀2
𝑘
- fvm::Sp(C2_*f2()*epsilonTilda_/k_,
epsilonTilda_)
𝐸 E
38
OpenFOAM の実装|乱流変数の輸送方程式
 前の2ページの離散化を注意深く見ると,右辺の項で,fvm::Sp が使われて
いる項といない項があるのが分かります.
• 符号がマイナスの項 fvm::Sp を使用している
• 符号がプラスの項 fvm::Sp を使用していない
 今考えている方程式では,右辺でマイナス符号が付いている項を左辺に移項
すると係数行列の対角成分を大きくする効果があるので,陰的に扱うために,
fvm::Sp を使用しています.
 連立方程式を反復法で解く場合,係数行列の対角成分が大きい方が解きやす
いため,このような工夫を行っています.
 fvm::Sp の詳細は,こちらのスライドの 80 ページをご覧ください.
39
OpenFOAM の実装|Damping functions
𝑓𝜇 = exp
−3.4
1 +
𝑅𝑒𝑡
50
2 , 𝑓2 = 1 − 0.3exp −𝑅𝑒𝑡
2
, 𝑅𝑒𝑡 =
𝑘2
𝜈𝜀
LaunderSharmaKE.C
40
OpenFOAM の実装|乱流エネルギーの生産率の計算
𝐺 = 2𝜈𝑡
1
2
𝜕𝑢𝑖
𝜕𝑥𝑗
+
𝜕𝑢𝑗
𝜕𝑥𝑖
2
=
𝜈𝑡
2
𝜕𝑢𝑖
𝜕𝑥𝑗
𝜕𝑢𝑖
𝜕𝑥𝑗
+
𝜕𝑢𝑗
𝜕𝑥𝑖
𝜕𝑢𝑗
𝜕𝑥𝑖
+ 2
𝜕𝑢𝑖
𝜕𝑥𝑗
𝜕𝑢𝑗
𝜕𝑥𝑖
= 𝜈𝑡
𝜕𝑢𝑖
𝜕𝑥𝑗
+
𝜕𝑢𝑗
𝜕𝑥𝑖
𝜕𝑢𝑖
𝜕𝑥𝑗
= 𝑃𝑘
乱流エネルギーの生産率の表現
LaunderSharmaKE.C
41
OpenFOAM の実装|D 項と E 項の計算
𝐷 = 2𝜈
𝜕 𝑘
𝜕𝑥𝑗
2
, 𝐸 = 2𝜈𝜈𝑡
𝜕2
𝑢 𝑘
𝜕𝑥𝑖 𝜕𝑥𝑗
2
LaunderSharmaKE.C
 E 項は,各 𝑘 = 0,1,2 について,次のヘッセ行列の magSqr の和を計算して
います(magSqrGradGrad,次ページ).
𝛻 𝛻𝑢 𝑘 =
𝜕2 𝑢 𝑘
𝜕𝑥0 𝜕𝑥0
𝜕2 𝑢 𝑘
𝜕𝑥0 𝜕𝑥1
𝜕2 𝑢 𝑘
𝜕𝑥0 𝜕𝑥2
𝜕2 𝑢 𝑘
𝜕𝑥1 𝜕𝑥0
𝜕2 𝑢 𝑘
𝜕𝑥1 𝜕𝑥1
𝜕2 𝑢 𝑘
𝜕𝑥1 𝜕𝑥2
𝜕2 𝑢 𝑘
𝜕𝑥2 𝜕𝑥0
𝜕2 𝑢 𝑘
𝜕𝑥2 𝜕𝑥1
𝜕2 𝑢 𝑘
𝜕𝑥2 𝜕𝑥2
42
OpenFOAM の実装|magSqrGradGrad
fvcMagSqrGradGrad.C
43
Turbulent Flat Plate|流速分布
𝑢+ =
𝑢
𝑢 𝜏
𝑦+ =
𝑦𝑢 𝜏
𝜈
 Turbulent Flat Plate [5] で検証
Spalding 則については
こちらのスライドの 23 ページ
44
Turbulent Flat Plate|𝑘+
分布
𝑘+ =
𝑘
𝑢 𝜏
2
45
Turbulent Flat Plate|𝜀+
分布
𝜀+ =
𝜀𝜈
𝑢 𝜏
4
46
𝜀+
分布に関して補足
 前ページの図を見ると,対数則領域において,おおよそ次の関係が成り立っ
ているのが分かります.
𝜀+ =
𝜀𝜈
𝑢 𝜏
4
=
1
𝜅𝑦+
 これは次式のように変形できます.
𝜀 =
𝑢 𝜏
3
𝜅𝑦
 この式に, 𝑢 𝜏 = 𝐶𝜇
1 4
𝑘 という関係式を代入すれば,壁関数を使用した場合
の境界条件 (epsilonWallFunction) で使用している関係式が得られます.
𝜀 𝑃 =
𝐶𝜇
3 4
𝑘 𝑃
3 2
𝜅𝑦 𝑃
47
Turbulent Flat Plate|k 方程式の項のバランス
𝜕𝑘
𝜕𝑡
+
𝜕 𝑢𝑗 𝑘
𝜕𝑥𝑗
−
𝜕
𝜕𝑥𝑗
𝜈 + 𝜈𝑡
𝜕𝑘
𝜕𝑥𝑗
= 𝑃𝑘 − 𝜀 + 𝐷
Production (生成)
Dissipation (散逸)
対数則領域では,乱流エネルギーの
生成と散逸のバランスが取れています.
 43 ページの図は,下記の gnuplot 設定ファイルを使用して作成しています.
 この設定ファイルを,Uprofile.gp 等の名前で保存して,𝑦+
と𝑢+
の
計算結果ファイル data.txt を用意して,次のコマンドを実行します.
gnuplot> load “Uprofile.gp"
48
付録|gnuplot の設定ファイル
set terminal pngcairo enhanced size 800,600
set output "Uprofile.png"
set title "Turbulent Flat Plate - Velocity Profile"
set logscale x
set mxtics 10
set format x "10^{%T}"
set grid xtics mxtics ytics
set xlabel "y+"
set ylabel "u+"
set key top left
set parametric
# u+ range
set trange [0:25]
# Spaldings law
k=0.41
E=9.8
f(t) = t + (exp(k*t) - 1 - k*t*(1 + 0.5*k*t) - 1/6*(k*t)**3)/E
set style line 1 lc rgb '#8b1a0e' pt 1 ps 1 lt 1 lw 2 # red
set style line 2 lc rgb '#0072bd' pt 6 ps 1.5 lt 1 lw 2 # blue
plot f(t),t title "Spalding" with lines ls 1,¥
"data.txt" title "OpenFOAM" with points ls 2
49
参考資料
[1] http://www.tfd.chalmers.se/~hani/kurser/OS_CFD/implementTurbulenceModel.pdf
[2] http://foam.sourceforge.net/docs/Guides-a4/UserGuide.pdf
[3] https://www.youtube.com/watch?v=Eu_4ppppQmw
[4] Jones, W., and Launder, B. The prediction of laminarization with a two-equationmodel of
turbulence. Int. J. HeatMass Transfer 15 (1972), 301–314.
[5] http://www.grc.nasa.gov/WWW/wind/valid/fpturb/fpturb.html
50
Have
fun!

Contenu connexe

Tendances

OpenFOAMのinterfoamによる誤差
OpenFOAMのinterfoamによる誤差OpenFOAMのinterfoamによる誤差
OpenFOAMのinterfoamによる誤差takuyayamamoto1800
 
OpenFOAMによる気液2相流解析の基礎と設定例
OpenFOAMによる気液2相流解析の基礎と設定例OpenFOAMによる気液2相流解析の基礎と設定例
OpenFOAMによる気液2相流解析の基礎と設定例takuyayamamoto1800
 
OpenFOAMにおけるDEM計算の力モデルの解読
OpenFOAMにおけるDEM計算の力モデルの解読OpenFOAMにおけるDEM計算の力モデルの解読
OpenFOAMにおけるDEM計算の力モデルの解読takuyayamamoto1800
 
OpenFOAMによる混相流シミュレーション入門
OpenFOAMによる混相流シミュレーション入門OpenFOAMによる混相流シミュレーション入門
OpenFOAMによる混相流シミュレーション入門takuyayamamoto1800
 
OpenFOAMにおけるDEM計算の衝突モデルの解読
OpenFOAMにおけるDEM計算の衝突モデルの解読OpenFOAMにおけるDEM計算の衝突モデルの解読
OpenFOAMにおけるDEM計算の衝突モデルの解読takuyayamamoto1800
 
OpenFOAMの混相流用改造solver(S-CLSVOF法)の設定・使い方
OpenFOAMの混相流用改造solver(S-CLSVOF法)の設定・使い方OpenFOAMの混相流用改造solver(S-CLSVOF法)の設定・使い方
OpenFOAMの混相流用改造solver(S-CLSVOF法)の設定・使い方takuyayamamoto1800
 
OpenFOAMにおける混相流計算
OpenFOAMにおける混相流計算OpenFOAMにおける混相流計算
OpenFOAMにおける混相流計算takuyayamamoto1800
 
OpenFOAMソルバの実行時ベイズ最適化
OpenFOAMソルバの実行時ベイズ最適化OpenFOAMソルバの実行時ベイズ最適化
OpenFOAMソルバの実行時ベイズ最適化Masashi Imano
 
OpenFOAM v2.3.0のチュートリアル 『oscillatingInletACMI2D』
OpenFOAM v2.3.0のチュートリアル 『oscillatingInletACMI2D』OpenFOAM v2.3.0のチュートリアル 『oscillatingInletACMI2D』
OpenFOAM v2.3.0のチュートリアル 『oscillatingInletACMI2D』Fumiya Nozaki
 
OpenFOAMのチュートリアルを作ってみた#1 『くさび油膜効果の計算』
OpenFOAMのチュートリアルを作ってみた#1 『くさび油膜効果の計算』OpenFOAMのチュートリアルを作ってみた#1 『くさび油膜効果の計算』
OpenFOAMのチュートリアルを作ってみた#1 『くさび油膜効果の計算』Fumiya Nozaki
 
Limited Gradient Schemes in OpenFOAM
Limited Gradient Schemes in OpenFOAMLimited Gradient Schemes in OpenFOAM
Limited Gradient Schemes in OpenFOAMFumiya Nozaki
 
OpenFoamの混相流solver interFoamのパラメータによる解の変化
OpenFoamの混相流solver interFoamのパラメータによる解の変化OpenFoamの混相流solver interFoamのパラメータによる解の変化
OpenFoamの混相流solver interFoamのパラメータによる解の変化takuyayamamoto1800
 
OpenFOAMにおける相変化解析
OpenFOAMにおける相変化解析OpenFOAMにおける相変化解析
OpenFOAMにおける相変化解析takuyayamamoto1800
 
無償のモデリングソフトウェアCAESESを使ってみた
無償のモデリングソフトウェアCAESESを使ってみた無償のモデリングソフトウェアCAESESを使ってみた
無償のモデリングソフトウェアCAESESを使ってみたFumiya Nozaki
 
ParaviewでのParticle Tracerを用いた可視化
ParaviewでのParticle Tracerを用いた可視化ParaviewでのParticle Tracerを用いた可視化
ParaviewでのParticle Tracerを用いた可視化takuyayamamoto1800
 
Dynamic Mesh in OpenFOAM
Dynamic Mesh in OpenFOAMDynamic Mesh in OpenFOAM
Dynamic Mesh in OpenFOAMFumiya Nozaki
 
OpenFOAMを用いた計算後の等高面データの取得方法
OpenFOAMを用いた計算後の等高面データの取得方法OpenFOAMを用いた計算後の等高面データの取得方法
OpenFOAMを用いた計算後の等高面データの取得方法takuyayamamoto1800
 
オープンソースの CFD ソフトウェア SU2 のチュートリアルをやってみた
オープンソースの CFD ソフトウェア SU2 のチュートリアルをやってみたオープンソースの CFD ソフトウェア SU2 のチュートリアルをやってみた
オープンソースの CFD ソフトウェア SU2 のチュートリアルをやってみたFumiya Nozaki
 

Tendances (20)

interFoamの検証
interFoamの検証interFoamの検証
interFoamの検証
 
OpenFOAMのinterfoamによる誤差
OpenFOAMのinterfoamによる誤差OpenFOAMのinterfoamによる誤差
OpenFOAMのinterfoamによる誤差
 
OpenFOAMによる気液2相流解析の基礎と設定例
OpenFOAMによる気液2相流解析の基礎と設定例OpenFOAMによる気液2相流解析の基礎と設定例
OpenFOAMによる気液2相流解析の基礎と設定例
 
rhoCentralFoam in OpenFOAM
rhoCentralFoam in OpenFOAMrhoCentralFoam in OpenFOAM
rhoCentralFoam in OpenFOAM
 
OpenFOAMにおけるDEM計算の力モデルの解読
OpenFOAMにおけるDEM計算の力モデルの解読OpenFOAMにおけるDEM計算の力モデルの解読
OpenFOAMにおけるDEM計算の力モデルの解読
 
OpenFOAMによる混相流シミュレーション入門
OpenFOAMによる混相流シミュレーション入門OpenFOAMによる混相流シミュレーション入門
OpenFOAMによる混相流シミュレーション入門
 
OpenFOAMにおけるDEM計算の衝突モデルの解読
OpenFOAMにおけるDEM計算の衝突モデルの解読OpenFOAMにおけるDEM計算の衝突モデルの解読
OpenFOAMにおけるDEM計算の衝突モデルの解読
 
OpenFOAMの混相流用改造solver(S-CLSVOF法)の設定・使い方
OpenFOAMの混相流用改造solver(S-CLSVOF法)の設定・使い方OpenFOAMの混相流用改造solver(S-CLSVOF法)の設定・使い方
OpenFOAMの混相流用改造solver(S-CLSVOF法)の設定・使い方
 
OpenFOAMにおける混相流計算
OpenFOAMにおける混相流計算OpenFOAMにおける混相流計算
OpenFOAMにおける混相流計算
 
OpenFOAMソルバの実行時ベイズ最適化
OpenFOAMソルバの実行時ベイズ最適化OpenFOAMソルバの実行時ベイズ最適化
OpenFOAMソルバの実行時ベイズ最適化
 
OpenFOAM v2.3.0のチュートリアル 『oscillatingInletACMI2D』
OpenFOAM v2.3.0のチュートリアル 『oscillatingInletACMI2D』OpenFOAM v2.3.0のチュートリアル 『oscillatingInletACMI2D』
OpenFOAM v2.3.0のチュートリアル 『oscillatingInletACMI2D』
 
OpenFOAMのチュートリアルを作ってみた#1 『くさび油膜効果の計算』
OpenFOAMのチュートリアルを作ってみた#1 『くさび油膜効果の計算』OpenFOAMのチュートリアルを作ってみた#1 『くさび油膜効果の計算』
OpenFOAMのチュートリアルを作ってみた#1 『くさび油膜効果の計算』
 
Limited Gradient Schemes in OpenFOAM
Limited Gradient Schemes in OpenFOAMLimited Gradient Schemes in OpenFOAM
Limited Gradient Schemes in OpenFOAM
 
OpenFoamの混相流solver interFoamのパラメータによる解の変化
OpenFoamの混相流solver interFoamのパラメータによる解の変化OpenFoamの混相流solver interFoamのパラメータによる解の変化
OpenFoamの混相流solver interFoamのパラメータによる解の変化
 
OpenFOAMにおける相変化解析
OpenFOAMにおける相変化解析OpenFOAMにおける相変化解析
OpenFOAMにおける相変化解析
 
無償のモデリングソフトウェアCAESESを使ってみた
無償のモデリングソフトウェアCAESESを使ってみた無償のモデリングソフトウェアCAESESを使ってみた
無償のモデリングソフトウェアCAESESを使ってみた
 
ParaviewでのParticle Tracerを用いた可視化
ParaviewでのParticle Tracerを用いた可視化ParaviewでのParticle Tracerを用いた可視化
ParaviewでのParticle Tracerを用いた可視化
 
Dynamic Mesh in OpenFOAM
Dynamic Mesh in OpenFOAMDynamic Mesh in OpenFOAM
Dynamic Mesh in OpenFOAM
 
OpenFOAMを用いた計算後の等高面データの取得方法
OpenFOAMを用いた計算後の等高面データの取得方法OpenFOAMを用いた計算後の等高面データの取得方法
OpenFOAMを用いた計算後の等高面データの取得方法
 
オープンソースの CFD ソフトウェア SU2 のチュートリアルをやってみた
オープンソースの CFD ソフトウェア SU2 のチュートリアルをやってみたオープンソースの CFD ソフトウェア SU2 のチュートリアルをやってみた
オープンソースの CFD ソフトウェア SU2 のチュートリアルをやってみた
 

Plus de Fumiya Nozaki

Basic Boundary Conditions in OpenFOAM v2.4
Basic Boundary Conditions in OpenFOAM v2.4Basic Boundary Conditions in OpenFOAM v2.4
Basic Boundary Conditions in OpenFOAM v2.4Fumiya Nozaki
 
blockCoupledSwirlTestチュートリアル
blockCoupledSwirlTestチュートリアルblockCoupledSwirlTestチュートリアル
blockCoupledSwirlTestチュートリアルFumiya Nozaki
 
CAESES Free チュートリアル
CAESES Free チュートリアルCAESES Free チュートリアル
CAESES Free チュートリアルFumiya Nozaki
 
CAESES-FFW,GridPro,OpenFOAMを使用した形状最適化事例#1
CAESES-FFW,GridPro,OpenFOAMを使用した形状最適化事例#1CAESES-FFW,GridPro,OpenFOAMを使用した形状最適化事例#1
CAESES-FFW,GridPro,OpenFOAMを使用した形状最適化事例#1Fumiya Nozaki
 
Spatial Interpolation Schemes in OpenFOAM
Spatial Interpolation Schemes in OpenFOAMSpatial Interpolation Schemes in OpenFOAM
Spatial Interpolation Schemes in OpenFOAMFumiya Nozaki
 
OpenFOAM Programming Tips
OpenFOAM Programming TipsOpenFOAM Programming Tips
OpenFOAM Programming TipsFumiya Nozaki
 
ParaView による可視化 Tips
ParaView による可視化 TipsParaView による可視化 Tips
ParaView による可視化 TipsFumiya Nozaki
 
CFD for Rotating Machinery using OpenFOAM
CFD for Rotating Machinery using OpenFOAMCFD for Rotating Machinery using OpenFOAM
CFD for Rotating Machinery using OpenFOAMFumiya Nozaki
 
Adjoint Shape Optimization using OpenFOAM
Adjoint Shape Optimization using OpenFOAMAdjoint Shape Optimization using OpenFOAM
Adjoint Shape Optimization using OpenFOAMFumiya Nozaki
 
OpenFOAM を用いた Adjoint 形状最適化事例1
OpenFOAM を用いた Adjoint 形状最適化事例1OpenFOAM を用いた Adjoint 形状最適化事例1
OpenFOAM を用いた Adjoint 形状最適化事例1Fumiya Nozaki
 

Plus de Fumiya Nozaki (10)

Basic Boundary Conditions in OpenFOAM v2.4
Basic Boundary Conditions in OpenFOAM v2.4Basic Boundary Conditions in OpenFOAM v2.4
Basic Boundary Conditions in OpenFOAM v2.4
 
blockCoupledSwirlTestチュートリアル
blockCoupledSwirlTestチュートリアルblockCoupledSwirlTestチュートリアル
blockCoupledSwirlTestチュートリアル
 
CAESES Free チュートリアル
CAESES Free チュートリアルCAESES Free チュートリアル
CAESES Free チュートリアル
 
CAESES-FFW,GridPro,OpenFOAMを使用した形状最適化事例#1
CAESES-FFW,GridPro,OpenFOAMを使用した形状最適化事例#1CAESES-FFW,GridPro,OpenFOAMを使用した形状最適化事例#1
CAESES-FFW,GridPro,OpenFOAMを使用した形状最適化事例#1
 
Spatial Interpolation Schemes in OpenFOAM
Spatial Interpolation Schemes in OpenFOAMSpatial Interpolation Schemes in OpenFOAM
Spatial Interpolation Schemes in OpenFOAM
 
OpenFOAM Programming Tips
OpenFOAM Programming TipsOpenFOAM Programming Tips
OpenFOAM Programming Tips
 
ParaView による可視化 Tips
ParaView による可視化 TipsParaView による可視化 Tips
ParaView による可視化 Tips
 
CFD for Rotating Machinery using OpenFOAM
CFD for Rotating Machinery using OpenFOAMCFD for Rotating Machinery using OpenFOAM
CFD for Rotating Machinery using OpenFOAM
 
Adjoint Shape Optimization using OpenFOAM
Adjoint Shape Optimization using OpenFOAMAdjoint Shape Optimization using OpenFOAM
Adjoint Shape Optimization using OpenFOAM
 
OpenFOAM を用いた Adjoint 形状最適化事例1
OpenFOAM を用いた Adjoint 形状最適化事例1OpenFOAM を用いた Adjoint 形状最適化事例1
OpenFOAM を用いた Adjoint 形状最適化事例1
 

Dernier

Observabilityは従来型の監視と何が違うのか(キンドリルジャパン社内勉強会:2022年10月27日発表)
Observabilityは従来型の監視と何が違うのか(キンドリルジャパン社内勉強会:2022年10月27日発表)Observabilityは従来型の監視と何が違うのか(キンドリルジャパン社内勉強会:2022年10月27日発表)
Observabilityは従来型の監視と何が違うのか(キンドリルジャパン社内勉強会:2022年10月27日発表)Hiroshi Tomioka
 
LoRaWAN スマート距離検出デバイスDS20L日本語マニュアル
LoRaWAN スマート距離検出デバイスDS20L日本語マニュアルLoRaWAN スマート距離検出デバイスDS20L日本語マニュアル
LoRaWAN スマート距離検出デバイスDS20L日本語マニュアルCRI Japan, Inc.
 
論文紹介:Selective Structured State-Spaces for Long-Form Video Understanding
論文紹介:Selective Structured State-Spaces for Long-Form Video Understanding論文紹介:Selective Structured State-Spaces for Long-Form Video Understanding
論文紹介:Selective Structured State-Spaces for Long-Form Video UnderstandingToru Tamaki
 
Utilizing Ballerina for Cloud Native Integrations
Utilizing Ballerina for Cloud Native IntegrationsUtilizing Ballerina for Cloud Native Integrations
Utilizing Ballerina for Cloud Native IntegrationsWSO2
 
知識ゼロの営業マンでもできた!超速で初心者を脱する、悪魔的学習ステップ3選.pptx
知識ゼロの営業マンでもできた!超速で初心者を脱する、悪魔的学習ステップ3選.pptx知識ゼロの営業マンでもできた!超速で初心者を脱する、悪魔的学習ステップ3選.pptx
知識ゼロの営業マンでもできた!超速で初心者を脱する、悪魔的学習ステップ3選.pptxsn679259
 
LoRaWANスマート距離検出センサー DS20L カタログ LiDARデバイス
LoRaWANスマート距離検出センサー  DS20L  カタログ  LiDARデバイスLoRaWANスマート距離検出センサー  DS20L  カタログ  LiDARデバイス
LoRaWANスマート距離検出センサー DS20L カタログ LiDARデバイスCRI Japan, Inc.
 
Amazon SES を勉強してみる その32024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その32024/04/26の勉強会で発表されたものです。Amazon SES を勉強してみる その32024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その32024/04/26の勉強会で発表されたものです。iPride Co., Ltd.
 
新人研修 後半 2024/04/26の勉強会で発表されたものです。
新人研修 後半        2024/04/26の勉強会で発表されたものです。新人研修 後半        2024/04/26の勉強会で発表されたものです。
新人研修 後半 2024/04/26の勉強会で発表されたものです。iPride Co., Ltd.
 
論文紹介:Video-GroundingDINO: Towards Open-Vocabulary Spatio-Temporal Video Groun...
論文紹介:Video-GroundingDINO: Towards Open-Vocabulary Spatio-Temporal Video Groun...論文紹介:Video-GroundingDINO: Towards Open-Vocabulary Spatio-Temporal Video Groun...
論文紹介:Video-GroundingDINO: Towards Open-Vocabulary Spatio-Temporal Video Groun...Toru Tamaki
 
Amazon SES を勉強してみる その22024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その22024/04/26の勉強会で発表されたものです。Amazon SES を勉強してみる その22024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その22024/04/26の勉強会で発表されたものです。iPride Co., Ltd.
 
論文紹介: The Surprising Effectiveness of PPO in Cooperative Multi-Agent Games
論文紹介: The Surprising Effectiveness of PPO in Cooperative Multi-Agent Games論文紹介: The Surprising Effectiveness of PPO in Cooperative Multi-Agent Games
論文紹介: The Surprising Effectiveness of PPO in Cooperative Multi-Agent Gamesatsushi061452
 

Dernier (11)

Observabilityは従来型の監視と何が違うのか(キンドリルジャパン社内勉強会:2022年10月27日発表)
Observabilityは従来型の監視と何が違うのか(キンドリルジャパン社内勉強会:2022年10月27日発表)Observabilityは従来型の監視と何が違うのか(キンドリルジャパン社内勉強会:2022年10月27日発表)
Observabilityは従来型の監視と何が違うのか(キンドリルジャパン社内勉強会:2022年10月27日発表)
 
LoRaWAN スマート距離検出デバイスDS20L日本語マニュアル
LoRaWAN スマート距離検出デバイスDS20L日本語マニュアルLoRaWAN スマート距離検出デバイスDS20L日本語マニュアル
LoRaWAN スマート距離検出デバイスDS20L日本語マニュアル
 
論文紹介:Selective Structured State-Spaces for Long-Form Video Understanding
論文紹介:Selective Structured State-Spaces for Long-Form Video Understanding論文紹介:Selective Structured State-Spaces for Long-Form Video Understanding
論文紹介:Selective Structured State-Spaces for Long-Form Video Understanding
 
Utilizing Ballerina for Cloud Native Integrations
Utilizing Ballerina for Cloud Native IntegrationsUtilizing Ballerina for Cloud Native Integrations
Utilizing Ballerina for Cloud Native Integrations
 
知識ゼロの営業マンでもできた!超速で初心者を脱する、悪魔的学習ステップ3選.pptx
知識ゼロの営業マンでもできた!超速で初心者を脱する、悪魔的学習ステップ3選.pptx知識ゼロの営業マンでもできた!超速で初心者を脱する、悪魔的学習ステップ3選.pptx
知識ゼロの営業マンでもできた!超速で初心者を脱する、悪魔的学習ステップ3選.pptx
 
LoRaWANスマート距離検出センサー DS20L カタログ LiDARデバイス
LoRaWANスマート距離検出センサー  DS20L  カタログ  LiDARデバイスLoRaWANスマート距離検出センサー  DS20L  カタログ  LiDARデバイス
LoRaWANスマート距離検出センサー DS20L カタログ LiDARデバイス
 
Amazon SES を勉強してみる その32024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その32024/04/26の勉強会で発表されたものです。Amazon SES を勉強してみる その32024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その32024/04/26の勉強会で発表されたものです。
 
新人研修 後半 2024/04/26の勉強会で発表されたものです。
新人研修 後半        2024/04/26の勉強会で発表されたものです。新人研修 後半        2024/04/26の勉強会で発表されたものです。
新人研修 後半 2024/04/26の勉強会で発表されたものです。
 
論文紹介:Video-GroundingDINO: Towards Open-Vocabulary Spatio-Temporal Video Groun...
論文紹介:Video-GroundingDINO: Towards Open-Vocabulary Spatio-Temporal Video Groun...論文紹介:Video-GroundingDINO: Towards Open-Vocabulary Spatio-Temporal Video Groun...
論文紹介:Video-GroundingDINO: Towards Open-Vocabulary Spatio-Temporal Video Groun...
 
Amazon SES を勉強してみる その22024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その22024/04/26の勉強会で発表されたものです。Amazon SES を勉強してみる その22024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その22024/04/26の勉強会で発表されたものです。
 
論文紹介: The Surprising Effectiveness of PPO in Cooperative Multi-Agent Games
論文紹介: The Surprising Effectiveness of PPO in Cooperative Multi-Agent Games論文紹介: The Surprising Effectiveness of PPO in Cooperative Multi-Agent Games
論文紹介: The Surprising Effectiveness of PPO in Cooperative Multi-Agent Games
 

Turbulence Models in OpenFOAM

  • 4. 4 乱流モデルのソースコードのディレクトリ  非圧縮性流れ計算用の乱流モデル: $FOAM_SRC/turbulenceModels/incompressible • RAS ディレクトリ Reynolds-averaged Navier-Stokes (RANS) の各モデルのクラスの ソースファイル (~.C) とヘッダファイル (~.H) が格納されています. • LES ディレクトリ Large eddy simulation (LES) の各モデルのクラスの ソースファイルとヘッダファイルが格納されています.
  • 5.  圧縮性流れ計算用の乱流モデル: $FOAM_SRC/turbulenceModels/compressible • RAS ディレクトリ Reynolds-averaged Navier-Stokes (RANS) の各モデルのクラスの ソースファイル (~.C) とヘッダファイル (~.H) が格納されています. • LES ディレクトリ Large eddy simulation (LES) の各モデルのクラスの ソースファイルとヘッダファイルが格納されています. 5 乱流モデルのソースコードのディレクトリ
  • 6. 6 使用可能な乱流モデル  ソルバーにより,使用できる乱流モデルが異なります. • RANS モデルのみ使用可能なソルバー • RANS モデルに加えて,LES モデルも使用可能なソルバー simpleFoam, SRFSimpleFoam, boundaryFoam, porousSimpleFoam, buoyantSimpleFoam, buoyantBoussinesqSimpleFoam, buoyantBoussinesqPimpleFoam, and other solvers pimpleFoam, pimpleDyMFoam, SRFPimpleFoam, pisoFoam, buoyantPimpleFoam, chtMultiRegionFoam, chtMultiRegionSimpleFoam, and other solvers
  • 7. 7 使用可能な乱流モデル  ソルバーがどちらのタイプかは,ほとんどの場合, createFields.H ファイルの以下の記述で確認できます. • RANS モデルのみ使用可能なソルバー • RANS モデルに加えて,LES モデルも使用可能なソルバー autoPtr<incompressible::turbulenceModel> turbulence ( incompressible::turbulenceModel::New(U, phi, laminarTransport) ); autoPtr<incompressible::RASModel> turbulence ( incompressible::RASModel::New(U, phi, laminarTransport) );
  • 8. 8 乱流モデルの設定ファイル  2つのタイプのソルバーでは,使用する乱流モデルの指定に必要な 設定ファイルが異なります. • RANS モデルのみ使用可能なソルバーの場合 - constant/RASProperties のみ必要 • RANS モデルに加えて,LES モデルも使用可能なソルバーの場合 - constant/turbulenceProperties RANS 計算(RASModel),LES 計算(LESModel),層流計算(laminar) のどの計算を行うのかをこのファイルで指定します. 加えて - constant/LESProperties (LES 計算を行う場合に必要) - constant/RASProperties (RANS 計算を行う場合に必要) 層流計算の場合には,constant/turbulenceProperties のみ必要です.
  • 9. 9 乱流モデルの設定ファイル:turbulenceProperties /*--------------------------------*- C++ -*----------------------------------*¥ | ========= | | | ¥¥ / F ield | OpenFOAM: The Open Source CFD Toolbox | | ¥¥ / O peration | Version: 2.3.0 | | ¥¥ / A nd | Web: www.OpenFOAM.org | | ¥¥/ M anipulation | | ¥*---------------------------------------------------------------------------*/ FoamFile { version 2.0; format ascii; class dictionary; location "constant"; object turbulenceProperties; } // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // simulationType RASModel; // ************************************************************************* //  simulationType RASModel  simulationType LESModel  simulationType laminar : RANS 計算の場合 : LES 計算の場合 : 層流計算の場合
  • 10. 10 乱流モデルの設定ファイル:RASProperties /*--------------------------------*- C++ -*----------------------------------*¥ | ========= | | | ¥¥ / F ield | OpenFOAM: The Open Source CFD Toolbox | | ¥¥ / O peration | Version: 2.3.0 | | ¥¥ / A nd | Web: www.OpenFOAM.org | | ¥¥/ M anipulation | | ¥*---------------------------------------------------------------------------*/ FoamFile { version 2.0; format ascii; class dictionary; location "constant"; object RASProperties; } // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // RASModel kEpsilon; turbulence on; printCoeffs on; // ************************************************************************* // • RASModel: 計算に使用する RANS モデルを指定 • turbulence: 乱流計算 (on) と層流計算 (off) の 切り替え • printCoeffs: ソルバー開始時にモデル定数を ターミナルへ標準出力するか否かのコントロール
  • 11. /*--------------------------------*- C++ -*----------------------------------*¥ | ========= | | | ¥¥ / F ield | OpenFOAM: The Open Source CFD Toolbox | | ¥¥ / O peration | Version: 2.3.0 | | ¥¥ / A nd | Web: www.OpenFOAM.org | | ¥¥/ M anipulation | | ¥*---------------------------------------------------------------------------*/ FoamFile { version 2.0; format ascii; class dictionary; location "constant"; object RASProperties; } // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // RASModel hogehoge; turbulence on; printCoeffs on; // ************************************************************************* // 11 RANS モデルのリストの表示  RASModel に適当な名前を指定して,ソルバーを実行すると, 使用可能な RANS モデルのリストを表示してくれます. 次のページに続きます.
  • 12. 12 RANS モデルのリストの表示 --> FOAM FATAL ERROR: Unknown RASModel type hogehoge Valid RASModel types: 18 ( LRR LamBremhorstKE LaunderGibsonRSTM LaunderSharmaKE LienCubicKE LienCubicKELowRe LienLeschzinerLowRe NonlinearKEShih RNGkEpsilon SpalartAllmaras kEpsilon kOmega kOmegaSST kkLOmega laminar qZeta realizableKE v2f ) 例えば,simpleFoam の場合, 非圧縮流れ計算用の RANS モデル が 18種類 選択可能であることが分かります. laminar は,層流計算用なので, 実質 17 種類のモデルです.
  • 13. 13 モデル定数  それぞれの乱流モデルには,モデル定数が定義されています.  例えば,非圧縮性流れ計算用の 標準 k-ε モデル (kEpsilon) の場合  ソースコードにデフォルト値が定義されています: $FOAM_SRC/turbulenceModels/incompressible/RAS/kEpsilon 𝑅 𝑘 = 𝑣𝑗 𝜕𝑘 𝜕𝑥𝑗 − 𝜕 𝜕𝑥𝑗 𝜈 + 𝜈𝑡 𝜎 𝑘 𝜕𝑘 𝜕𝑥𝑗 − 𝑃𝑘 + 𝜀 = 0 𝑅 𝜀 = 𝑣𝑗 𝜕𝜀 𝜕𝑥𝑗 − 𝜕 𝜕𝑥𝑗 𝜈 + 𝜈𝑡 𝜎𝜀 𝜕𝜀 𝜕𝑥𝑗 − 𝑐1 𝑃𝑘 𝜀 𝑘 + 𝑐2 𝜀2 𝑘 = 0 𝜈𝑡 = 𝑐 𝜇 𝑘2 𝜀 :OpenFOAMでの変数名 C1 C2Cmu sigmaEps
  • 14. 14 モデル定数の確認  設定ファイル RASProperties において,printCoeffs の設定を on にする ことで,ソルバー実行時にモデル定数値を標準出力できます. Create time Create mesh for time = 0 Reading field p Reading field U Reading/calculating face flux field phi Selecting incompressible transport model Newtonian Selecting RAS turbulence model kEpsilon kEpsilonCoeffs { Cmu 0.09; C1 1.44; C2 1.92; sigmaEps 1.4; } No finite volume options present
  • 15. 15 モデル定数の編集  モデル定数をデフォルト値から変更したい場合 1. 前ページのようにデフォルト値を表示させて、 2. これを RASProperties ファイルにコピー & ペーストして, 3. デフォルト値から変更したい変数の値を編集 FoamFile { version 2.0; format ascii; class dictionary; location "constant"; object RASProperties; } // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // RASModel kEpsilon; turbulence on; printCoeffs on; kEpsilonCoeffs { Cmu 0.09; C1 1.44; C2 1.92; sigmaEps 1.4; } // ************************************************************************* // デフォルト値は、 標準的な値が設定されているので 変更が必要な機会は あまり多くないかもしれません.
  • 17. 17 乱流モデルのクラスの関係 /*---------------------------------------------------------------------------*¥ Class kEpsilon Declaration ¥*---------------------------------------------------------------------------*/ class kEpsilon : public RASModel { protected: // Protected data // Model coefficients dimensionedScalar Cmu_; dimensionedScalar C1_; dimensionedScalar C2_; dimensionedScalar sigmaEps_; 派生クラス名 基底クラス名  kEpsilon クラスは,RASModel クラスの派生クラスです.  kOmega クラスなど,その他の RANS モデルのクラスも RASModel の派生クラスです. RASModel kEpsilon 親クラス 子クラス 継承
  • 18. 18 kEpsilon クラスのメンバ  kEpsilon クラスのメンバ • データメンバ - モデル定数 (Cmu_,C1_,C2_,sigmaEps_) - 乱流変数 (k_,epsilon_,nut_) - Runtime タイプ名 • コンストラクタ,デストラクタ • メンバ関数 - DkEff(),DepsilonEff(): 乱流変数の拡散係数 - R(): レイノルズ応力テンソル - divDevReff(volVectorField& U): 拡散項の離散化 - correct(): 乱流変数 𝑘 と 𝜀 の輸送方程式を解いて, 渦粘性係数 𝜈𝑡 を計算 など
  • 19. 19 メンバ関数: correct()  RANS モデルにより,渦粘性係数の計算方法は異なります.  turbulenceModel クラスは,correct() を純粋仮想関数として定義した 抽象クラスです. RASModel kEpsilon 継承 turbulence Model 継承 virtual void correct() = 0; void turbulenceModel::correct() { transportModel_.correct(); if (mesh_.changing()) { y_.correct(); } }
  • 20. 20 メンバ関数: correct()  RANS モデルにより,渦粘性係数の計算方法は異なります.  RASModel クラスでも,correct() を仮想関数として定義しています. virtual void correct(); void RASModel::correct() { turbulenceModel::correct(); } RASModel kEpsilon 継承 turbulence Model 継承
  • 21. 21 メンバ関数: correct()  RANS モデルにより,渦粘性係数の計算方法は異なります.  基底クラスの仮想関数 correct() を再定義することにより, RANS モデルの渦粘性計算をカスタマイズしています. void kEpsilon::correct() { RASModel::correct(); if (!turbulence_) { return; } volScalarField G(GName(), nut_*2*magSqr(symm(fvc::grad(U_)))); // Update epsilon and G at the wall epsilon_.boundaryField().updateCoeffs(); // Dissipation equation tmp<fvScalarMatrix> epsEqn ( fvm::ddt(epsilon_) + fvm::div(phi_, epsilon_) - fvm::laplacian(DepsilonEff(), epsilon_) == C1_*G*epsilon_/k_ - fvm::Sp(C2_*epsilon_/k_, epsilon_) ); epsEqn().relax(); epsEqn().boundaryManipulate(epsilon_.boundaryField()); solve(epsEqn); bound(epsilon_, epsilonMin_); (以下省略) RASModel kEpsilon 継承 turbulence Model 継承
  • 23. 23 カスタマイズの手順  Chalmers 大学の Håkan Nilsson 先生の資料 [1] の手順でカスタマイズが 可能です.  ここでは,この資料の手順にしたがって kEpsilon モデルのカスタマイズを 行ってみます.  kEpsilon モデルのソースコードをコピーします. $ cd $WM_PROJECT_DIR $ cp -r --parents src/turbulenceModels/incompressible/RAS/kEpsilon ¥ > $WM_PROJECT_USER_DIR $ cd $WM_PROJECT_USER_DIR/src/turbulenceModels/incompressible/RAS $ mv kEpsilon mykEpsilon 補足説明 • 入力コマンドが長くなる場合には,バックスラッシュ『¥』で改行を行い, コマンド入力を複数行に分けることができます. • WM_PROJECT_USER_DIR などの OpenFOAM の環境変数は, etc/bashrc ファイルで定義されています.
  • 24. 24 カスタマイズの手順  $FOAM_SRC/turbulenceModels/incompressible/RAS/Make を参考にし て,ビルドに必要な Make/files と Make/options ファイルを準備します.  Make ディレクトリを作成します. $ mkdir Make  Make ディレクトリの下に files という名前のファイルを作成します.この ファイルに,次の2行を記述して保存します. mykEpsilon/mykEpsilon.C LIB = $(FOAM_USER_LIBBIN)/libmyIncompressibleRASModels
  • 25. 25 カスタマイズの手順  Make ディレクトリの下に options という名前のファイルを作成します. このファイルには,以下のように記述します. EXE_INC = ¥ -I$(LIB_SRC)/turbulenceModels ¥ -I$(LIB_SRC)/transportModels ¥ -I$(LIB_SRC)/finiteVolume/lnInclude ¥ -I$(LIB_SRC)/meshTools/lnInclude ¥ -I$(LIB_SRC)/turbulenceModels/incompressible/RAS/lnInclude LIB_LIBS = ¥ -lincompressibleTurbulenceModel ¥ -lfiniteVolume ¥ -lmeshTools  ソースコードのファイル名を Make/files の記述に合わせて修正します. $ cd mykEpsilon $ mv kEpsilon.C mykEpsilon.C $ mv kEpsilon.H mykEpsilon.H $ rm kEpsilon.dep
  • 26. 26 カスタマイズの手順  ソースコード内のクラス名を修正します. $ sed -i -e "s/kEpsilon/mykEpsilon/g" mykEpsilon.C $ sed -i -e "s/kEpsilon/mykEpsilon/g" mykEpsilon.H  (オプション) カスタマイズしたモデルを使用している目印を作成します. mysimpleFoam.C ファイルに次の1行を加えます. 補足説明 • sed コマンドの –i オプションで,対象ファイルの上書き編集が可能です. { Info << "Defining my own kEpsilon model" << endl; bound(k_, kMin_); bound(epsilon_, epsilonMin_); nut_ = Cmu_*sqr(k_)/epsilon_; nut_.correctBoundaryConditions(); printCoeffs(); }
  • 29. 29 カスタマイズした乱流モデルの使用  カスタマイズした乱流モデルの使用  system/controlDict ファイルに次の行を加えます. FoamFile { version 2.0; format ascii; class dictionary; location "system"; object controlDict; } // * * * * * * * * * * * * * * * * * * * * * * * * * * // libs ("libmyIncompressibleRASModels.so"); application simpleFoam; startFrom latestTime;
  • 30. 30 カスタマイズした乱流モデルの使用  設定ファイル RASProperties において,RASModel に mykEpsilon を指 定することでカスタマイズした乱流モデルを使用できます.  RASModel に適当な名前を指定して ソルバーを実行してみると, 新しいモデルがリストに 加わっているのが確認できます. --> FOAM FATAL ERROR: Unknown RASModel type hogehoge Valid RASModel types: 19 ( LRR LamBremhorstKE LaunderGibsonRSTM LaunderSharmaKE LienCubicKE LienCubicKELowRe LienLeschzinerLowRe NonlinearKEShih RNGkEpsilon SpalartAllmaras kEpsilon kOmega kOmegaSST kkLOmega laminar mykEpsilon qZeta realizableKE v2f )
  • 31. 31 Chapter 4. RANS モデル Launder-Sharma low-Re k-𝜀 モデル
  • 32. 32 支配方程式 𝜕𝑘 𝜕𝑡 + 𝜕 𝑢𝑗 𝑘 𝜕𝑥𝑗 − 𝜕 𝜕𝑥𝑗 𝜈 + 𝜈𝑡 𝜕𝑘 𝜕𝑥𝑗 = 𝑃𝑘 − 𝜀 − 𝐷 𝜕𝜀 𝜕𝑡 + 𝜕 𝑢𝑗 𝜀 𝜕𝑥𝑗 − 𝜕 𝜕𝑥𝑗 𝜈 + 𝜈𝑡 𝜎𝜀 𝜕𝜀 𝜕𝑥𝑗 = 𝑐1 𝑓1 𝑃𝑘 𝜀 𝑘 − 𝑐2 𝑓2 𝜀2 𝑘 + 𝐸 ここで 𝜈𝑡 = 𝑐 𝜇 𝑓𝜇 𝑘2 𝜀 𝑃𝑘 = 𝜈𝑡 𝜕𝑢𝑖 𝜕𝑥𝑗 + 𝜕𝑢𝑗 𝜕𝑥𝑖 𝜕𝑢𝑖 𝜕𝑥𝑗 , 𝐷 = 2𝜈 𝜕 𝑘 𝜕𝑥𝑗 2 , 𝐸 = 2𝜈𝜈𝑡 𝜕2 𝑢 𝑘 𝜕𝑥𝑖 𝜕𝑥𝑗 2 𝑓𝜇 = exp −3.4 1 + 𝑅𝑒𝑡 50 2 , 𝑓1 = 1, 𝑎𝑓2 = 1 − 0.3exp −𝑅𝑒𝑡 2 , 𝑅𝑒𝑡 = 𝑘2 𝜈𝜀 渦粘性係数 Damping functions 𝜀 = 𝜀 − 𝐷
  • 33. 33 モデル定数 モデル定数 OpenFOAMの表記 デフォルト値 𝑐 𝜇 Cmu 0.09 𝑐1 C1 1.44 𝑐2 C2 1.92 σ 𝜀 sigmaEps 1.3
  • 34. 34 モデルに関して  通常のエネルギー散逸率 𝜀 の代わりに,𝜀 についての方程式を解きます. 𝐷 の壁面での値が,𝜀 の壁面での値に等しいので,変数 𝜀 = 𝜀 − 𝐷 の壁面で の値は,𝜀 = 0 となり,壁面上の境界条件が取り扱いやすくなります.  高 Re 型のモデルには無い項 𝐸 が追加されている理由 Its inclusion is simply due to the fact that without it the peak level of turbulence kinetic energy at y+ ≈ 20 did not accord with experiment. Several other forms were tried including choosing f1 to be a function of Reynolds number. The form quoted is however, the only one which generated the desired profile of k near the wall. これによると, 壁近傍での乱流エネルギー k の分布が実験と合うように,導入されている項 のようです. 文献 [4]
  • 36. 36 OpenFOAM の実装|𝑘 の輸送方程式 𝜕𝑘 𝜕𝑡 + 𝜕 𝑢𝑗 𝑘 𝜕𝑥𝑗 − 𝜕 𝜕𝑥𝑗 𝜈 + 𝜈𝑡 𝜕𝑘 𝜕𝑥𝑗 = 𝑃𝑘 − 𝜀 − 𝐷 数式 OpenFOAM 𝜕𝑘 𝜕𝑡 fvm::ddt(k_) 𝜕 𝑢𝑗 𝑘 𝜕𝑥𝑗 fvm::div(phi_, k_) − 𝜕 𝜕𝑥𝑗 𝜈 + 𝜈𝑡 𝜕𝑘 𝜕𝑥𝑗 - fvm::laplacian(DkEff(), k_) 𝑃𝑘 G −𝜀 − 𝐷 - fvm::Sp((epsilonTilda_ + D)/k_, k_)
  • 37. 37 OpenFOAM の実装|𝜀 の輸送方程式 𝜕𝜀 𝜕𝑡 + 𝜕 𝑢𝑗 𝜀 𝜕𝑥𝑗 − 𝜕 𝜕𝑥𝑗 𝜈 + 𝜈𝑡 𝜎𝜀 𝜕𝜀 𝜕𝑥𝑗 = 𝑐1 𝑃𝑘 𝜀 𝑘 − 𝑐2 𝑓2 𝜀2 𝑘 + 𝐸 数式 OpenFOAM 𝜕𝜀 𝜕𝑡 fvm::ddt(epsilonTilda_) 𝜕 𝑢𝑗 𝜀 𝜕𝑥𝑗 fvm::div(phi_, epsilonTilda_) − 𝜕 𝜕𝑥𝑗 𝜈 + 𝜈𝑡 𝜎𝜀 𝜕𝜀 𝜕𝑥𝑗 - fvm::laplacian(DepsilonEff(), epsilonTilda_) 𝑐1 𝑃𝑘 𝜀 𝑘 C1_*G*epsilonTilda_/k_ −𝑐2 𝑓2 𝜀2 𝑘 - fvm::Sp(C2_*f2()*epsilonTilda_/k_, epsilonTilda_) 𝐸 E
  • 38. 38 OpenFOAM の実装|乱流変数の輸送方程式  前の2ページの離散化を注意深く見ると,右辺の項で,fvm::Sp が使われて いる項といない項があるのが分かります. • 符号がマイナスの項 fvm::Sp を使用している • 符号がプラスの項 fvm::Sp を使用していない  今考えている方程式では,右辺でマイナス符号が付いている項を左辺に移項 すると係数行列の対角成分を大きくする効果があるので,陰的に扱うために, fvm::Sp を使用しています.  連立方程式を反復法で解く場合,係数行列の対角成分が大きい方が解きやす いため,このような工夫を行っています.  fvm::Sp の詳細は,こちらのスライドの 80 ページをご覧ください.
  • 39. 39 OpenFOAM の実装|Damping functions 𝑓𝜇 = exp −3.4 1 + 𝑅𝑒𝑡 50 2 , 𝑓2 = 1 − 0.3exp −𝑅𝑒𝑡 2 , 𝑅𝑒𝑡 = 𝑘2 𝜈𝜀 LaunderSharmaKE.C
  • 40. 40 OpenFOAM の実装|乱流エネルギーの生産率の計算 𝐺 = 2𝜈𝑡 1 2 𝜕𝑢𝑖 𝜕𝑥𝑗 + 𝜕𝑢𝑗 𝜕𝑥𝑖 2 = 𝜈𝑡 2 𝜕𝑢𝑖 𝜕𝑥𝑗 𝜕𝑢𝑖 𝜕𝑥𝑗 + 𝜕𝑢𝑗 𝜕𝑥𝑖 𝜕𝑢𝑗 𝜕𝑥𝑖 + 2 𝜕𝑢𝑖 𝜕𝑥𝑗 𝜕𝑢𝑗 𝜕𝑥𝑖 = 𝜈𝑡 𝜕𝑢𝑖 𝜕𝑥𝑗 + 𝜕𝑢𝑗 𝜕𝑥𝑖 𝜕𝑢𝑖 𝜕𝑥𝑗 = 𝑃𝑘 乱流エネルギーの生産率の表現 LaunderSharmaKE.C
  • 41. 41 OpenFOAM の実装|D 項と E 項の計算 𝐷 = 2𝜈 𝜕 𝑘 𝜕𝑥𝑗 2 , 𝐸 = 2𝜈𝜈𝑡 𝜕2 𝑢 𝑘 𝜕𝑥𝑖 𝜕𝑥𝑗 2 LaunderSharmaKE.C  E 項は,各 𝑘 = 0,1,2 について,次のヘッセ行列の magSqr の和を計算して います(magSqrGradGrad,次ページ). 𝛻 𝛻𝑢 𝑘 = 𝜕2 𝑢 𝑘 𝜕𝑥0 𝜕𝑥0 𝜕2 𝑢 𝑘 𝜕𝑥0 𝜕𝑥1 𝜕2 𝑢 𝑘 𝜕𝑥0 𝜕𝑥2 𝜕2 𝑢 𝑘 𝜕𝑥1 𝜕𝑥0 𝜕2 𝑢 𝑘 𝜕𝑥1 𝜕𝑥1 𝜕2 𝑢 𝑘 𝜕𝑥1 𝜕𝑥2 𝜕2 𝑢 𝑘 𝜕𝑥2 𝜕𝑥0 𝜕2 𝑢 𝑘 𝜕𝑥2 𝜕𝑥1 𝜕2 𝑢 𝑘 𝜕𝑥2 𝜕𝑥2
  • 43. 43 Turbulent Flat Plate|流速分布 𝑢+ = 𝑢 𝑢 𝜏 𝑦+ = 𝑦𝑢 𝜏 𝜈  Turbulent Flat Plate [5] で検証 Spalding 則については こちらのスライドの 23 ページ
  • 46. 46 𝜀+ 分布に関して補足  前ページの図を見ると,対数則領域において,おおよそ次の関係が成り立っ ているのが分かります. 𝜀+ = 𝜀𝜈 𝑢 𝜏 4 = 1 𝜅𝑦+  これは次式のように変形できます. 𝜀 = 𝑢 𝜏 3 𝜅𝑦  この式に, 𝑢 𝜏 = 𝐶𝜇 1 4 𝑘 という関係式を代入すれば,壁関数を使用した場合 の境界条件 (epsilonWallFunction) で使用している関係式が得られます. 𝜀 𝑃 = 𝐶𝜇 3 4 𝑘 𝑃 3 2 𝜅𝑦 𝑃
  • 47. 47 Turbulent Flat Plate|k 方程式の項のバランス 𝜕𝑘 𝜕𝑡 + 𝜕 𝑢𝑗 𝑘 𝜕𝑥𝑗 − 𝜕 𝜕𝑥𝑗 𝜈 + 𝜈𝑡 𝜕𝑘 𝜕𝑥𝑗 = 𝑃𝑘 − 𝜀 + 𝐷 Production (生成) Dissipation (散逸) 対数則領域では,乱流エネルギーの 生成と散逸のバランスが取れています.
  • 48.  43 ページの図は,下記の gnuplot 設定ファイルを使用して作成しています.  この設定ファイルを,Uprofile.gp 等の名前で保存して,𝑦+ と𝑢+ の 計算結果ファイル data.txt を用意して,次のコマンドを実行します. gnuplot> load “Uprofile.gp" 48 付録|gnuplot の設定ファイル set terminal pngcairo enhanced size 800,600 set output "Uprofile.png" set title "Turbulent Flat Plate - Velocity Profile" set logscale x set mxtics 10 set format x "10^{%T}" set grid xtics mxtics ytics set xlabel "y+" set ylabel "u+" set key top left set parametric # u+ range set trange [0:25] # Spaldings law k=0.41 E=9.8 f(t) = t + (exp(k*t) - 1 - k*t*(1 + 0.5*k*t) - 1/6*(k*t)**3)/E set style line 1 lc rgb '#8b1a0e' pt 1 ps 1 lt 1 lw 2 # red set style line 2 lc rgb '#0072bd' pt 6 ps 1.5 lt 1 lw 2 # blue plot f(t),t title "Spalding" with lines ls 1,¥ "data.txt" title "OpenFOAM" with points ls 2
  • 49. 49 参考資料 [1] http://www.tfd.chalmers.se/~hani/kurser/OS_CFD/implementTurbulenceModel.pdf [2] http://foam.sourceforge.net/docs/Guides-a4/UserGuide.pdf [3] https://www.youtube.com/watch?v=Eu_4ppppQmw [4] Jones, W., and Launder, B. The prediction of laminarization with a two-equationmodel of turbulence. Int. J. HeatMass Transfer 15 (1972), 301–314. [5] http://www.grc.nasa.gov/WWW/wind/valid/fpturb/fpturb.html