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
© Copyright 2024 ExpyDoc