時系列データの取得

2011年11月27日

はじめに

時系列データの取得方法について。

使用バージョン

OpenFOAM 2.0.1

ある点における時系列データの取得

たとえば、ある点における時系列データがほしい場合、system/controlDict に次のように設定する。

functions
{
    probes
    {
        type probes;
        functionObjectLibs ("libsampling.so");
        enabled true;
        outputControl timeStep;
        outputInterval 1;
        probeLocations
        (
            ( 0.05 0.05 0 )
        );
        fields
        (
            U p
        );
     }
}

計算を実行すると "probes" (この名前は任意) ディレクトリ内に時系列データが作成される。

平均値などの取得

system/controlDict に次のように設定すれば、平均値を得ることができる。

functions
(
    face
    {
        type            faceSource;
        functionObjectLibs ("libfieldFunctionObjects.so");
        enabled         true;
        outputControl   timeStep;
        outputInterval  1;
        log             true;
        valueOutput     false;
        source          faceZone;
        sourceName      f0;
        operation       areaAverage;
        fields
        (
            U p
        );
    }

    cell
    {
        type            cellSource;
        functionObjectLibs ("libfieldFunctionObjects.so");
        enabled         true;
        outputControl   timeStep;
        outputInterval  1;
        log             true;
        valueOutput     false;
        source          cellZone;
        sourceName      c0;
        operation       volAverage;
        fields
        (
            U p
        );
    }
);

sourceName で指定している "f0", "c0" はゾーン名であり、前もって作っておく必要がある。outputControl には "outputTime" (計算結果の出力に合わせる) を指定できる (この場合 outputInterval は必要ない)。operation には、上記以外では faceSource の場合 areaIntegrate, min, max, sum などが、cellSource の場合 volIntegrate, min, max, sum などが指定できる。

faceSource の場合、source に "patch" を指定できる。sourceName でパッチ名を指定する。

functions
(
    inletMassFlow
    {
        type            faceSource;
        functionObjectLibs ("libfieldFunctionObjects.so");
        enabled         true;
        outputControl   timeStep;
        outputInterval  1;
        log             true;
        valueOutput     false;
        source          patch;
        sourceName      inlet;
        operation       sum;
        fields
        (
            phi
        );
    }
);

最小値・最大値の取得

system/controlDict に次のように設定すれば、最小値・最大値を得ることができる。

functions
{
    fieldMinMax
    {
        type fieldMinMax;
        functionObjectLibs ("libfieldFunctionObjects.so");
        enabled         true;
        outputControl   outputTime;
        mode            magnitude;
        fields
        (
            U p
        );
    }
}