openfoam の移動境界 dynamic mesh の機能について
TRANSCRIPT
Fumiya Nozaki
2014/03/02,第1版
OpenFOAMでの移動境界の取り扱い
Dynamic Mesh
Keywords: • Dynamic Mesh
OpenFOAM v2.3.0
2
CFDにおける移動境界
http://commons.wikimedia.org/wiki/ File:Four_stroke_cycle_compression.jpg
http://www.michael-smith-engineers.co.uk/ products/gear-pumps/viking-gerotor.htm
http://www.ge-energy.com/products_and_services/ products/wind_turbines/ges_2.5_120_wind_turbine.jsp
エンジンの燃焼室 内接ギヤポンプのポンプ室
風力タービン
境界が移動することで計算領域の形状が時間とともに変化するような流体計算では,その境界の移動に伴うメッシュの移動・変形の取り扱いが重要です.
移動境界を考慮する製品例には以下のようなものがあります.
3
移動境界の分類:計算領域の形状の変化から
境界が移動するとき,その境界に囲まれる領域の変形の仕方には 大きく3つのケースが考えられます. • 領域が剛体運動(並進運動や回転運動)を行う場合
この場合,領域は位置のみが変化し,形状は変化しません. また,領域の境界上の点と領域内部の点とは相対的に同じ運動を行います.
• 領域がトポロジーの変化を伴わない変形を行う場合
境界面が変形する場合や領域が伸縮する場合など • 領域のトポロジーが変化する場合
領域が複数に分かれる場合など
一般に,上記の項目で数字が大きくなるほど,その取り扱いに工夫が必要です.
1
2
3
4
移動境界の分類:計算領域の形状の変化から
2ページにあげた 3つの例では
エンジンの燃焼室 内接ギヤポンプのポンプ室
風力タービン 1 回転運動です.
2
ギヤ同士の接触を考慮しなければ トポロジーは変化しません.
バルブのリフト量が 0 のとき, ポートと燃焼室で領域が分かれます.
3
5
OpenFOAMでの取り扱い
OpenFOAM で領域の移動・変形を取り扱うには,Dynamic Mesh の機能を使用します.
Dynamic Mesh の設定は,constant ディレクトリ内の dynamicMeshDict ファイルに記述します.
Dynamic Mesh の機能が使用できるソルバーは,その名前の中に『DyM』という文字列が含まれます. 例:pimpleDyMFoam,interDyMFoam など
6
dynamicMeshDict ファイルの記載例
FoamFile { version 2.0; format ascii; class dictionary; location "constant"; object dynamicMeshDict; } // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // dynamicFvMesh solidBodyMotionFvMesh; motionSolverLibs ( "libfvMotionSolvers.so" ); solidBodyMotionFvMeshCoeffs { cellZone innerCylinderSmall; solidBodyMotionFunction rotatingMotion; rotatingMotionCoeffs { origin (0 0 0); axis (0 1 0); omega 158; // rad/s } } // ************************************************************************* //
おまじない部分
重要な設定部分 資料3ページに記したような大まかな
変形のタイプを dynamicFvMesh の項目に指定します.
指定したタイプについて,破線で囲んだ部分で具体的な設定を行います.
必要な設定内容は,指定したタイプにより異なります.
7
dynamicFvMesh:選択可能なタイプ
• staticFvMesh Dynamic Mesh を使用しない(移動領域を考慮しない)という設定です.
• solidBodyMotionFvMesh 並進運動や回転運動など変形を伴わない剛体運動に使用します.
• multiSolidBodyMotionFvMesh 2種類以上の変形を伴わない運動が混在する場合に使用します.
• dynamicMotionSolverFvMesh 変形を伴う移動に使用します.ラプラス方程式を解くことで内部の格子点の移動(モーフィング)を行います.
• dynamicInkJetFvMesh
• dynamicRefineFvMesh 必要な場所で計算格子の細分化を行い空間分解能を変化させます.
• rawTopoChangerFvMesh
• movingConeTopoFvMesh
調査中
8
solidBodyMotionFvMesh について
• staticFvMesh Dynamic Mesh を使用しない(移動領域を考慮しない)という設定です.
• solidBodyMotionFvMesh 並進運動や回転運動など変形を伴わない剛体運動に使用します.
• multiSolidBodyMotionFvMesh 2種類以上の変形を伴わない運動が混在する場合に使用します.
• dynamicMotionSolverFvMesh 変形を伴う移動に使用します.ラプラス方程式を解くことで内部の格子点の移動(モーフィング)を行います.
• dynamicInkJetFvMesh
• dynamicRefineFvMesh 必要な場所で計算格子の細分化を行い空間分解能を変化させます.
• rawTopoChangerFvMesh
• movingConeTopoFvMesh
9
solidBodyMotionFvMesh について:概要
dynamicFvMesh として solidBodyMotionFvMesh を使用します.
運動のタイプを下記リストから選択し,solidBodyMotionFunction に指定します.
並進運動
• linearMotion:等速直線運動 • oscillatingLinearMotion:往復直線運動
回転運動
• rotatingMotion:等速円運動 • axisRotationMotion:等速円運動 • oscillatingRotatingMotion:揺動運動
右図中の3つの運動を組み合わせた運動[1]
• SDA:Ship Design Analysis の略
上記の複数の運動を組み合わせた運動 • multiMotion
各時刻での運動をテーブル形式で指定(速度が変化する運動など) • tabulated6DoFMotion
これらの運動は下記で定義されています: src/dynamicFvMesh /solidBodyMotionFvMesh /solidBodyMotionFunctions
10
solidBodyMotionFvMesh について:設定の詳細
各運動タイプで必要な設定項目と設定例 • rotatingMotion タイプ
• axisRotationMotion タイプ
solidBodyMotionFunction rotatingMotion; rotatingMotionCoeffs { origin (0 0 0); axis (0 0 1); omega 6.2832; }
solidBodyMotionFunction axisRotationMotion; axisRotationMotionCoeffs { origin (0 0 0); radialVelocity (0 0 360); }
単位 [rad/s]
単位 [deg/s]
左の設定はどちらも 角速度2𝜋 rad/s の Z軸周りの回転運動
2𝜋 rad/s
11
solidBodyMotionFunction oscillatingRotatingMotion; oscillatingRotatingMotionCoeffs { origin (0 0 0); amplitude (0 0 45); omega 1.5708; }
solidBodyMotionFvMesh について:設定の詳細
各運動タイプで必要な設定項目と設定例 • oscillatingRotatingMotion タイプ
単位 [rad/s]
単位 [degree]
𝜋/2 rad/s
45° 45°
12
solidBodyMotionFunction SDA; SDACoeffs { CofG ( 0 0 0 ); lamda 50; rollAmax 0.22654; rollAmin 0.10472; heaveA 3.79; swayA 2.34; Q 2; Tp 13.93; Tpn 11.93; dTi 0.059; dTp -0.001; }
solidBodyMotionFvMesh について:設定の詳細
各運動タイプで必要な設定項目と設定例 • SDA タイプ
SDA では上図中の運動のうち • Roll • Heave • Sway の 3自由度の運動 を扱います.
13
solidBodyMotionFunction multiMotion; multiMotionCoeffs { rotatingTable { solidBodyMotionFunction rotatingMotion; rotatingMotionCoeffs { origin (0 0.1 0); axis (0 0 1); omega 6.2832; } } rotatingBox { solidBodyMotionFunction oscillatingRotatingMotion; oscillatingRotatingMotionCoeffs { origin (0 0 0); omega 40; amplitude (45 0 0); } } }
solidBodyMotionFvMesh について:設定の詳細
各運動タイプで必要な設定項目と設定例 • multiMotion タイプ 使用例:interDyMFoam/ras/testTubeMixer
この例では, • rotatingMotion • oscillatingRotatingMotion の2つの運動を組み合わせて います.
14
solidBodyMotionFunction tabulated6DoFMotion; tabulated6DoFMotionCoeffs { CofG ( 0 0 0 ); timeDataFileName "$FOAM_CASE/constant/6DoF.dat"; }
solidBodyMotionFvMesh について:設定の詳細
各運動タイプで必要な設定項目と設定例 • tabulated6DoFMotion タイプ
使用例:interDyMFoam/ras/sloshingTank3D6DoF
100 ( (0 ((0 0 0) (0 0 0))) (0.40404 ((0.401298 0.952899 0.321827) (4.82741 2.79073 2.00649))) (0.808081 ((0.786273 1.8071 0.635266) (9.52899 5.3597 3.93137))) (1.21212 ((1.13927 2.47414 0.932149) (13.9822 7.5028 5.69634))) (1.61616 ((1.44593 2.88493 1.20474) (18.071 9.04972 7.22963))) ・・・ )
各時間での運動を規定
15
参考文献
[1] Roll Motion of a Box and Interaction with Free-Surface http://www.tfd.chalmers.se/~hani/kurser/OS_CFD_2009/ArashEslamdoost/RollMotionofaB
oxandInteractionwithFreeSurface.pdf