OpenFOAM【スカラーフィールドの設定】

laplacianFoamにスカラーフィールドを追加しました。ちょっとひねって、温度に依存して指数関数的に減衰していきます(反応率のイメージ)

createField.Hに追加
volScalarField X
(
    IOobject
    (
        "X",
        runTime.timeName(),
        mesh,
        IOobject::MUST_READ,
        IOobject::AUTO_WRITE
    ),
    mesh
);

反応率Xを定義しています。温度と同様に初期条件を(一応)突っ込むので、MUST_READ、結果を出したいのでAUTO_WRITE

laplacianFoam.Cに追加
        forAll(X, i){
            X[i] = Foam::exp(-0.001*T[i]);
        };

温度場を解いて、結果を出力する前あたりに挟み込みます。expを使うには、Foam::が必要。

/0にXを作成
FoamFile
{
    version     2.0;
    format      ascii;
    class       volScalarField;
    object      X;
}
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //

dimensions      [0 0 0 0 0 0 0];

internalField   uniform 1;

boundaryField
{
    Walls
    {
        type            zeroGradient;
    }

    HotWall
    {
        type            zeroGradient;
    }

    ColdWall
    {
        type            zeroGradient;
    }
}

Tの初期条件を参考に作成します。

コンパイル・実行

wmakeコマンドでコンパイルし、実行すると結果が出力されます。

可視化

paraFoamで可視化します。applyする前に出力するデータとして"X"をチェックすること。

参考にしました

PENGUINITIS - スカラーフィールド

https://www.cfd-online.com/Forums/openfoam-programming-development/176702-call-overloaded-exp-double-ambiguous.html