関数による2次元分布を持った非定常境界条件の設定

533 views
Skip to first unread message

mou

unread,
Dec 1, 2011, 6:51:26 AM12/1/11
to OpenFOAM
mouです,お世話になっています.

3次元の固体内熱伝導を解く仮定で,関数による非定常境界条件(壁面温度)を与えることを考えています.
このとき,非定常に変化するパラメータが2次元的な面の分布を持っている場合を想定しているのですが,今のところ良い案が見つかっていません.良い方法
はないでしょうか?
なお,関数による境界条件はgroovyBCによって与えています.


例えば非定常に変化するパラメータが分布を持たないようなものの場合は計算することが可能です.

以下の例ではtopというパッチ(面)に熱伝達率hを境界条件として与え,非定常に変化する空気温度Tgを与えた例です.
熱伝達率hは分布を持っており,0/hを作り,nonuniform List<scalar>形式で縦一列に書かれたデータを与えています.

0/Tにおいて以下のようにgroovyBCを設定してやり,Tg(空気温度)の時間変化を書いたファイルTg.datを作っています.
(top以外のパッチについては省略しています.)

0/T
dimensions [0 0 0 1 0 0 0];

internalField uniform 300;

boundaryField
{
top
{
type groovyBC;
timelines
(
{
name Tg;
fileName "0/Tg.dat";
outOfBounds clamp;
}
);
value uniform 300;

gradientExpression "gradT";
fractionExpression "0";
variables "rho=(密度);c=(比熱);DT=(温度伝導率);gradT=h*(Tg-T)/(rho*c*DT);";
}
}

0/Tgはこのような感じです.
0/Tg.dat
(

( 0 310 )

( 1 311 )

( 2 312 )

( 3 313 )

)

ohbuchi

unread,
Dec 1, 2011, 11:58:00 PM12/1/11
to OpenFOAM
こんにちは。
分布が関数で定義できるのならば、下記サイトにある通り
patchフェース中心座標 (pos().X,pos().Y,pos().Z) と時刻 timeを使って
valueExpression を記述できるはずです。


http://openfoamwiki.net/index.php/Contrib_groovyBC

mou

unread,
Dec 2, 2011, 1:42:13 AM12/2/11
to OpenFOAM
ohbuchi様

回答どうもありがとうございます.
与える分布(壁面温度)は関数で定義されないような分布となっています.
このような場合には不可能なのでしょうか…

> > )- 引用テキストを表示しない -
>
> - 引用テキストを表示 -

ohbuchi

unread,
Dec 2, 2011, 4:47:32 PM12/2/11
to OpenFOAM
こんにちは。
timeVaryingMappedFixedValueを使えば、時間空間を補間して境界条件を
設定できます。下記チュートリアルを参考にしてください。
tutorials/incompressible/simpleFoam/pitzDailyExpInlet
このチュートリアルでは、constant/boundaryData
でサンプルポイントpointsでパッチのデータを時間ごとにファイルで定義します。
ソルバはパッチの境界値を時間&空間的に補間して設定します。

mou

unread,
Dec 3, 2011, 12:38:29 PM12/3/11
to OpenFOAM
ohbuchi様

返信ありがとうございます.
上記方法で分布を時間変化させることができました.
アドバイスありがとうございました.

> > > - 引用テキストを表示 -- 引用テキストを表示しない -
>
> - 引用テキストを表示 -

Reply all
Reply to author
Forward
0 new messages