Mech News Blog

機械工学科に関する最新の活動状況などを発信する情報サイト
<< 2次元回転体計算のための準備(Salome) | TOP | 熱工学研究室 >>

OpenFoam並列計算用のメッシュ領域分割に関するメモ

 OpenFoamで並列計算を行うには,メッシュの領域分割を行う必要がある。

 ユーザーガイドでは,矩形領域の計算例(damBreak)が紹介されており,decomposeParDictを作成し,このファイル内で,使用するCPUの数だけ,領域分割数を指定するなどして保存した後,ケースディレクトリ内で,decomposePar を実行すると領域が分割される。

 decomposeParDict の記述例:

 FoamFile
 {
  version 2.0;
  format ascii;
  class dictionary;
  object decomposeParDict;
 }
 // * * * * * * * * * * * * * * * * * * * //
 numberOfSubdomains 2; // 2 CPU
 
 method simple;
 
 simpleCoeffs
 {
  n (1 2 1); // nx ny nz
  delta 0.001;
  order xyz;
 }
 // * * * * * * * * * * * * * * * * * * * //
 上記の例では,Y方向のざくっと2分割されます。


 Cavityの例で領域分割した後,ケースディレクトリ内を調べてみた。以下は,そのメモ書き。


 領域を分割した数だけ,ケースディレクトリ内に“processor*"が作成される。
 “*”は,数字。2分割では,processor0 と processor1 ができる。

 processor* のディレクトリ内には,“0”フォルダと“constant”フォルダがある。

 constantフォルダ内の “polyMesh” に,分割された各メッシュのデータがあり,
分割前との違いは,以下の4つのファイルが新たに作成されている点である。

 1.boundaryProcAddressing
 2.cellProcAddressing
 3.faceProcAddressing
 4.pointProcAddressing

 それぞれ4つのファイルを,2分割した場合について,
processor0 と processor1 を比較して判明した点は次の通り。

 1.boundaryProcAddressing
  processor0,processor1 とも同じ

 2.cellProcAddressing
  processor0,processor1 それぞれの各cell番号は重複しない。

 3.faceProcAddressing
  processor0,processor1 それぞれの各face番号は重複しない。
  ただし,接合面については,
   processor0 が符号なしの番号なら,
   processor1 は負の番号,すなわち,− 番号 となる。

 4.pointProcAddressing
  processor0,processor1 の接合面以外の各point番号は重複しない。
  接合面については重複する。

 以上のことから,cell,face,point番号は,基本的には,
processor0 から processor1 まで通し番号となっている。
(それぞれ0から振り直されていない)
  
パソコン・ソフト関係
author : mechstaff | - | -