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