Help us understand the problem. What is going on with this article?

OpenFOAM Tips

はじめに

OpenFOAMのfunctionsについては、多数のサイトでまとめられています。とくにPnenguinitisはOpenFOAMerなら一度は訪れる高野山的な存在かと思います。

二番煎じ、三番煎じにはなろうかと思いますが、このページでは自分が調べたTipsやfunctionsをまとめてみました。
なお、ここでは主にFoundation版についてまとめていく予定です。

boundaryをまとめて設定する方法

"(inlet|outlet)"
{
   type   fixedValue;
   value uniform (0 0 0);
}

のはずだが、Paraviewで確認すると、設定が反映されていない・・・(要確認)。

この面とこの面は個別設定して、残りはまとめて設定したときなどは、

".*"
{
   type   zeroGradient;
}

のようにすると良い。
また、この面とこの面は同じ設定、というシチュエーションでは、

inlet1
{
   type   fixedValue;
   value   uniform (1 0 0);
}

inlet2
{
   $inlet1;
}

とすることにより、inlet1inlet2が同じ条件になる。

残差

system/controlDict
functions
{
   #includeFunc residuals
}

system/controlDictに上記の記述を追記。workDirにpostProcessing/residuals/というディレクトリが作成され、その中にU, Pの残差のデータが保存されています。
solverを実行中に残差の推移を確認したい場合は、

foamMonitor -l ./postProcessing/residuals/0/residuals.dat

他方、終了後の残差の履歴を確認したい場合は、

postProcessing -l ./postProcessing/residuals/0/residuals.dat

とすれば別ウィンドウに残差のグラフが表示されます。
また、U, P以外の変数の残差を表示させたいときは、

system/controlDict
functions
{
   #includeFunc residuals(U, p, k, epsilon)
}

のように変数を指定すればよいです。

流量チェック

functions
{
   #include flowRatePatch(name=patchName, log=true)
}

粒子の衝突密度の算出

MPPICFoamなどの粒子輸送計算をする際に、壁面にどれだけ粒子が衝突・沈着するかを求めたい場合もあろうかと思います。
デフォルトでログファイルに各パッチでの衝突・沈着量が出力されていますが、より詳しく見たいというときは、粒子計算の設定ファイルであるconstant/kinematicCloudPropertiesに以下の設定を追記すれば良いです。

kinematicCloudProperties
cloudFunctions
{
        patchCollisionDensity1
        {
                type    patchCollisionDensity;
        }
}

これにより結果ディレクトリにkinematicCloud::collisionDensityというファイルが出力されるようになります。

時間ディレクトリの一括削除

foamList -rm

メッシュ品質の確認

checkMesh -meshQuality

checkMeshのmaxNonOrtho, minimum pyraid volumeなどのパラメーター値を、system/meshQualityファイルで指定できるようになる。なお、同ファイルはfoamGet meshQualityで所望のケースディレクトリに持ってくることができます(コピー)。

なお、org版にはcheckMesh -writeAllFieldsというオプションがあり、これでメッシュ品質に関するデータをvtk形式で出力してくれる模様。
Foundation版で同じようなことができないか探してみたが、めぼしい情報に出会うことはなかった。ただ、ParaviewでMeshQuality Filterを使えば同じようなことはできます(品質の定義がOFとParaveiwとで異なるので、注意は必要)。

probes

  • probes: 指定した変数の,指定した座標での値をエキスポート。セル間での補間有り。
  • internalProbes: 指定した変数の,指定した座標群での値をエキスポート。セル間での補間有り。多点用。v7以前のinternalCloudに相当。
  • 詳細はこちらで説明中。

最後に

未完な記事ではありますが、アップさせてもらいました。随時更新してく予定でいます。

takaf05
Kosenの片隅でつぶやいたり、つぶやかなかったり。 Qiitaでは、自分用の記録を目的として、CFDや開発環境関係のことを記事にしていく予定です。
http://takaf5.tumblr.com
Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away