OpenFOAMでの境界条件について

2,394 views
Skip to first unread message

mou

unread,
May 9, 2011, 10:09:00 PM5/9/11
to OpenFOAM
お世話になっています、mouです。

laplacianFoamを用いて熱伝導を解く際に、境界条件として熱伝達境界を考えることは可能でしょうか?
表面温度や温度勾配を境界条件として与えることはやってきましたが、熱伝達率を境界条件として直接与える必要があります。普通の計算ソフトならばできな
いこともない気がするのですが…
ご回答よろしくお願いします。

Mihoko Terasawa

unread,
May 10, 2011, 4:57:55 AM5/10/11
to OpenFOAM

はじめまして。teraと申します

OpenFoamに関しては初心者ですが、以前lapracianFoamで同じようなケースを解いたので回答させていただきます。

表面熱伝達の熱バランス式ですが、一般には
Q=-k∇T= αc(Ta-Ts)( k:熱伝導率、 h:熱伝達率、Ts:表面温度、Ta:外気温度)
となるので、
lapracianFoamで熱伝達境界を与えるには、grad(T)を固体表面の温度Tsの関数で解いてやる必要があります。
さらに熱伝導率kは熱拡散係数DTと熱容量Cの積であるので、
grad(T)=αc(Ta-Ts)/(C*DT)となります。

これを解くためのプリセットの境界条件は用意されているかもしれませんが、
groovyBCで解くのが楽かと思います。

groovyBC(1.5、1.6の場合)
http://openfoamwiki.net/index.php/Contrib_groovyBC
swak4Foam(1.6、1.7の場合)
http://openfoamwiki.net/index.php/Contrib/swak4Foam

どっちも使い方はほぼ同じです。くわしい使い方はサイトをご参照ください。
設定条件はこんな感じだったと思います。

0/T

boundaryField
{
wall
{
type groovyBC;
value uniform 290;
gradientExpression "gradT";
fractionExpression "0";
variables "C=(固体の熱容量);Tout=(外気温度);alfac=(外気の熱伝達率);gradT=alfac*(Tout-
internalField(T))/C/DT;";
}
...

ちなみにgradT(=grad(T))はVolScalarFieldとして与える必要があります。

やり方としては
lapracianFoamを改造してコンパイル→swak4Foamをダウンロードしてコンパイル→熱流を与えたい面についてgroovyBCを設定
して回す
でしょうか。

それでは。

mou

unread,
May 10, 2011, 8:59:55 AM5/10/11
to OpenFOAM
mouです。

非常に参考になりました!どうもありがとうございます。
groovyBCについてまだよく理解していないため、数点お伺いしたいのですが、

①境界条件で与えているgradTの式についてですが、internalField(T)はその都度更新される個体表面の温度Tsを表しているのでしょ
うか?
②熱伝達率alfacなどを2次元分布(縦一列のリスト形式になるとは思いますが…)として与えたいのですが、どこで記述すればよいのでしょうか?

すみませんがこの2点についてよろしくおねがいいたします。
> > ご回答よろしくお願いします。- 引用テキストを表示しない -
>
> - 引用テキストを表示 -

Masashi Imano

unread,
May 10, 2011, 11:39:52 AM5/10/11
to open...@googlegroups.com
今野です。

swak4Foamライブラリについて、以前学生にメールしたことがあるので、ここで再度投稿しておきます。

== swak4Foamライブラリの導入 ==

=== bisonのインストール ===

swak4Foamライブラリをコンパイルするにはbisonというソフトウェアが必要です。
Ubuntu上では以下のようにしてインストールできます。

sudo apt-get install bison

この後パスワードが聞かれますので、自分のログインパスワードを入れてください。

== swak4Foamライブラリのソースの入手とコンパイル ==

非標準のライブラリーを置く場所は以下のようにして作成し、移動します。

run
cd ..
mkdir Libraries
cd Libraries

ソースの入手方法は以下のWebページに書いてあります。

http://openfoamwiki.net/index.php/Contrib/swak4Foam

具体的には以下のコマンドを打ちます。

svn checkout https://openfoam-extend.svn.sourceforge.net/svnroot/openfoam-extend/trunk/Breeder_1.7/libraries/swak4Foam/

すると、swak4Foamというディレクトリができると思いますので、そこに移動します。

cd swak4Foam

さらに、swak4FoamのコンパイルにはsimpleFunctionObjectsのライブラリ

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

が必要なので、以下のようにしてソースを取得します。

cd Libraries
svn checkout https://openfoam-extend.svn.sourceforge.net/svnroot/openfoam-extend/trunk/Breeder_1.6/libraries/simpleFunctionObjects

この後、swak4Foam全体をコンパイルします。

cd ..
wmake all

== 熱流境界条件の熱流体のチュートリアルケース ==

自分が作成してアップロードしているケースが以下にあるので、これを参考にしてください。

AirConditionedRoom
http://openfoamwiki.net/index.php/Main_ContribExamples/AirConditionedRoom

以下のように取得と実行ができます。

run
wget http://openfoamwiki.net/images/0/0a/AirConditionedRoom-2011021001.tar.gz
tar zxvpf AirConditionedRoom-2011021001.tar.gz
cd airConditionedRoom
./Allrun

Masashi Imano

unread,
May 10, 2011, 11:55:39 AM5/10/11
to open...@googlegroups.com
今野です。

> ①境界条件で与えているgradTの式についてですが、internalField(T)はその都度更新される個体表面の温度Tsを表しているのでしょ
> うか?

internalFieldは、以下に書いてある通り、内部の値(パッチに隣接する第一格子の値)を参照するのだったと思います。

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

internalField
internal values of that field

パッチ表面の温度を取得するのであれば、単にTで良かったと思います。

> ②熱伝達率alfacなどを2次元分布(縦一列のリスト形式になるとは思いますが…)として与えたいのですが、どこで記述すればよいのでしょうか?

groovyBCで変数の空間分布を与える方法は寡聞にして知りません。

無理矢理分布を与えるのなら、熱伝達率のvolScalarFieldを定義してファイルから読み込むようにlaplatianFoam
を改造してしまえば、その境界条件で分布を与えられますが、、

どなたか、スマートに与える方法をご存じでしたら教えてください。

Tera

unread,
May 11, 2011, 12:08:24 AM5/11/11
to OpenFOAM
境界条件に与える値についてですが、
同じような設定で単純にTを入れた場合、一瞬で発散してしまいました…
(流体計算にて熱流を表面温度の関数とした場合ですが)
internalField(T)ならば発散しなかったです。

計算上、自己参照になっているからではないか、と思いますが、よくわかりません。
わかる方がいらっしゃったら教えていただきたいです…。
たとえば別のpatchの値を参照して取り扱う、などの場合には収束するようなので、Tの呼出方法自体は単純に扱って問題はないと思います。

流体計算では表面温度=表面隣接セル温度とはいえないと思うのでこのあたりの解釈は難しい気がしますが、
固体ならば表面温度=隣接セル温度 と置いてもいいのではないかと思うので、安全のためにinternalFieldを使っておくほうがいいかと。
ただ、表面付近のセルは細かくする必要があります。

alfacの設定については、置きたい分布の細かさによるのではないかと思います。
もし部位ごとに大まかに代入したいだけならばリストを入れるよりpatchを分割してしまうほうが簡便です。
そうではなく、たとえばsimpleFoamで計算した風速分布をalfacに換算して代入したい、などの場合は今野さんがおっしゃったような
alfacをvolScalarFieldで与える方法しかわからないです。

その場合、事前準備として
1)constant/controlDict の writeFormat をasciiにする。
2)コマンド writeCellCentres -time 0
として0/cc{x,y,z}内のpatch内のセルの位置を調べて、excelなどでその通りに持っているalfacの分布を並べ替える
などの作業が必要で、かなり面倒な気がします…
あと、この場合simpleFoamのメッシュとlapracianFoamのメッシュが適合している必要性があります。

他のCFDなどのソフトで与えた物理量分布を読み込む方法で、なにか簡便な手法があれば教えていただきたいです。
自分でスクリプトを組むしかないのでしょうか。

mou

unread,
May 14, 2011, 12:14:43 PM5/14/11
to OpenFOAM
mouです。

返信が遅くなってしまいましたが、お二方のご意見非常に参考になりました。
本当にありがとうございます。

与えたい境界条件の分布が結構細かいもののため、
結局、新しく変数を定義してやり、リスト形式で与えてやりました。
計算も発散せずに終えることができました。

また質問の機会があったらどうぞよろしくお願いいたします。
ありがとうございました。

Masashi Imano

unread,
May 14, 2011, 12:36:11 PM5/14/11
to open...@googlegroups.com
今野です。

計算ができたようで良かったですね。

よろしければ、他に方のためにも、ソルバーのカスタマイズ方法や温度の境界条件の与え方を
具体的に書いて頂けると幸いです。

2011/5/15 mou <kon...@yahoo.co.jp>:

> --
> このメールは Google グループのグループ「OpenFOAM」の登録者に送られています。
> このグループに投稿するには、open...@googlegroups.com にメールを送信してください。
> このグループから退会するには、openfoam+u...@googlegroups.com にメールを送信してください。
> 詳細については、http://groups.google.com/group/openfoam?hl=ja からこのグループにアクセスしてください。
>
>

--
IMANO Masashi, Ph.D.
Assistant Professor
Department of Architecture, Graduate School of Engineering,
The University of Tokyo
7-3-1, Hongo, Bunkyo-ku, Tokyo, Japan, 113-8656
E-mail:im...@arch.t.u-tokyo.ac.jp
Phone:+81-3-5841-6164(direct), +81-3-5841-6179(Labo.)
Facsimile:+81-3-5841-8511

mou

unread,
May 20, 2011, 11:06:11 PM5/20/11
to OpenFOAM
こんにちは。
具体的な境界条件の与え方等、時間ができましたら追記させていただきます。

今回は一つだけわからないことがありまして、お聞きしたいのですが、

物体の表面のパッチに境界条件として温度勾配を与える際に、
その温度勾配というのはどこの温度勾配を表しているのでしょうか?
考えられるのは表面に最も近く、そのパッチを面として含むメッシュですが…

よろしくお願いします。


On 5月15日, 午前1:36, Masashi Imano <masashi.im...@gmail.com> wrote:
> 今野です。
>
> 計算ができたようで良かったですね。
>
> よろしければ、他に方のためにも、ソルバーのカスタマイズ方法や温度の境界条件の与え方を
> 具体的に書いて頂けると幸いです。
>
> 2011/5/15 mou <koni...@yahoo.co.jp>:
>
>
>
>
>
> > mouです。
>
> > 返信が遅くなってしまいましたが、お二方のご意見非常に参考になりました。
> > 本当にありがとうございます。
>
> > 与えたい境界条件の分布が結構細かいもののため、
> > 結局、新しく変数を定義してやり、リスト形式で与えてやりました。
> > 計算も発散せずに終えることができました。
>
> > また質問の機会があったらどうぞよろしくお願いいたします。
> > ありがとうございました。
>
> > --
> > このメールは Google グループのグループ「OpenFOAM」の登録者に送られています。
> > このグループに投稿するには、open...@googlegroups.com にメールを送信してください。
> > このグループから退会するには、openfoam+u...@googlegroups.com にメールを送信してください。
> > 詳細については、http://groups.google.com/group/openfoam?hl=jaからこのグループにアクセスしてください。
>
> --
> IMANO Masashi, Ph.D.
> Assistant Professor
> Department of Architecture, Graduate School of Engineering,
> The University of Tokyo
> 7-3-1, Hongo, Bunkyo-ku, Tokyo, Japan, 113-8656
> E-mail:im...@arch.t.u-tokyo.ac.jp
> Phone:+81-3-5841-6164(direct), +81-3-5841-6179(Labo.)
> Facsimile:+81-3-5841-8511- 引用テキストを表示しない -
>
> - 引用テキストを表示 -
Reply all
Reply to author
Forward
0 new messages