調査報告 pimpleDyMFoamの設定について 一関高専・若嶋 ※ OpenFOAM 2.3.xについてのみ調査 2014/12/5 第3回OpenCAE初歩情報交換会@北東北 1 OpenFOAMで利用できるDyMソルバー $ cd $FOAM_TUTORIALS $ find . -name *DyM* ./incompressible/pimpleDyMFoam ./incompressible/pimpleDyMFoam/wingMotion/wingMotion2D_pimpleDyMFoam ./compressible/rhoPimpleDyMFoam ./multiphase/multiphaseInterDyMFoam ./multiphase/interDyMFoam ./multiphase/compressibleInterDyMFoam ./multiphase/interPhaseChangeDyMFoam ./multiphase/potentialFreeSurfaceDyMFoam 2014/12/5 第3回OpenCAE初歩情報交換会@北東北 2 DynamicMesh機能で実現できる動き • 基本的に運動条件を指定 ① 領域が剛体運動(併進,回転)する場合 ② 領域がトポロジー変化を伴わずに変形をする場合(例:風船の膨張・収縮) ③ 領域のトポロジーが変化(領域が分離・結合)する場合(例:エンジンシリンダー+ピストン) @OpenFOAM/OpenFOAM-2.3.x/src/dynamicFvMesh dynamicFvMesh ・・・?(dynamicMeshのクラスラッパー?) dynamicInkJetFvMesh・・・? dynamicMotionSolverFvMesh・・・メッシュ変形を伴う場合(メッシュモーフィング) dynamicRefineFvMesh・・・メッシュリファインを伴う場合 solidBodyMotionFvMesh・・・メッシュ剛体移動 ⇒ 今回はこちらを使用 staticFvMesh・・・DynamicMeshを使用しない(=Static) 第3回OpenCAE初歩情報交換会@北東北 2014/12/5 3 solidBodyMotionFvMesh 1. 併進 linearMotion・・・等速直線運動 oscillatingLinearMotion・・・往復直線運動 2. 回転 rotatingMotion・・・等速回転運動⇒ 今回はこちらを使用 oscillatiingRotationMotion・・・往復回転運動 axisRotatingMotion・・・等速回転運動 3. 船の動き SDA(ShipDesignAnalysis:Roll/Sway/Heaveの3自由度) 4. 上記の組み合わせの運動 multiMotion 5. 速度が変化する場合などをテーブルで指定(6自由度) tabulated6DoFMotion 参考)http://sssslide.com/www.slideshare.net/fumiyanozaki96/openfoam 2014/12/5 第3回OpenCAE初歩情報交換会@北東北 4 DynamicMesh利用時の基本的な流れ 1. 格子生成(ケースディレクトリ中の2つのサブフォルダ中に作成) 1. stator stator側Meshフォルダ “mesh_stator/”でstatorメッシュ作成 • AMI領域境界は,例えば“AMIs”としておく 2. 3. rotor側Meshフォルダ “mesh_rotor/”でrotorメッシュ作成 rotor計算領域にcellSet名“rotor”を設定しておく(setSet –batch/topoSetコマンド) rotor • AMI領域境界は,例えば“AMIr”としておく ※ インターフェースのメッシュは直交性に注意(精度,収束性) 2. 3. 4. CASE |-- 0/ 4. mergeMesh mesh_rotor mesh_stator |-- constant/ • rotorMesh配下にmergeされたメッシュフォルダが生成される | |-- polyMesh 5. polyMeshフォルダを本来の場所にコピー | |-- triSurface 6. boundaryファイルを修正(cyclicAMI patch作成) |-- mesh_rotor/ その他の準備 | |-- 0 copy | |-- 0.001 1. topoSetコマンドでfaceset “AMI”を作成 | |-- constant • system/topoSetDict | |-- system 2. renumberMesh(大規模メッシュのときのmatrix演算の効率化) |-mesh_stator/ 3. constant/dynamicMeshDictを設定(回転中心,回転数を指定) | |-- 0 ソルバー | |-- constant 1. ****DyMFoam(シリアル) | |-- system |-- system/ 可視化 1. ParaFoam(Paraview) 第3回OpenCAE初歩情報交換会@北東北 2014/12/5 5 Simple 2D pimpleDyMFoam チュートリアル slides stator rotor y x inlet 1m/s outlet sides dz=0.1m • • • • 2D 層流解析(z面は”empty”) stator計算領域: dx×dy×dz=1x1x0.1m rotor計算領域:φ0.2m(×0.1m) 回転体:0.1√2×0.1√2m(×0.1m) simple2D_AMI |-- 0/ |-- constant/ | |-- polyMesh | |-- triSurface |-- mesh_rotor/ | |-- 0 | |-- constant | |-- system |-- mesh_stator/ | |-- 0 | |-- constant | |-- system |-- system/ 計算条件 • 流体:空気(ν=1e-5m2/s) • inlet: U=(1 0 0), p=zeroGradient • outlet: U=zeroGradient, p=0 • sides: slip • solidwall: U=movingWallVelocity, p=zeroGradient • 回転体 60rpm≒6.283 rad/s ※ チュートリアルのアーカイブはHPにて公開予定 2014/12/5 第3回OpenCAE初歩情報交換会@北東北 6 STEP 1: stator領域のメッシュ作成(blockMesh) $ cd mesh_stator (サブケースフォルダに移動) $ blockMesh stator slides AMIs inlet 1m/s outlet AMIsは,回転領域とのstator側の境界面 (patch/wall) 0, constant, systemフォルダ(と中身)はダ ミーとして作っておく 2014/12/5 sides 第3回OpenCAE初歩情報交換会@北東北 7 STEP 2: rotor領域のメッシュ作成(blockMesh) $ cd .. $ cd mesh_rotor(サブケースフォルダに移動) $ blockMesh AMIrは,回転領域とのrotor側の境界面 (patch/wall)・・・・AMIsと形状は一致 0, constant, systemフォルダ(と中身)はダミーと してつくっておく blockの指定で,”rotor”というcellZone名を指定 AMIr solidwall blocks ( hex (0 1 5 4 8 9 13 12) rotor (50 50 1) simpleGrading (1 0.5 1) hex (1 2 6 5 9 10 14 13) rotor (50 50 1) simpleGrading (1 0.5 1) hex (2 3 7 6 10 11 15 14) rotor (50 50 1) simpleGrading (1 0.5 1) hex (3 0 4 7 11 8 12 15) rotor (50 50 1) simpleGrading (1 0.5 1) ); 2014/12/5 第3回OpenCAE初歩情報交換会@北東北 8 STEP 3: mergeMeshes $ mergeMeshes mesh_rotor mesh_stator mergeMeshes <master> <slave> <master>フォルダに,<master>+<slave>のマージされたメッシュが1時間ステッ プだけ進んだフォルダとして生成される(polyMeshフォルダが含まれている) $ ls mesh_rotor/ 0 constant system $ mergeMeshes mesh_rotor mesh_stator : ※ 0.001という数値は設定によります $ ls mesh_rotor/ 0 0.001 constant system ※ -overwriteオプションをつけるとmesh_rotorのメッシュを上書き 第3回OpenCAE初歩情報交換会@北東北 2014/12/5 9 STEP 4: マージメッシュのコピーとcyclicAMI パッチの設定 • メッシュデータを本来のメッシュフォルダにコピー $ cp mesh_rotor/0.001/polyMesh/* constant/polyMesh/ • cyclicAMIパッチの設定(constant/polyMesh/boundaryの編集) $ vi constant/polyMesh/boundary 2014/12/5 AMIr { type wall; inGroups 1(wall); nFaces 200; startFace 39600; } AMIs { type wall; inGroups 1(wall); nFaces 200; startFace 80200; } AMIr { type cyclicAMI; matchTolerance 0.001; neighbourPatch AMIs; transform noOrdering; inGroups 1(cyclic); nFaces 200; startFace 80200; } AMIs { type cyclicAMI; matchTolerance 0.001; neighbourPatch AMIr; transform noOrdering; inGroups 1(cyclic); nFaces 200; startFace 80200; } 第3回OpenCAE初歩情報交換会@北東北 10 STEP 5:回転の設定 $ vi constant/dynamicMeshDict solidBodyMotionタイプのDynamicMeshを使う dynamicFvMesh solidBodyMotionFvMesh; motionSolverLibs ( “libfvMotionSolvers.so” ); solidBodyMotionタイプの設定用subDictionary solidBodyMotionFvMeshCoeffs { cellZone rotor; 回転領域のcellZoneを指定 solidBodyMotionFunction rotatingMotion; rotatingMotionCoeffs { origin (0 0 0); axis (0 0 1); omega 6.2853; //rad/s } 移動の種類(=回転) 原点origin 回転軸のベクトルaxis 回転数omega (rad/sに注意) } 2014/12/5 第3回OpenCAE初歩情報交換会@北東北 11 STEP 6: 初期・境界条件の設定 • 回転に関わる部分のみを示します 0/U 0/p AMIs { type cyclicAMI; } AMIr { cyclicAMI; type } solidwall { type movingWallVelocity; // fixedValue; value uniform (0 0 0); } 2014/12/5 AMIs { type } AMIr { type } solidwall { type } 第3回OpenCAE初歩情報交換会@北東北 cyclicAMI; cyclicAMI; zeroGradient; 12 STEP 7: 計算実行(pimpleDyMFoam) $ pimpleDyMFoam 2014/12/5 第3回OpenCAE初歩情報交換会@北東北 13 参考 • http://www.slideshare.net/fumiyanozaki96/openfoam • http://www.slideshare.net/fumiyanozaki96/openfoamcycliccyclicamicyclicacmi-34456484?related=1 2014/12/5 第3回OpenCAE初歩情報交換会@北東北 14
© Copyright 2024 ExpyDoc