OpenFOAM【laplacianFOAMの改造】

laplacianFOAMの改造に取り組みました。目的は有効熱拡散係数のDTを温度の関数にすること。

やったこと

  • createField.Hを修正する。
 34 dimensionedScalar A
 35 (
 36    transportProperties.lookup("A")
 37 );
 38 
 39 volScalarField DT
 40 (
 41     IOobject
 42     (
 43         "DT",
 44         runTime.timeName(),
 45         mesh,
 46         IOobject::NO_READ,
 47         IOobject::AUTO_WRITE
 48     ),
 49     3*A*T // <-この辺が温度を変数にしたかった部分。
 50 );
  • メインプログラムを修正する
 53     while (simple.loop(runTime))
 54     {
 55         Info<< "Time = " << runTime.timeName() << nl << endl;
 56 
 57         while (simple.correctNonOrthogonal())
 58         {
 59             // ↓ここを追加
 60             DT = 3*A*T;
 61             fvScalarMatrix TEqn
 62             (
 63                 fvm::ddt(T) - fvm::laplacian(DT, T)
 64              ==
 65                 fvOptions(T)
 66             );
 67 
 68             fvOptions.constrain(TEqn);
 69             TEqn.solve();
 70             fvOptions.correct(T);
 71         }
 72 
 73         #include "write.H"
 74 
 75         Info<< "ExecutionTime = " << runTime.elapsedCpuTime() << " s"
 76             << "  ClockTime = " << runTime.elapsedClockTime() << " s"
 77             << nl << endl;
 78     }
  • transportPropertiesも修正
 18 DT            DT [0 2 -1  0 0 0 0] 4e-05;
 19 A              A [0 2 -1 -1 0 0 0] 4e-08;

注意しよう

  • 特に設定変更せず、メインプログラムにDT=3.*Tみたいな計算は全然ダメ。
  • DTをvolSclarFieldにしてDT=3.Tみたいにすると、コンパイルはできるが、実行時エラー。演算ができないみたい。
  • transPropertiesの中で、DTを忘れずに定義する(単位が重要)

メモ書き

  • Dimensionsの中の数字は、[kg m s K mol A Cd]の順にSI単位系を記載。
  • volScalarField はスカラー場の意味。

参考にしました

http://www.opencae.or.jp/wp-content/uploads/2015/06/9th_ogata.pdf