はじめに
化学種などの輸送を解析したいケースでは、combustionカテゴリーにあるソルバーを使うことになります。
その前にざっくりと計算をしてみたいときなどは、simpleFoamやpimpleFoamなどの既存ソルバーに、スカラー量の輸送方程式、モデルを追加するのが早いです。
ここでは、OpenFOAMのfunctionを利用した実装方法をまとめます。
なお、スカラー量輸送の追加方法は、既に他サイト(例えばここ)でまとめられているところではありますが、自分の学習・復習目的のために、ここでまとめさせていただきます。その点、ご容赦ください。
functionを用いた実装方法
解きたいスカラー量を$C$とした場合、
\frac{\partial C}{\partial t} + ({\bf U} \cdot \nabla) {C} = D \nabla^2 {C}
の支配方程式を追加することになります。修正、追加が必要となるファイルは次の
- system/controlDict
- system/fvSolution
- system/fvScheme
- 0/C
になります。
system/controlDict
スカラー量の輸送解析を追加するのは、controlDict内のfunctionsの中で行います。
以下のように追記してください。
functions
{
scalar0
{
type scalarTransport;
functionObjectLibs ("libsolverFunctionObjects.so");
enabled true;
writeControl outputTime;
field C;
nCorr 1;
D 0.0001; // Diffusion coefficient
log yes;
}
}
system/fvSolution
行列解法の指定を行います。
おすすめは以下にあるPBiCGStabです。
solvers
{
...
C
{
solver PBiCGStab;
preconditioner DILU;
tolerance 1e-6;
relTol 0;
minInter 1;
}
}
system/fvScheme
所望の差分スキームを追記します。
多くの場合は、以下のスキームで良いと思います。
divSchemes
{
...
div(phi,C) Gauss linearUpwind grad(C);
}
解析例
以下はpimpleFoam/channel1395に対し、スカラー量$C$の輸送を追加したものになります。下面からスカラー量が染み出してきて、それが左から右に流されている様を表しています。
まとめ
以上が化学種などの輸送を想定したスカラー量輸送解析のfunction機能を利用した実装方法です。比較的、容易に化学種の輸送を計算することができます。
なお、化学種輸送をより正確に計算したい場合は、combustion系のソルバーを用いるのが良いと思います(化学種濃度分布による密度変化や多元素輸送拡散時の拡散係数を考慮できる)。