スライド 1

chtMultiRegionSimpleFoamの改造(1)
~ソースを眺める~
片山達也
2012/1/28
第10回OpenFOAM勉強会 for beginner @関西
1
目標

chtMultiRegionSimpleFoamは熱輸送/熱伝導
連成ソルバで圧縮性流体を用いている

非圧縮性バージョンがほしい
ソルバ名
流体 熱輸送
固体 熱伝導
chtMultiRegionSimpeFoa
m
buoyantSimpleRadiati laplacianFoam似
onFoam似
chtMultiRegionBuoyantB
oussinesqSimpleFoam
buoyantBoussinesqSi 同上(変更しない)
mpleFoam
作りたいソルバ
2012/1/28
第10回OpenFOAM勉強会 for beginner @関西
2
まずは

マルチリージョンソルバと単領域ソルバの違い
を比較する
 どこを改造すべきか調べる
 あまり深い部分はわからないので概略を理解する

バージョンはOpenFOAM-2.0.1
2012/1/28
第10回OpenFOAM勉強会 for beginner @関西
3
MultiRegionソルバをうっすら眺める 1

chtMultiRegionSimpleFoam.C(抜粋)
必要なヘッダー
ファイルをインク
ルード
下の”rp”を作る
ために必要
お約束?
“rp”は流体・固体領域に
どんな名前の領域がある
か保持している
単領域ソルバでいう
createMesh.H
2012/1/28
第10回OpenFOAM勉強会 for beginner @関西
4
MultiRegionソルバをうっすら眺める 2

chtMultiRegionSimpleFoam.C(抜粋)
単領域ソルバでいう
createFields.H
連続の式の残差の
初期化
各流体領域についてのループ
他のソルバと同じよう
に各フィールドにアク
セスできるようにする
各方程式を解く
単領域ソルバでいう
simpleControl simple(mesh);
2012/1/28
第10回OpenFOAM勉強会 for beginner @関西
5
MultiRegionソルバをうっすら眺める 3

chtMultiRegionSimpleFoam.C(抜粋)
各固体領域についてのループ
setRegionFl
uidFields.H
の固体版
各方程式を解く
readFluidMultRegionSIMPLEControls.Hの固体版
データ出力(writeInterval毎)
まとめ
2012/1/28
第10回OpenFOAM勉強会 for beginner @関西
6
createMesh.HとcreateFluidMeshes.H

単領域(createMesh.H抜粋)
メッシュ情報を持つ “mesh”


デフォルトのファイルから
読み込むよ
マルチリージョン(createFluidMeshes.H抜粋)
“fluidRegions”リストに追加
領域番号
メッシュ情報を持つインスタンス
領域名のファイルから
読み込むよ
“mesh”のかわりに”fluidRegions[i]”でメッシュ情報にアクセスできる
p. 4へ戻る
2012/1/28
第10回OpenFOAM勉強会 for beginner @関西
7
createFields.HとcreateFluidFields.H

createFields.H(buoyantSimpleRadiationFoam)
volScalarField の “rho”
“rho”ファイルから読み込む
メッシュの情報は“mesh”が
持っている

createFluidFields.H
“rhoFluid”リストに追加
領域番号と
volScalarFeild を持っている
“mesh”の部分が
“fluidRegion[i]”になっている
“thermo”の部分が
“thermoFluid[i]”になっている
p. 5へ戻る
“rho”のかわりに”rhoFluid[i]”で密度を格納するvolScalarFieldに
アクセスできる
2012/1/28 第10回OpenFOAM勉強会 for beginner @関西
8
setRegionFluidFields.H

setRegionFluidFields.H(抜粋)
マルチリージョンのフィールドは○○Fluid[i]のようにリスト形
式で保持されている。
ややこしいので、
他のソルバと同じように各フィールドにアクセスできるよう
にしている。
p. 5へ戻る
2012/1/28
第10回OpenFOAM勉強会 for beginner @関西
9
solveFluid.H

buoyantSimpleRadiationFoam.C(抜粋)
setRegionFluidFields.Hのおかげで、
ほぼ単領域ソルバと同じ記述

p. 5へ戻る
solveFluid.H
もちろん各方程式○Eqn.Hも
ほぼ同じ
2012/1/28
第10回OpenFOAM勉強会 for beginner @関西
10
まとめ

下記3ファイルを中心に改造すれば良さそう
 createFluidFields.H
 setRegionFields.H
 solveFluid.H

createFluidFields.Hの書き方がcreateFields.Hと
違うが、setRegionFields.Hのおかげで、ソルバ
部分は単領域の場合と同じように記述できる。
2012/1/28
第10回OpenFOAM勉強会 for beginner @関西
11
今後

改造&テスト
 温度境界のカップリングが悩ましい

実は、
 CFD OnlineにOpenFOAM-1.6-ext向けの
「chtIcoMultiRegionFoam」なるものが・・・
chtIcoMultiRegionFoam - Incompressible version of
chtMultiRegionFoam.
くじけず参考にしつつ進めていく
2012/1/28
第10回OpenFOAM勉強会 for beginner @関西
12