非定常境界条件

2012年11月4日

使用バージョン

OpenFOAM 2.1.1

非定常境界条件

時間によって変化する境界条件を設定するには、境界条件タイプ "uniformFixedValue" などを使う。時間依存境界条件の設定方法は OpenFOAM 2.1.0 で実装された機能で、これ以外にも "flowRateInletVelocity", "rotatingWallVelocity" などでも同様の設定ができるらしい。

まず、時間変化しない場合。

0/U

    left
    {
        type            uniformFixedValue;
        uniformValue    constant (1 0 0);
    }

境界 "left" に u = (1, 0, 0) を設定している。

テーブル入力。

    left
    {
        type            uniformFixedValue;
        uniformValue    table
        (
            (0   (0 0 0))
            (0.5 (1 0 0))
        );
    }

ここでは t = 0 で u = (0, 0, 0), t = 0.5 で u = (1, 0, 0) としている。以下同様。

ファイルでテーブル入力。

    left
    {
        type            uniformFixedValue;
        uniformValue    tableFile;
        tableFileCoeffs
        {
            fileName    "$FOAM_CASE/velocity"
            outOfBounds clamp;
        }
    }

$FOAM_CASE はケースディレクトリのパス。velocity は以下の内容のファイル。

velocity

(
    (0   (0 0 0))
    (0.5 (1 0 0))
)

"outOfBounds" は、計算時間がリストのデータをはみ出してしまったときの挙動を指定する。次のものが指定できる。

  • clamp: はみ出たら最後の値をそれ以後使う。
  • repeat: データを繰り返す。
  • error: はみ出たら止まる。
  • warn: はみ出たら警告を出す。値は clamp と同じ。

CSV で入力。

    left
    {
        type            uniformFixedValue;
        uniformValue    csvFile;
        csvFileCoeffs
        {
            fileName      "$FOAM_CASE/velocity.csv"
            outOfBounds   clamp;
            hasHeaderLine true;
            refColumn     0;
            componentColumns (1 2 3);
        }
    }

velocity.csv

time,velocity-x,velocity-y,velocity-z
0,0,0,0
0.5,1,0,0

"hasHeaderLine" は 1 行目に項目の説明の行があるかないか (1 行目を無視するか否か) の指定。"refColumn" は時間の列番号、"componentColumns" は速度成分それぞれの列番号を指定。