
まくまく
OpenFoamではじめての流体解析をしてみましょう。今回はcavityファイルがどのようなファイル構成になっているのかを確認してみます。
コンテンツ
Cavityフォルダの中身を確認
公式チュートリアルのcavityをコピーするとこのようなフォルダ構成になっています。
cavityについては以下の記事も参照ください。>>>OpenFoamではじめての流体解析 まずはキャビティ流れを確認する
0フォルダ – pファイル
まずは「0」フォルダにあるpファイルの中身を確認します。
※コメントは追加したものです。オリジナルのファイルにはありません。
dimensions [0 2 -2 0 0 0 0]; // 単位の設定(質量、長さ、時間、電荷、熱、物質量、光度)
internalField uniform 0; // 内部フィールドの設定(一様な0の値で初期化する)
boundaryField // 境界条件の設定
{
movingWall // 動く壁の境界条件
{
type zeroGradient; // ゼロ勾配条件を使用する(速度は流れ場に沿って一定)
}
fixedWalls // 固定壁の境界条件
{
type zeroGradient; // ゼロ勾配条件を使用する(速度は壁に沿って0)
}
frontAndBack // 前面と後面の境界条件
{
type empty; // 空の境界条件を使用する(流量はゼロ)
}
}
0フォルダ – uファイル
「0」フォルダにあるuファイルの中身を確認します。
dimensions [0 1 -1 0 0 0 0]; // 単位の設定(質量、長さ、時間、電荷、熱、物質量、光度の寸法を指定する)
internalField uniform (0 0 0); // x方向、y方向、z方向の速度を初期化。以下のmovingWall以外の箇所は(0, 0, 0)となる
boundaryField // 境界条件の設定
{
movingWall // 動く壁の境界条件
{
type fixedValue; // 固定値条件を使用する(以下の速度に固定される)
value uniform (1 0 0); // x方向の速度は1m/s
}
fixedWalls // 固定壁の境界条件
{
type noSlip; // ノースリップ条件を使用する(速度は壁に沿ってゼロ)
}
frontAndBack // 前面と後面の境界条件
{
type empty; // 空の境界条件を使用する(流量はゼロ)
}
}
constantフォルダ – transportPropertiesファイル
constantフォルダにあるtransportPropertiesファイルの中身を確認します。
cavityの場合は、動粘性係数が指定されているだけです。動粘性係数は、粘度を密度で割った値です。
nu 0.01; // 動粘性係数の設定
systemフォルダ – blockMeshDictファイル
systemフォルダにあるblockMeshDictファイルの中身を確認します。
ファイルの役割:メッシュを定義
scale 0.1; // 縮尺を設定する(verticesに記載した値 × 0.1となる。1を記載すると0.1mとなる)
vertices // 頂点の座標を指定
(
(0 0 0) // 頂点0
(1 0 0) // 頂点1
(1 1 0) // 頂点2
(0 1 0) // 頂点3
(0 0 0.1) // 頂点4
(1 0 0.1) // 頂点5
(1 1 0.1) // 頂点6
(0 1 0.1) // 頂点7
);
blocks // ブロックを指定する
(
hex (0 1 2 3 4 5 6 7) (20 20 1) simpleGrading (1 1 1) // 六面体のブロックを定義
);
edges // エッジを指定する(ここでは使用していない)
boundary // 境界条件を指定する
(
movingWall // 動く壁の境界条件を指定する
{
type wall; // 壁の条件を指定する
faces // 境界面を指定する
(
(3 7 6 2)
);
}
fixedWalls // 固定壁の境界条件を指定する
{
type wall; // 壁の条件を指定する
faces // 境界面を指定する
(
(0 4 7 3)
(2 6 5 1)
(1 5 4 0)
);
}
frontAndBack // 前面と後面の境界条件を指定する
{
type empty; // 空の境界条件を指定する
faces // 境界面を指定する
(
(0 3 2 1)
(4 5 6 7)
);
}
);
systemフォルダ – controlDictファイル
systemフォルダにあるcontrolDictファイルの中身を確認します。
ファイルの役割:シミュレーションを制御するための設定ファイル
application icoFoam; // ソルバーの種類を指定。icoFoamは非圧縮流体、非定常、ニュートン流体の層流
// 時間制御パラメータ
startFrom startTime; // 計算開始時刻の指定
startTime 0; // 計算開始時刻の値
stopAt endTime; // 計算終了時刻の指定
endTime 0.5; // 計算終了時刻の値
deltaT 0.005; // 時間ステップ
// 出力制御パラメータ
writeControl timeStep; // 出力の制御方法の指定
writeInterval 20; // 出力間隔
purgeWrite 0; // 出力時のデータ整理
writeFormat ascii; // 出力フォーマット
writePrecision 6; // 出力時の数値精度
writeCompression off; // 出力時のデータ圧縮の有無
// 時間表示パラメータ
timeFormat general; // 時間の表示形式の指定
timePrecision 6; // 時間の数値精度
runTimeModifiable true; // 実行時に時間制御パラメータを変更可能にするかどうか
systemフォルダ – decomposeParDictファイル
systemフォルダにあるdecomposeParDictファイルの中身を確認します。
ファイルの役割:分散処理の方法を定義
numberOfSubdomains 9; // 分割するドメインの数を指定
method hierarchical; // ドメインの分割方法を指定(階層的分割)
coeffs
{
n (3 3 1); // 各方向の分割数を指定(x, y, z)
}
systemフォルダ – fvSchemesファイル
systemフォルダにあるfvSchemesファイルの中身を確認します。
ファイルの役割:数値解法(スキーム)を設定
// 時間微分項の数値スキームを指定
ddtSchemes
{
default Euler;
}
// 勾配項の数値スキームを指定
gradSchemes
{
default Gauss linear; // デフォルトでは、Gauss型の数値積分を用いた一次精度スキームを適用
grad(p) Gauss linear; // 圧力の勾配項には、Gauss型の数値積分を用いた一次精度スキームを適用
}
// 発散項の数値スキームを指定
divSchemes
{
default none; // デフォルトでは、発散項を計算しない
div(phi,U) Gauss linear; // 速度の発散項には、Gauss型の数値積分を用いた一次精度スキームを適用
}
// ラプラシアン項の数値スキームを指定
laplacianSchemes
{
default Gauss linear orthogonal; // デフォルトでは、Gauss型の数値積分を用いた一次精度スキームを適用
}
// 補間項の数値スキームを指定
interpolationSchemes
{
default linear; // デフォルトでは、線形補間を適用
}
// snGrad項の数値スキームを指定
snGradSchemes
{
default orthogonal; // デフォルトでは、直交補間を適用
}
systemフォルダ – fvSolutionファイル
systemフォルダにあるfvSolutionファイルの中身を確認します。
ファイルの役割:数値解法(スキーム)を設定
先ほどのfvSchemesとの違い:fvSchemesは数値計算アルゴリズムの設定、fvSolutionは計算の制御パラメータを設定
solvers
{
p
{
solver PCG;
preconditioner DIC;
tolerance 1e-06;
relTol 0.05;
}
pFinal
{
$p;
relTol 0;
}
U
{
solver smoothSolver;
smoother symGaussSeidel;
tolerance 1e-05;
relTol 0;
}
}
PISO
{
nCorrectors 2;
nNonOrthogonalCorrectors 0;
pRefCell 0;
pRefValue 0;
}
systemフォルダ – PDRblockMeshDictファイル
systemフォルダにあるPDRblockMeshDictファイルの中身を確認します。
ファイルの役割:メッシュのジオメトリーを定義
scale 0.1; // 縮尺
x
{
points (0 1); // x方向の始点と終点
nCells (20); // セルの数
ratios (1); // セルの比率(等比数列で指定)
}
y
{
points (0 1); // y方向の始点と終点
nCells (20); // セルの数
ratios (1); // セルの比率(等比数列で指定)
}
z
{
points (0 0.1); // z方向の始点と終点
nCells (1); // セルの数
ratios (1); // セルの比率(等比数列で指定)
}
boundary
(
movingWall // 動く壁面の指定
{
type wall; // 壁面を指定
faces (3); // 壁面が存在する面のインデックス番号
}
fixedWalls // 固定壁面の指定
{
type wall; // 壁面を指定
faces (0 1 2); // 壁面が存在する面のインデックス番号
}
frontAndBack // 前後の面の指定
{
type empty; // 空間を指定
faces (4 5); // 空間が存在する面のインデックス番号
}
);