OpenFOAM 8に乱流モデルを追加する

# OpenFOAM 3から７まで
OpenFOAMの3から7までは下記のやり方で大丈夫だと思います。

https://qiita.com/ishigaki/items/06e69f2c675c58907691

# 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
```
に　
```c++
#include "kEpsilon2.H"
makeRASModel(kEpsilon2);
```
を追記します。

incompressibleのモデル追加は
```
src/MomentumTransportModels/incompressible/kinematicMomentumTransportModels/kinematicMomentumTransportModels.C
```
に　
```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にいたってはソルバが集約されて，個別の改造はどうするんだって感じでだし。。。