blockMesh
blockMeshは メッシュを格子状に分割されるセルを
生成し点、面、セル、境界をファイルに書き出す。
メッシュ生成の指示は case ディレクトリの
constant/polyMesh/blockMeshDictという
テキストファイルで行う。
(新しく解析をする場合 チュートリアルから
blockMeshDictファイルをコピーし参考にするなど)
*blockMeshDictで 構造物を表現し メッシュを切る
ことも出来るが 現実的には単純な構造物しか
表現できない(現実的でない)。
そこで 一般的には blockMeshDictで
別途3DCADで作成したSTLファイルを取り囲む
構造物のメッシュを切る。
リストの最初の要素がラベル '0'を持つという
C++の規約を使用している。
また節点は x3方向に右手系の順にラベリングされる。
(節点0,1,2,3↺ 4,5,6,7↺)
------------------------------------------------
convertToMeters 0.001;
------------------------------------------------
とする。0.001 ➡ 1 とすれば mになる。
上から図中の頂点 0, 1, 2, 3, 4, 5, 6, 7の
ラベルが付く
------------------------------------------------
vertices
(
( 0 0 0 )
( 1 0 0.1)
( 1.1 1 0.1)
( 0 1 0.1)
(-0.1 -0.1 1 )
( 1.3 0 1.2)
( 1.4 1.1 1.3)
( 0 1 1.1)
);
------------------------------------------------
曲線を指定することも出来る。
arc:円弧
spline:スプライン
polyLine:複数の直線
BSpline:Bスプライン
補間点(1.1、0.0、0.5)を通って
頂点 1と 5とを円弧で接続する場合
------------------------------------------------
edges
(
arc 1 5 (1.1 0.0 0.5)
);
------------------------------------------------
指定しなければ全ての頂点は直線で接続される。
------------------------------------------------
edges
(
);
------------------------------------------------
------------------------------------------------
blocks
(
hex (0 1 2 3 4 5 6 7)
(10 10 10)
simpleGrading (1 2 3)
);
------------------------------------------------
hex (0 1 2 3 4 5 6 7)➡各頂点に0~7のラベルを割り当てている。
(10 10 10)➡X,Y,Z方向に10等分に分割する。
simpleGrading (1 2 3)➡X方向には等分配
Y方向には 最後の分割幅が最初の分割幅の2倍になるよう分割
Z方向には 最後の分割幅が最初の分割幅の2倍になるように分割する。
等分倍にしたい場合は、simpleGrading (1 1 1)とすればよい。
一方向に単調なグレーティングをすることが可能になる。
また 単一の拡大率で適切なメッシュを切れない場合は
ある軸に対して 複数のグレーティングを指定することが出来る
例)すべての方向に等分割する
-----------------------------
simpleGrading (1 1 1)
-----------------------------
例)
y方向に拡大率2(最初と最後の分割サイズが2倍)になるように分割する
-----------------------------
simpleGrading (1 2 1)
-----------------------------
例)
z方向に拡大率1/2(最初と最後の分割サイズが半分)になるように分割する
-----------------------------
simpleGrading (1 1 0.5)
-----------------------------
例)
X方向は 等分割
Y方向は
最初の20%は 総分割数の30%を使い 拡大率4で分割
次の60%は 総分割数の40%を使い 拡大率1で等分割
最後の20%は 総分割数の30を使い 拡大率0.25で分割
Z方向は 拡大率3で分割する
-------------------------------------------------------------------------------
blocks
(
hex (0 1 2 3 4 5 6 7) (100 300 100)
simpleGrading
(
1 // x-direction expansion ratio
(
(0.2 0.3 4) // 20% y-dir, 30% cells, expansion = 4
(0.6 0.4 1) // 60% y-dir, 40% cells, expansion = 1
(0.2 0.3 0.25) // 20% y-dir, 30% cells, expansion = 0.25 (1/4)
)
3 // z-direction expansion ratio
)
);
-------------------------------------------------------------------------------
境界を指定する
例)
fixedWalls:境界の名前(任意)
wall:パッチ面のタイプ
(0 4 7 3):パッチ面を形成する面(節点番号)
------------------------------------------
boundary
(
fixedWalls
{
type wall;
faces
(
(0 4 7 3)
);
}
);
------------------------------------------
パッチ面のタイプには以下がある
patch :一般的なパッチ面(流入・流出面など)
wall :個体壁面
symmetry :対称面(平面)
symmetryPlane: 対称面
empty :2次元計算で利用する仮想境界面
wedge :2次元軸対象
cyclic :周期境界条件(メッシュ形状が一致する場合)
cyclicAMI :周期境界条件(メッシュ形状が一致しない場合)
重なる2つのパッチを結合する
例)
結合しない場合
-------------------------------
mergePatchPairs
(
);
-------------------------------
例)
パッチ1とパッチ2を結合する場合
-------------------------------
mergePatchPairs
(
(pach1 patch2)
);
-------------------------------
生成し点、面、セル、境界をファイルに書き出す。
メッシュ生成の指示は case ディレクトリの
constant/polyMesh/blockMeshDictという
テキストファイルで行う。
(新しく解析をする場合 チュートリアルから
blockMeshDictファイルをコピーし参考にするなど)
*blockMeshDictで 構造物を表現し メッシュを切る
ことも出来るが 現実的には単純な構造物しか
表現できない(現実的でない)。
そこで 一般的には blockMeshDictで
別途3DCADで作成したSTLファイルを取り囲む
構造物のメッシュを切る。
- 座標の決め方
リストの最初の要素がラベル '0'を持つという
C++の規約を使用している。
また節点は x3方向に右手系の順にラベリングされる。
(節点0,1,2,3↺ 4,5,6,7↺)
図1
- blockMeshDictの中身
- convertToMeters: スケール変更例 0.001~スケールをmmへ
- vertices: 頂点座標リスト
- edges: 辺の湾曲指定
- block: 頂点ラベルとメッシュサイズの指示
- boundary: 境界指定
- mergePatchPairs: マージするパッチリスト
- convertToMeters
------------------------------------------------
convertToMeters 0.001;
------------------------------------------------
とする。0.001 ➡ 1 とすれば mになる。
- vertices
上から図中の頂点 0, 1, 2, 3, 4, 5, 6, 7の
ラベルが付く
------------------------------------------------
vertices
(
( 0 0 0 )
( 1 0 0.1)
( 1.1 1 0.1)
( 0 1 0.1)
(-0.1 -0.1 1 )
( 1.3 0 1.2)
( 1.4 1.1 1.3)
( 0 1 1.1)
);
------------------------------------------------
- edges
曲線を指定することも出来る。
arc:円弧
spline:スプライン
polyLine:複数の直線
BSpline:Bスプライン
補間点(1.1、0.0、0.5)を通って
頂点 1と 5とを円弧で接続する場合
------------------------------------------------
edges
(
arc 1 5 (1.1 0.0 0.5)
);
------------------------------------------------
指定しなければ全ての頂点は直線で接続される。
------------------------------------------------
edges
(
);
------------------------------------------------
- blocks
------------------------------------------------
blocks
(
hex (0 1 2 3 4 5 6 7)
(10 10 10)
simpleGrading (1 2 3)
);
------------------------------------------------
hex (0 1 2 3 4 5 6 7)➡各頂点に0~7のラベルを割り当てている。
(10 10 10)➡X,Y,Z方向に10等分に分割する。
simpleGrading (1 2 3)➡X方向には等分配
Y方向には 最後の分割幅が最初の分割幅の2倍になるよう分割
Z方向には 最後の分割幅が最初の分割幅の2倍になるように分割する。
等分倍にしたい場合は、simpleGrading (1 1 1)とすればよい。
- ブロックのマルチグレーディング
一方向に単調なグレーティングをすることが可能になる。
また 単一の拡大率で適切なメッシュを切れない場合は
ある軸に対して 複数のグレーティングを指定することが出来る
例)すべての方向に等分割する
-----------------------------
simpleGrading (1 1 1)
-----------------------------
例)
y方向に拡大率2(最初と最後の分割サイズが2倍)になるように分割する
-----------------------------
simpleGrading (1 2 1)
-----------------------------
例)
z方向に拡大率1/2(最初と最後の分割サイズが半分)になるように分割する
-----------------------------
simpleGrading (1 1 0.5)
-----------------------------
例)
X方向は 等分割
Y方向は
最初の20%は 総分割数の30%を使い 拡大率4で分割
次の60%は 総分割数の40%を使い 拡大率1で等分割
最後の20%は 総分割数の30を使い 拡大率0.25で分割
Z方向は 拡大率3で分割する
-------------------------------------------------------------------------------
blocks
(
hex (0 1 2 3 4 5 6 7) (100 300 100)
simpleGrading
(
1 // x-direction expansion ratio
(
(0.2 0.3 4) // 20% y-dir, 30% cells, expansion = 4
(0.6 0.4 1) // 60% y-dir, 40% cells, expansion = 1
(0.2 0.3 0.25) // 20% y-dir, 30% cells, expansion = 0.25 (1/4)
)
3 // z-direction expansion ratio
)
);
-------------------------------------------------------------------------------
- boundary
境界を指定する
例)
fixedWalls:境界の名前(任意)
wall:パッチ面のタイプ
(0 4 7 3):パッチ面を形成する面(節点番号)
------------------------------------------
boundary
(
fixedWalls
{
type wall;
faces
(
(0 4 7 3)
);
}
);
------------------------------------------
パッチ面のタイプには以下がある
patch :一般的なパッチ面(流入・流出面など)
wall :個体壁面
symmetry :対称面(平面)
symmetryPlane: 対称面
empty :2次元計算で利用する仮想境界面
wedge :2次元軸対象
cyclic :周期境界条件(メッシュ形状が一致する場合)
cyclicAMI :周期境界条件(メッシュ形状が一致しない場合)
- mergePatchPairs
重なる2つのパッチを結合する
例)
結合しない場合
-------------------------------
mergePatchPairs
(
);
-------------------------------
例)
パッチ1とパッチ2を結合する場合
-------------------------------
mergePatchPairs
(
(pach1 patch2)
);
-------------------------------