openfoam v2.3.0のチュートリアル 『oscillatinginletacmi2d』

70
Fumiya Nozaki 最終更新日: 2014年6月1日 OpenFOAM 2.3.0 Tutorial oscillatingInletACMI2D 日本語版 Keywords: pimpleDyMFoam dynamicMesh cyclicACMI partital overlap GGI

Upload: fumiya-nozaki

Post on 06-May-2015

3.512 views

Category:

Technology


13 download

DESCRIPTION

OpenFOAM v2.3.0 に実装された 『cyclicACMI』 境界条件を使用することで、AMI の一部が壁面である場合の計算が行えるようになりました。この資料では、チュートリアルを使用して計算設定の説明を行います。

TRANSCRIPT

Page 1: OpenFOAM v2.3.0のチュートリアル 『oscillatingInletACMI2D』

Fumiya Nozaki

最終更新日: 2014年6月1日

OpenFOAM 2.3.0 Tutorial

oscillatingInletACMI2D

日本語版

Keywords: • pimpleDyMFoam • dynamicMesh • cyclicACMI • partital overlap GGI

Page 2: OpenFOAM v2.3.0のチュートリアル 『oscillatingInletACMI2D』

2

計算形状

• 赤色のボリューム(inletChannel)が上下に単振動

寸法の単位はすべて m

1 2

1

0.4

単振動 (Simple harmonic motion) 2次元モデル

Page 3: OpenFOAM v2.3.0のチュートリアル 『oscillatingInletACMI2D』

3

計算条件:境界条件

inlet 流速規定 U=(1, 0, 0)

outlet 圧力規定 p=0

固定壁

可動壁

変位量=0.5 ∙ sin 3.14 ∙ 𝑡 m

Page 4: OpenFOAM v2.3.0のチュートリアル 『oscillatingInletACMI2D』

4

設定上重要なポイント:Sliding interfaces

Sliding interfaces

単振動 (Simple harmonic motion)

Page 5: OpenFOAM v2.3.0のチュートリアル 『oscillatingInletACMI2D』

5

設定上重要なポイント:Sliding interfaces

重ならない部分は 壁面として扱う

重なる部分は 流体が通過

Page 6: OpenFOAM v2.3.0のチュートリアル 『oscillatingInletACMI2D』

6

境界のカップリング

cyclicACMI

Yes No

cyclicAMI cyclic

ペアの境界が同一形状

ペアの境界のサーフェスメッシュが 回転 or 並進で一致

Yes No • フェイスの数や • 格子点の位置関係が 一致しているかどうか.

ペアの境界

Page 7: OpenFOAM v2.3.0のチュートリアル 『oscillatingInletACMI2D』

7

計算格子

80分割 80分割

96分

40分

Page 8: OpenFOAM v2.3.0のチュートリアル 『oscillatingInletACMI2D』

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

Page 9: OpenFOAM v2.3.0のチュートリアル 『oscillatingInletACMI2D』

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

Page 10: OpenFOAM v2.3.0のチュートリアル 『oscillatingInletACMI2D』

10

cellZone・faceZone の生成 2

• 2つの faceZone (couple1Faces,couple2Faces)を生成 - couple1(2) 境界から couple1(2)Faces を作成 - faceZone の情報(フェイスのリスト)は faceZones ファイルに記述される

• 1つの cellZone (inletChannel)を生成 - 上下に平行移動する赤色の領域内のセルから生成 - cellZone の情報(セルのリスト)は cellZones ファイルに記述される

Page 11: OpenFOAM v2.3.0のチュートリアル 『oscillatingInletACMI2D』

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 の生成設定

Page 12: OpenFOAM v2.3.0のチュートリアル 『oscillatingInletACMI2D』

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

Page 13: OpenFOAM v2.3.0のチュートリアル 『oscillatingInletACMI2D』

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

Page 14: OpenFOAM v2.3.0のチュートリアル 『oscillatingInletACMI2D』

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 で削除される

Page 15: OpenFOAM v2.3.0のチュートリアル 『oscillatingInletACMI2D』

15

ACMI パッチの生成:boundary ファイル 3

ACMI1_couple

ACMI2_couple

ACMI2_blockage

ACMI1_blockage

nonOverlapPatch

nonOverlapPatch

neighbourPatch

Page 16: OpenFOAM v2.3.0のチュートリアル 『oscillatingInletACMI2D』

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

Page 17: OpenFOAM v2.3.0のチュートリアル 『oscillatingInletACMI2D』

17

dynamicFvMesh のタイプ

• staticFvMesh 境界は固定として処理(dynamicMesh を使用しない場合と同じ)

• solidBodyMotionFvMesh

平行移動や回転など変形を伴わない移動に使用 • multiSolidBodyMotionFvMesh

2種類以上の変形を伴わない移動が混在する場合に使用

• dynamicMotionSolverFvMesh 変形を伴う移動に使用.ラプラス方程式を解くことで内部の格子点の移動を 計算.

• dynamicInkJetFvMesh

• dynamicRefineFvMesh

• rawTopoChangerFvMesh

• movingConeTopoFvMesh

Page 18: OpenFOAM v2.3.0のチュートリアル 『oscillatingInletACMI2D』

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)

Page 19: OpenFOAM v2.3.0のチュートリアル 『oscillatingInletACMI2D』

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; }

Page 20: OpenFOAM v2.3.0のチュートリアル 『oscillatingInletACMI2D』

20

計算結果:流速場 t=0.00s

Page 21: OpenFOAM v2.3.0のチュートリアル 『oscillatingInletACMI2D』

21

計算結果:流速場 t=0.05s

Page 22: OpenFOAM v2.3.0のチュートリアル 『oscillatingInletACMI2D』

22

計算結果:流速場 t=0.10s

Page 23: OpenFOAM v2.3.0のチュートリアル 『oscillatingInletACMI2D』

23

計算結果:流速場 t=0.15s

Page 24: OpenFOAM v2.3.0のチュートリアル 『oscillatingInletACMI2D』

24

計算結果:流速場 t=0.20s

Page 25: OpenFOAM v2.3.0のチュートリアル 『oscillatingInletACMI2D』

25

計算結果:流速場 t=0.25s

Page 26: OpenFOAM v2.3.0のチュートリアル 『oscillatingInletACMI2D』

26

計算結果:流速場 t=0.30s

Page 27: OpenFOAM v2.3.0のチュートリアル 『oscillatingInletACMI2D』

27

計算結果:流速場 t=0.35s

Page 28: OpenFOAM v2.3.0のチュートリアル 『oscillatingInletACMI2D』

28

計算結果:流速場 t=0.40s

Page 29: OpenFOAM v2.3.0のチュートリアル 『oscillatingInletACMI2D』

29

計算結果:流速場 t=0.45s

Page 30: OpenFOAM v2.3.0のチュートリアル 『oscillatingInletACMI2D』

30

計算結果:流速場 t=0.50s

Page 31: OpenFOAM v2.3.0のチュートリアル 『oscillatingInletACMI2D』

31

計算結果:流速場 t=0.55s

Page 32: OpenFOAM v2.3.0のチュートリアル 『oscillatingInletACMI2D』

32

計算結果:流速場 t=0.60s

Page 33: OpenFOAM v2.3.0のチュートリアル 『oscillatingInletACMI2D』

33

計算結果:流速場 t=0.65s

Page 34: OpenFOAM v2.3.0のチュートリアル 『oscillatingInletACMI2D』

34

計算結果:流速場 t=0.70s

Page 35: OpenFOAM v2.3.0のチュートリアル 『oscillatingInletACMI2D』

35

計算結果:流速場 t=0.75s

Page 36: OpenFOAM v2.3.0のチュートリアル 『oscillatingInletACMI2D』

36

計算結果:流速場 t=0.80s

Page 37: OpenFOAM v2.3.0のチュートリアル 『oscillatingInletACMI2D』

37

計算結果:流速場 t=0.85s

Page 38: OpenFOAM v2.3.0のチュートリアル 『oscillatingInletACMI2D』

38

計算結果:流速場 t=0.90s

Page 39: OpenFOAM v2.3.0のチュートリアル 『oscillatingInletACMI2D』

39

計算結果:流速場 t=0.95s

Page 40: OpenFOAM v2.3.0のチュートリアル 『oscillatingInletACMI2D』

40

計算結果:流速場 t=1.00s

Page 41: OpenFOAM v2.3.0のチュートリアル 『oscillatingInletACMI2D』

41

計算結果:流速場 t=1.05s

Page 42: OpenFOAM v2.3.0のチュートリアル 『oscillatingInletACMI2D』

42

計算結果:流速場 t=1.10s

Page 43: OpenFOAM v2.3.0のチュートリアル 『oscillatingInletACMI2D』

43

計算結果:流速場 t=1.15s

Page 44: OpenFOAM v2.3.0のチュートリアル 『oscillatingInletACMI2D』

44

計算結果:流速場 t=1.20s

Page 45: OpenFOAM v2.3.0のチュートリアル 『oscillatingInletACMI2D』

45

計算結果:流速場 t=1.25s

Page 46: OpenFOAM v2.3.0のチュートリアル 『oscillatingInletACMI2D』

46

計算結果:流速場 t=1.30s

Page 47: OpenFOAM v2.3.0のチュートリアル 『oscillatingInletACMI2D』

47

計算結果:流速場 t=1.35s

Page 48: OpenFOAM v2.3.0のチュートリアル 『oscillatingInletACMI2D』

48

計算結果:流速場 t=1.40s

Page 49: OpenFOAM v2.3.0のチュートリアル 『oscillatingInletACMI2D』

49

計算結果:流速場 t=1.45s

Page 50: OpenFOAM v2.3.0のチュートリアル 『oscillatingInletACMI2D』

50

計算結果:流速場 t=1.50s

Page 51: OpenFOAM v2.3.0のチュートリアル 『oscillatingInletACMI2D』

51

計算結果:流速場 t=1.55s

Page 52: OpenFOAM v2.3.0のチュートリアル 『oscillatingInletACMI2D』

52

計算結果:流速場 t=1.60s

Page 53: OpenFOAM v2.3.0のチュートリアル 『oscillatingInletACMI2D』

53

計算結果:流速場 t=1.65s

Page 54: OpenFOAM v2.3.0のチュートリアル 『oscillatingInletACMI2D』

54

計算結果:流速場 t=1.70s

Page 55: OpenFOAM v2.3.0のチュートリアル 『oscillatingInletACMI2D』

55

計算結果:流速場 t=1.75s

Page 56: OpenFOAM v2.3.0のチュートリアル 『oscillatingInletACMI2D』

56

計算結果:流速場 t=1.80s

Page 57: OpenFOAM v2.3.0のチュートリアル 『oscillatingInletACMI2D』

57

計算結果:流速場 t=1.85s

Page 58: OpenFOAM v2.3.0のチュートリアル 『oscillatingInletACMI2D』

58

計算結果:流速場 t=1.90s

Page 59: OpenFOAM v2.3.0のチュートリアル 『oscillatingInletACMI2D』

59

計算結果:流速場 t=1.95s

Page 60: OpenFOAM v2.3.0のチュートリアル 『oscillatingInletACMI2D』

60

計算結果:流速場 t=2.00s

Page 61: OpenFOAM v2.3.0のチュートリアル 『oscillatingInletACMI2D』

61

計算結果:流速場 t=2.05s

Page 62: OpenFOAM v2.3.0のチュートリアル 『oscillatingInletACMI2D』

62

計算結果:流速場 t=2.10s

Page 63: OpenFOAM v2.3.0のチュートリアル 『oscillatingInletACMI2D』

63

計算結果:流速場 t=2.15s

Page 64: OpenFOAM v2.3.0のチュートリアル 『oscillatingInletACMI2D』

64

計算結果:流速場 t=2.20s

Page 65: OpenFOAM v2.3.0のチュートリアル 『oscillatingInletACMI2D』

65

計算結果:流速場 t=2.25s

Page 66: OpenFOAM v2.3.0のチュートリアル 『oscillatingInletACMI2D』

66

計算結果:流速場 t=2.30s

Page 67: OpenFOAM v2.3.0のチュートリアル 『oscillatingInletACMI2D』

67

計算結果:流速場 t=2.35s

Page 68: OpenFOAM v2.3.0のチュートリアル 『oscillatingInletACMI2D』

68

計算結果:流速場 t=2.40s

Page 69: OpenFOAM v2.3.0のチュートリアル 『oscillatingInletACMI2D』

69

計算結果:流速場 t=2.45s

Page 70: OpenFOAM v2.3.0のチュートリアル 『oscillatingInletACMI2D』

70

計算結果:流速場 t=2.50s