(例)blockMeshでメッシュを切る
- 準備
直径10mm 高さ30mm の円柱を描き ”D10L30(120).STL” として保存する。
デスクトップに フォルダー "meshtest120" を作る。- 準備
→このフォルダーを 解析のケースディレクトリーと呼ぶ
そのフォルダーに ファイルD10L30(120).STL を保存する。
さらに フォルダー"meshtest120/constant/polyMesh" を作る。
ファイル"meshtest120/constant/polyMesh/blockMeshDict" を作る。(詳細は後述)
フォルダー"meshtest120/system/" を作る。
ファイル"meshtest120/system/controlDict" を作る。
※ "controlDict"は ありさえすればいいのでOpenFOAMのチュートリアルからどれでもコピーしてくればよい。(詳細は後述)
- 図形の配置確認
ターミナルから以下を入力する。
$ touch case.blockMesh
$ paraview --data=case.blockMesh &
しばらくすると ParaViewが立ち上がる。
画面左中央[Properties]の[Apply]を押す。
メニューバーの[vtkBlockColors]を[SolidClor]に変更。
メニューバーの
を押したあと マウスの左ボタンをドラッグして位置を調整。画面左中央[Properties][Styling]の[Opacity]を"0.5"にする。
[File] [Open..]で解析したいSTLモデルを呼び出す。(ここではD10L30(120).STL)
画面左中央[Properties]の[Apply]を押す。
円柱モデルがちょうど
収まっていることを確認
流体の出入口面以外の曲面は
少し大きめに囲っている
画像を確認して 流体の出入口以外の面は 若干大きめになるよう
モデルを囲むブロックが配置されていることを確認する。
確認できたら paraviewを閉じる。
ケースディレクトリーに paraviewで描画するための ファイル”case.blockMesh”が出来ているので消去する。
- メッシュを切る
$ blockMesh
結果として フォルダー "meshtest120/constant/polyMesh" に
幾つかのファイルが保存される。
- メッシュを確認する
$ touch pv.foam
$ paraview
(ケースディレクトリーにpv.foamというファイルが作られる。ちなみに"pv"の文字は任意)
Paraviewが立ち上がったら ファイル”pv.foam"を呼び出す。
メニューバーの[File][Open..]から"pv.foam"を選択。
画面左中央[Ploperties]の[aplly]を押す。
メニューバー中央の[Surface]から[Surface With Edges]に変更。
blockMeshの結果
blockMeshDicで X方向10 Y方向10 Z方向30で等分割するよう指示している。
確認が終わったら Paraviewを閉じる。
ケースディレクトリーに blockMeshの結果をparaviewで描画するための ファイル”pv.foam”が出来ているので消去する。
blockMeshDict
/*--------------------------------*- C++ -*----------------------------------*\
| ========= | |
| \\ / F ield | OpenFOAM: The Open Source CFD Toolbox |
| \\ / O peration | Version: 2.4.0 |
| \\ / A nd | Web: www.OpenFOAM.org |
| \\/ M anipulation | |
\*---------------------------------------------------------------------------*/
FoamFile
{
version 2.0;
format ascii;
class dictionary;
object blockMeshDict;
}
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
convertToMeters 1;
vertices
(
( -0.1 -0.1 0) //0
( 10.1 -0.1 0) //1
( 10.1 10.1 0) //2
( -0.1 10.1 0) //3
( -0.1 -0.1 30) //4
( 10.1 -0.1 30) //5
( 10.1 10.1 30) //6
( -0.1 10.1 30) //7
);
blocks
(
hex (0 1 2 3 4 5 6 7) (10 10 30) simpleGrading (1 1 1)
);
edges
(
);
boundary
(
inlet
{
type patch;
faces
(
(0 1 2 3)
);
}
outlet
{
type patch;
faces
(
(4 5 6 7)
);
}
);
// ************************************************************************* //
- blockMeshDict内の補足
convertToMeters:縮尺
vertices:六面体の頂点(流出入面以外は モデルより0.1だけ広めにしている)
blocks:各頂点に番号を割当て 10, 10, 30分割を 1, 1, 1の割合(当分配)で行う。
boundary:境界層を 面(0 1 2 3)を " inlet " 面(4 5 6 7)を " outlet " その他の面は指定なし と定義。
controlDict
/*--------------------------------*- C++ -*----------------------------------*\
| ========= | |
| \\ / F ield | OpenFOAM: The Open Source CFD Toolbox |
| \\ / O peration | Version: 2.4.0 |
| \\ / A nd | Web: www.OpenFOAM.org |
| \\/ M anipulation | |
\*---------------------------------------------------------------------------*/
FoamFile
{
version 2.0;
format ascii;
class dictionary;
location "system";
object controlDict;
}
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
application MPPICFoam;
startFrom latestTime;
startTime 0;
stopAt endTime;
endTime 10;
deltaT 0.001;
writeControl adjustableRunTime;
writeInterval 0.01;
purgeWrite 0;
writeFormat binary;
writePrecision 6;
writeCompression uncompressed;
timeFormat general;
timePrecision 6;
runTimeModifiable yes;
adjustTimeStep on;
maxCo 0.001;
// ************************************************************************* //


