OpenFOAM v2.3.0のチュートリアル 『oscillatingInletACMI2D』
-
Upload
fumiya-nozaki -
Category
Technology
-
view
3.513 -
download
13
description
Transcript of OpenFOAM v2.3.0のチュートリアル 『oscillatingInletACMI2D』
Fumiya Nozaki
最終更新日: 2014年6月1日
OpenFOAM 2.3.0 Tutorial
oscillatingInletACMI2D
日本語版
Keywords: • pimpleDyMFoam • dynamicMesh • cyclicACMI • partital overlap GGI
2
計算形状
• 赤色のボリューム(inletChannel)が上下に単振動
寸法の単位はすべて m
1 2
1
0.4
単振動 (Simple harmonic motion) 2次元モデル
3
計算条件:境界条件
inlet 流速規定 U=(1, 0, 0)
outlet 圧力規定 p=0
固定壁
可動壁
変位量=0.5 ∙ sin 3.14 ∙ 𝑡 m
4
設定上重要なポイント:Sliding interfaces
Sliding interfaces
単振動 (Simple harmonic motion)
5
設定上重要なポイント:Sliding interfaces
重ならない部分は 壁面として扱う
重なる部分は 流体が通過
6
境界のカップリング
cyclicACMI
Yes No
cyclicAMI cyclic
ペアの境界が同一形状
ペアの境界のサーフェスメッシュが 回転 or 並進で一致
Yes No • フェイスの数や • 格子点の位置関係が 一致しているかどうか.
ペアの境界
7
計算格子
80分割 80分割
96分
割
40分
割
8
計算格子の生成の流れ
ベースとなる計算格子を生成 blockMesh 移動領域の cellZone,ACMI パッチの作成に使用する 2つの faceZone を生成 topoSet -constant ACMI パッチを生成 createBaffles -overwrite フェイスの数が 0 のパッチを削除 createPatch -overwrite
1
2
3
4
#!/bin/sh
cd ${0%/*} || exit 1 # run from this directory
# Source tutorial run functions
. $WM_PROJECT_DIR/bin/tools/RunFunctions
runApplication blockMesh
runApplication topoSet -constant
# split the mesh to generate the ACMI coupled patches
runApplication createBaffles -overwrite
# remove zero-sized patches
runApplication createPatch -overwrite
cp -rf 0.org 0
Allrun.pre
9
ベースの計算格子を生成
6 ( inlet { type patch; nFaces 40; startFace 21464; } outlet { type patch; nFaces 96; startFace 21504; } walls { type wall; inGroups 1(wall); nFaces 320; startFace 21600; } couple1 { type patch; nFaces 40; startFace 21920; } couple2 { type patch; nFaces 96; startFace 21960; } defaultFaces { type empty; inGroups 1(empty); nFaces 21760; startFace 22056; } )
blockMesh を実行し,6つの境界を生成します.
1
10
cellZone・faceZone の生成 2
• 2つの faceZone (couple1Faces,couple2Faces)を生成 - couple1(2) 境界から couple1(2)Faces を作成 - faceZone の情報(フェイスのリスト)は faceZones ファイルに記述される
• 1つの cellZone (inletChannel)を生成 - 上下に平行移動する赤色の領域内のセルから生成 - cellZone の情報(セルのリスト)は cellZones ファイルに記述される
11
cellZone・faceZone の作成:topoSetDict の設定 2
actions ( // Get both sides of ami // ~~~~~~~~~~~~~~~~~~~~~ // Create faceZone for patch couple1 { name couple1Faces; type faceSet; action new; source patchToFace; sourceInfo { name couple1; } } { name couple1Faces; type faceZoneSet; action new; source setToFaceZone; sourceInfo { faceSet couple1Faces; } }
// Create faceZone for patch couple2 { name couple2Faces; type faceSet; action new; source patchToFace; sourceInfo { name couple2; } } { name couple2Faces; type faceZoneSet; action new; source setToFaceZone; sourceInfo { faceSet couple2Faces; } } // Create cellZone for moving cells in inlet channel { name inletChannel; type cellSet; action new; source boxToCell; sourceInfo { box (-100 -100 -100) (1.0001 100 100); } } { name inletChannel; type cellZoneSet; action new; source setToCellZone; sourceInfo { set inletChannel; } } );
couple1Faces の生成設定
couple2Faces の生成設定
inletChannel の生成設定
12
ACMI パッチの生成
• 2つの faceZone (ACMI1,ACMI2)を生成 - faceZone の情報(フェイスのリスト)は faceZones ファイルに記述される
• ACMI1 は,2つの境界(ACMI1_couple,ACMI1_blockage)から構成される
• ACMI2 は,2つの境界(ACMI2_couple,ACMI2_blockage)から構成される
3
ACMI1_couple
ACMI2_couple
ACMI2_blockage
ACMI1_blockage
13
ACMI パッチの生成:createBafflesDict の設定
// Whether to convert internal faces only (so leave boundary faces intact). // This is only relevant if your face selection type can pick up boundary // faces. internalFacesOnly false; // Baffles to create. baffles { // NOTE: cyclicAMI patches MUST BE defined PRIOR to their associted // blockage patches ACMI1 { //- Use predefined faceZone to select faces and orientation. type faceZone; zoneName couple1Faces; patches { master { //- Master side patch name ACMI1_couple; type cyclicACMI; matchTolerance 0.0001; neighbourPatch ACMI2_couple; nonOverlapPatch ACMI1_blockage; transform noOrdering; } slave // not used since we're manipulating a boundary patch { //- Slave side patch name ACMI1_couple; type patch; } master2 { //- Master side patch name ACMI1_blockage; type wall; } slave2 // not used since we're manipulating a boundary patch { //- Slave side patch name ACMI1_blockage; type wall; } } }
ACMI2 { //- Use predefined faceZone to select faces and orientation. type faceZone; zoneName couple2Faces; patches { master { //- Master side patch name ACMI2_couple; type cyclicACMI; matchTolerance 0.0001; neighbourPatch ACMI1_couple; nonOverlapPatch ACMI2_blockage; transform noOrdering; } slave // not used since we're manipulating a boundary patch { //- Slave side patch name ACMI2_couple; type patch; } master2 { //- Master side patch name ACMI2_blockage; type wall; } slave2 // not used since we're manipulating a boundary patch { //- Slave side patch name ACMI2_blockage; type wall; } } } }
3
生成される2つの faceZone
14
ACMI パッチの生成:boundary ファイル
10
(
inlet
{
type patch;
nFaces 40;
startFace 21464;
}
outlet
{
type patch;
nFaces 96;
startFace 21504;
}
walls
{
type wall;
inGroups 1(wall);
nFaces 320;
startFace 21600;
}
couple1
{
type patch;
nFaces 0;
startFace 21920;
}
couple2
{
type patch;
nFaces 0;
startFace 21920;
}
defaultFaces
{
type empty;
inGroups 1(empty);
nFaces 21760;
startFace 21920;
}
ACMI1_couple
{
type cyclicACMI;
inGroups 2(cyclicACMI ACMI1);
nFaces 40;
startFace 43680;
matchTolerance 0.0001;
transform noOrdering;
neighbourPatch ACMI2_couple;
nonOverlapPatch ACMI1_blockage;
}
ACMI1_blockage
{
type wall;
inGroups 2(wall ACMI1);
nFaces 40;
startFace 43720;
}
ACMI2_couple
{
type cyclicACMI;
inGroups 2(cyclicACMI ACMI2);
nFaces 96;
startFace 43760;
matchTolerance 0.0001;
transform noOrdering;
neighbourPatch ACMI1_couple;
nonOverlapPatch ACMI2_blockage;
}
ACMI2_blockage
{
type wall;
inGroups 2(wall ACMI2);
nFaces 96;
startFace 43856;
}
)
3
ペア
4 で削除される
15
ACMI パッチの生成:boundary ファイル 3
ACMI1_couple
ACMI2_couple
ACMI2_blockage
ACMI1_blockage
nonOverlapPatch
nonOverlapPatch
neighbourPatch
16
移動境界の設定:dynamicMeshDict
dynamicFvMesh solidBodyMotionFvMesh; motionSolverLibs ( "libfvMotionSolvers.so" ); solidBodyMotionFvMeshCoeffs { cellZone inletChannel; solidBodyMotionFunction oscillatingLinearMotion; oscillatingLinearMotionCoeffs { amplitude (0 0.5 0); omega 3.14; // rad/s } }
• 移動する部分は,変形を伴わない平行移動 ⇒ solidBodyMotionFvMesh • 一定の方向に単振動 ⇒ oscillatingLinearMotion • solidBodyMotionFvMesh 以外に使用可能なタイプについては次ページを参照.
変位ベクトル =amplitude ∙ sin omega ∙ 𝑡 m
17
dynamicFvMesh のタイプ
• staticFvMesh 境界は固定として処理(dynamicMesh を使用しない場合と同じ)
• solidBodyMotionFvMesh
平行移動や回転など変形を伴わない移動に使用 • multiSolidBodyMotionFvMesh
2種類以上の変形を伴わない移動が混在する場合に使用
• dynamicMotionSolverFvMesh 変形を伴う移動に使用.ラプラス方程式を解くことで内部の格子点の移動を 計算.
• dynamicInkJetFvMesh
• dynamicRefineFvMesh
• rawTopoChangerFvMesh
• movingConeTopoFvMesh
18
流速 U の境界条件の設定
defaultFaces { type empty; }
inlet { type fixedValue; value uniform (1 0 0); }
outlet { type pressureInletOutletVelocity; value uniform (0 0 0); }
walls { type movingWallVelocity; value uniform (0 0 0); }
ACMI1_blockage { type fixedValue; value uniform (0 0 0); } ACMI1_couple { type cyclicACMI; value uniform (0 0 0); }
ACMI2_blockage { type fixedValue; value uniform (0 0 0); } ACMI2_couple { type cyclicACMI; value uniform (0 0 0); }
(*1)移動する壁面上の すべりなし条件 (*1)
19
圧力 p の境界条件の設定
defaultFaces { type empty; }
inlet { type zeroGradient; } outlet
{ type fixedValue; value uniform 0; }
walls { type zeroGradient; }
ACMI1_blockage { type zeroGradient; } ACMI1_couple { type cyclicACMI; value uniform 0; }
ACMI2_blockage { type zeroGradient; } ACMI2_couple { type cyclicACMI; value uniform 0; }
20
計算結果:流速場 t=0.00s
21
計算結果:流速場 t=0.05s
22
計算結果:流速場 t=0.10s
23
計算結果:流速場 t=0.15s
24
計算結果:流速場 t=0.20s
25
計算結果:流速場 t=0.25s
26
計算結果:流速場 t=0.30s
27
計算結果:流速場 t=0.35s
28
計算結果:流速場 t=0.40s
29
計算結果:流速場 t=0.45s
30
計算結果:流速場 t=0.50s
31
計算結果:流速場 t=0.55s
32
計算結果:流速場 t=0.60s
33
計算結果:流速場 t=0.65s
34
計算結果:流速場 t=0.70s
35
計算結果:流速場 t=0.75s
36
計算結果:流速場 t=0.80s
37
計算結果:流速場 t=0.85s
38
計算結果:流速場 t=0.90s
39
計算結果:流速場 t=0.95s
40
計算結果:流速場 t=1.00s
41
計算結果:流速場 t=1.05s
42
計算結果:流速場 t=1.10s
43
計算結果:流速場 t=1.15s
44
計算結果:流速場 t=1.20s
45
計算結果:流速場 t=1.25s
46
計算結果:流速場 t=1.30s
47
計算結果:流速場 t=1.35s
48
計算結果:流速場 t=1.40s
49
計算結果:流速場 t=1.45s
50
計算結果:流速場 t=1.50s
51
計算結果:流速場 t=1.55s
52
計算結果:流速場 t=1.60s
53
計算結果:流速場 t=1.65s
54
計算結果:流速場 t=1.70s
55
計算結果:流速場 t=1.75s
56
計算結果:流速場 t=1.80s
57
計算結果:流速場 t=1.85s
58
計算結果:流速場 t=1.90s
59
計算結果:流速場 t=1.95s
60
計算結果:流速場 t=2.00s
61
計算結果:流速場 t=2.05s
62
計算結果:流速場 t=2.10s
63
計算結果:流速場 t=2.15s
64
計算結果:流速場 t=2.20s
65
計算結果:流速場 t=2.25s
66
計算結果:流速場 t=2.30s
67
計算結果:流速場 t=2.35s
68
計算結果:流速場 t=2.40s
69
計算結果:流速場 t=2.45s
70
計算結果:流速場 t=2.50s