- この記事は編集中です
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はブロックの頂点を定義します。 座標値は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は頂点、分割数、メッシュの拡大比からブロックを定義します。
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軸になります。
分割数 分割数は前ページの構成点の定義で、定めたxyz軸に対して割り当てます。 例はx1方向に20分割、x2方向に20分割、x3方向に1分割、となります。
分割数は前ページの構成点の定義で、定めたxyz軸に対して割り当てます 例はx1、x2、x3方向にそれぞれ拡大比2、3、4を与えるときの記述です。 拡大比は最大サイズ/最小サイズで与えられます。
edgeGrading␣(g0␣g1␣g2␣g3␣g4␣g5␣g6␣g7␣g8␣g9␣g10␣g11) 拡大比を辺に個別に定義したい場合は、「edgeGrading」を使用する。
入力項目:edges
blockの頂点間はデフォルトで直線になる。
曲線定義が必要な場合は「edges」で定義する。
code:blockMeshDict(c++)
edges ( arc␣1␣5␣(1.1␣0.0␣0.5) );
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{ ・・・ )