非定常境界条件2014年8月20日 | |
使用バージョンOpenFOAM 2.3.0 非定常境界条件時間によって変化する境界条件を設定するには、境界条件タイプ "uniformFixedValue" などを使う。時間依存境界条件の設定方法は OpenFOAM 2.1.0 で実装された機能で、これ以外にも "flowRateInletVelocity", "rotatingWallVelocity" などでも同様の設定ができる。 まず、時間変化しない場合。 0/U
inlet
{
type uniformFixedValue;
uniformValue constant (10 0 0);
}
境界 "inlet" に u = (10, 0, 0) を設定している。 テーブル入力。
inlet
{
type uniformFixedValue;
uniformValue table
(
(0 (0 0 0))
(0.01 (10 0 0))
);
}
ここでは t = 0 で u = (0, 0, 0), t = 0.01 で u = (10, 0, 0) としている。以下同様。 ファイルでテーブル入力。
inlet
{
type uniformFixedValue;
uniformValue tableFile;
tableFileCoeffs
{
fileName "$FOAM_CASE/velocity"
outOfBounds clamp;
}
}
$FOAM_CASE はケースディレクトリのパス。velocity は以下の内容のファイル。 velocity
(
(0 (0 0 0))
(0.01 (10 0 0))
)
"outOfBounds" は、計算時間がリストのデータをはみ出してしまったときの挙動を指定する。次のものが指定できる。
CSV で入力。
inlet
{
type uniformFixedValue;
uniformValue csvFile;
csvFileCoeffs
{
fileName "$FOAM_CASE/velocity.csv"
outOfBounds clamp;
nHeaderLine 1;
mergeSeparators no;
separator ",";
refColumn 0;
componentColumns (1 2 3);
}
}
velocity.csv time,velocity-x,velocity-y,velocity-z 0,0,0,0 0.01,10,0,0 "nHeaderLine" は説明部分の行数 (無視する行数) の指定。"separator" で区切り文字を変更できる。"refColumn" は時間の列番号、"componentColumns" は速度成分それぞれの列番号を指定。 境界条件タイプ "flowRateInletVelocity" などでは、多項式形式でも指定できる。
inlet
{
type flowRateInletVelocity;
volumetricFlowRate polynomial
(
(2.54e-2 1)
);
}
ここでは流量に 2.54e-2*t を指定している。"(2.54e-2 1)" の 1 つ目の値は係数で、2 つ目の値は変数の指数である。流量に 2.54*t*t を指定したければ、以下のようにすればよい。
inlet
{
type flowRateInletVelocity;
volumetricFlowRate polynomial
(
(2.54 2)
);
}
実行時コードコンパイルによる方法OpenFOAM 2.0.0 で実装された実行時コードコンパイル (Run-Time Code Compilation) により、直接時間を参照して非定常境界条件を与えることもできる。
inlet
{
type codedFixedValue;
value uniform (0 0 0);
redirectType sineVelocity;
code
#{
fvPatchField<vector> f(
patch().lookupPatchField<volVectorField, vector>("U")
);
const scalar t = this->db().time().timeOutputValue();
const scalar pi = constant::mathematical::pi;
forAll(patch().Cf(), i)
{
f[i] = vector(10.*sin(2.*pi*t/0.1), 0, 0);
}
operator==(f);
#};
}
古い情報 | |
| PENGUINITIS | |