OpenFOAM 3から7まで
OpenFOAMの3から7までは下記のやり方で大丈夫だと思います。
OpenFOAM 8に乱流モデルを追加する
8からsrc/TurbulenceModelsがなくなり,src/MomentumTransportModelsに乱流モデルを入れるようになりました。
乱流モデル自体のソース
kEpsilonを改造して,kEpsilon2というモデルを作るとします。そのソースコードは
src/MomentumTransportModels/momentumTransportModels/RAS
の下に
kEpsilon2というディレクトリをつくって,.Cと.Hのファイルをおきます。話の都合上,これらのファイルもkEpsilon2.C, kEpsilon2.Hという名前になってるとします。
src/MomentumTransportModels/momentumTransportModels/RASにRANSのモデルがあります。
乱流モデルの名前の記述
src/MomentumTransportModels/の下にcompressibleとincomprssibleというディレクトリがあります。compressibleでのモデル追加は
src/MomentumTransportModels/compressible/fluidThermoMomentumTransportModels/fluidThermoMomentumTransportModels.C
に
#include "kEpsilon2.H"
makeRASModel(kEpsilon2);
を追記します。
incompressibleのモデル追加は
src/MomentumTransportModels/incompressible/kinematicMomentumTransportModels/kinematicMomentumTransportModels.C
に
#include "kEpsilon2.H"
makeRASModel(kEpsilon2);
を追記します。
OpenFOAM 9の場合
圧縮性は
src/MomentumTransportModels/compressible/dynamicMomentumTransportModels/dynamicMomentumTransportModels.C
非圧縮は
src/MomentumTransportModels/incompressible/kinematicMomentumTransportModels/kinematicMomentumTransportModels.C
に書きます。
lnIncludeを一旦消す
モデルの追加なので,すでに乱流モデルのビルドは終わっていると思います。追加したモデルのビルドのまえにlnIncludeを消します。(これをやらないとソースコードが見つからないとエラーします。正しいお作法があるような気もしますが,とりあえず,これでなんとかします)
src/MomentumTransportModels/momentumTransportModels/lnInclude
をけしてから,
src/MomentumTransportModels
のなかのAllwmakeを実行します。
./Allwmake
渦熱拡散係数とか乱流Prandtl数とかも修正したい。
渦熱拡散係数(alphat)や乱流Pr数とかは
src/ThermophysicalTransportModels/turbulence/eddyDiffusivity
で定義されています。
もしこれらの変数を修正したいときはeddyDiffusivityをコピーして新しく作ったほうがいいです。
eddyDiffusivity2を作るとして,
src/ThermophysicalTransportModels/turbulence/
にeddyDiffusivity2というディレクトリをつくって,ソースコードをいれておきます。rhoReactionThermoを使う場合は
src/ThermophysicalTransportModels/rhoReactionThermophysicalTransportModels.C
に
#include "eddyDiffusivity2.H"
makeRASLESThermophysicalTransportModel(RAS, eddyDiffusivity2);
を追記します。
src/ThermophysicalTransportModels/lnInclude
と
src/ThermophysicalTransportModels/rhoReactionThermo/lnInclude
を消してから,
src/ThermophysicalTransportModels/Allwmake
を実行します。
自作のeddyDiffusivity2モデルを使うにはconstantにthermophysicalTransportというファイルをつくって,
/*--------------------------------*- C++ -*----------------------------------*\
========= |
\\ / F ield | OpenFOAM: The Open Source CFD Toolbox
\\ / O peration | Website: https://openfoam.org
\\ / A nd | Version: 8
\\/ M anipulation |
\*---------------------------------------------------------------------------*/
FoamFile
{
version 2.0;
format ascii;
class dictionary;
location "constant";
object thermophysicalTransport;
}
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
RAS
{
model eddyDiffusivity2;
Prt 0.85;
}
// ************************************************************************* //
とか書いて使います。Prtはここでは0.85に設定してます。thermophysicalPropertiesとかと別なので注意。
感想
年々乱流モデルの追加が難しくなっていってるような。。。
OpenFOAM11にいたってはソルバが集約されて,個別の改造はどうするんだって感じでだし。。。