OpenFoam並列計算用のメッシュ領域分割に関するメモ
2010.01.01 Friday 04:31
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から振り直されていない)
ユーザーガイドでは,矩形領域の計算例(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から振り直されていない)