OpenFOAM【インプットファイルの読み込み】

laplacianFoamのtransportPropertiesを修正して作成しました。新しくインプット用のファイル(myProperties)を作成し、物性として温度T0を読み込みます。

createFields.Hに追加します。

IOdictionary myProperties
(
    IOobject
    (
        "myProperties",
        runTime.constant(),
        mesh,
        IOobject::MUST_READ,
        IOobject::NO_WRITE
    )
);

dimensionedScalar T0 ( myProperties.lookup("T0") );

実行時には/constantにmyPropertiesという名前のファイルを作成し、以下を書き込みます。

FoamFile
{
    version     2.0;
    format      ascii;
    class       dictionary;
    location    "constant";
    object      myProperties;
}
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //

T0              T0    [0 0 0 1 0 0 0] 373.;
コーディングで注意すること

こうやって読み込んだT0は単位とか名前とかを持っているオブジェクトになっているので、値についての足し算や比較などの演算をそのままやろうとするとエラーが出ます。値を使う場合には、.value()で引っ張ってきます。たとえば

    forAll(X, i){
        if( T[i] > T0.value() ) {
            X[i] = 1.0;
        }
 }

いろいろといじってみましたが、この形に落ち着きました。

参考にしました

PENGUINITIS - データの読み込み

PENGUINITIS - 入出力オブジェクト

PENGUINITIS - OpenFOAM プログラミングメモ

https://www.cfd-online.com/Forums/openfoam-programming-development/93820-how-get-single-value-volscalarfield-including-dimension.html