メッシュ作成:blockMesh

  • この記事は編集中です

blockMeshによるメッシュの作成

blockMeshはOpenFOAMのケースディレクトリ下の

system/blockMeshDict

ファイルにブロック形状データと分割の設定を記入します。

ファイルに記載する各項目について説明します。

[入力項目:FoamFile]]

おまじない程度に受け止めます。
チュートリアルケース等からコピーして貼り付けます。

code:blockMeshDict(c++)

FoamFile
{
version␣2.3;
format␣ascii;
class␣dictionary;
object␣blockMeshDict;
}


入力項目:convertToMeters

メッシュの寸法に対するスケーリング係数を指定します。
OpenFOAMはメートル系なので、ブロックの頂点をミリメートルで定義する場合は、convertToMeters␣0.001;とします。

code:blockMeshDict(c++)

convertToMeters␣0.001;


入力項目:vertices

Verticesはブロックの頂点を定義します。
座標値はx1、x2、x3の順で定義します。
各点は定義された順に0から番号が割り当てられます。
例は1辺が1の直方体の頂点を表してます。

code:blockMeshDict(c++)

vertices␣(
(0␣0␣0)␣//0
(1␣0␣0)␣//1
(1␣1␣0)␣//2
(0␣1␣0)␣//3
(0␣0␣1)␣//4
(1␣0␣1)␣//5
(1␣1␣1)␣//6
(0␣1␣1)␣//7
);


入力項目:blocks

blocksは頂点、分割数、メッシュの拡大比からブロックを定義します。

code:blockMeshDict(c++)

blocks␣(
hex␣(0␣1␣2␣3␣4␣5␣6␣7)␣(20␣20␣1)␣simpleGrading(1␣1␣1));
1つ目の点から2つ目の点に向かう方向(0→1)がx1軸になります。 
1つ目の点から4つ目の点に向かう方向(0→3)がx2軸になります。 
1つ目の点から5つ目の点に向かう方向(0→4)がx3軸になります。

[1] [2] [3]

分割数
	分割数は前ページの構成点の定義で、定めたxyz軸に対して割り当てます。
 例はx1方向に20分割、x2方向に20分割、x3方向に1分割、となります。

[4]

分割数は前ページの構成点の定義で、定めたxyz軸に対して割り当てます
例はx1、x2、x3方向にそれぞれ拡大比2、3、4を与えるときの記述です。
拡大比は最大サイズ/最小サイズで与えられます。
edgeGrading␣(g0␣g1␣g2␣g3␣g4␣g5␣g6␣g7␣g8␣g9␣g10␣g11)
 拡大比を辺に個別に定義したい場合は、「edgeGrading」を使用する。

[5]


入力項目:edges blockの頂点間はデフォルトで直線になる。 曲線定義が必要な場合は「edges」で定義する。 code:blockMeshDict(c++)

edges
(
arc␣1␣5␣(1.1␣0.0␣0.5)
);

[6] [7] code:【直線】(c++)

line␣v1␣v2

code:【円弧】(c++)

arc␣v1␣v2␣(x␣y␣z)

code:【線群】(c++)

polyLine␣v1␣v2␣((x1␣y1␣z1))␣(x2␣y3␣z2)……)

code:【スプライン】(c++)

simpleSpline␣v1␣v2␣((x1␣y1␣z1))␣(x2␣y3␣z2)……)


[[入力項目:[boundary]]]

境界条件を定義するために、「[boundary]」で境界を定義します。
例は「flont_back」という名前のタイプ「[patch]」の境界面を点0,1,2,3で囲まれる面と4,5,6,7で囲まれる面に定義しています。
タイプは定義する境界条件の種類によって選択します。
[boundary]以下には境界面の数だけ定義をします。

[8] code:blockMeshDict(c++)

boundary
(
flont_back
{
type␣patch;
faces
(
(0␣1␣2␣3)
(4␣5␣6␣7)
);
}
inlet{
・・・
)