penguinFoam2019年12月21日 | |
概要penguinFoam は、OpenFOAM ケース設定支援ツールである。 ※OpenFOAM に慣れた人向けです。 本ツールはアイデア実証のための実装の向きが強いです。この方向で進めたらアカンな、というのを確認できたところでやめています。ただ、使われている個々のアイデアには使いようがあると思います。 ライセンスMIT License 免責事項本ツールは現状のまま提供されるものとします。また、本ツールは無保証です。 パッケージ動作環境
セットアップpenguinFoam のディレクトリを設置し、パスを通しておく。 GUI の使い方penguinFoam を実行すると GUI が起動する。 $ penguinFoam コマンドライン上での使い方1. ケースの用意チュートリアルケースをコピーするなどして、ケースディレクトリを用意する。penguinFoam 付属の copyTutorialCase でチュートリアルケースのコピーができる。 $ copyTutorialCase incompressible simpleFoam pitzDaily sample 2. メッシュの用意blockMesh などでメッシュを用意する。 3. 新規ケースのセットアップpenguinFoam 付属の penguinFoamNewCase で新規ケースのセットアップを行う。ケースディレクトリに bin ディレクトリへのリンクが作成され、settings ディレクトリがコピーされる。 bin の中にはスクリプトがあり、ケースディレクトリのルートで実行するようになっている。settings には設定ファイルが入っている。 4. フィールドの作成settings/fields でフィールドの設定を行う。 settings/fields
class
{
U volVectorField;
p volScalarField;
k volScalarField;
epsilon volScalarField;
}
dimensions
{
U [0 1 -1 0 0 0 0];
p [0 2 -2 0 0 0 0];
k [0 2 -2 0 0 0 0];
epsilon [0 2 -3 0 0 0 0];
}
5. 境界条件情報の作成bin/createBoundaryInfo で境界条件情報 settings/boundaryInfo を作成する。 これは constant/polyMesh/boundary の設定が反映される。つぎの境界条件の作成のため、boundaryInfo で physicalType を設定する。boundaryInfo の書式は、境界名、パッチタイプ、physicalType となっている。 settings/boundaryInfo inlet patch inlet outlet patch outlet upperWall wall lowerWall wall frontAndBack empty 6. 境界条件の作成bin/createBoundaries で境界条件 settings/boundaries を作成する。デフォルト設定は settings/defaults/* に基づいて physicalType ごとに設定される。 settings/boundaries
boundaries
{
inlet
{
U
{
type fixedValue;
value uniform (0 0 0);
}
p
{
type zeroGradient;
}
...
7. 初期値/境界条件の設定settings/fields で初期値の設定を行う。 settings/fields
internalField
{
U uniform (0 0 0);
p uniform 0;
k uniform 0.375;
epsilon uniform 14.855;
}
settings/boundaries で境界条件の設定を行う。 settings/boundaries
boundaries
{
inlet
{
U
{
type fixedValue;
value uniform (10 0 0);
}
p
{
type zeroGradient;
}
...
8. 領域分割"bin/createPartitions <分割数>" で領域を分割する。引数で分割数を指定する。 $ bin/createPartitions 4 9. 実行bin/runSolver で実行する。 $ bin/runSolver ソルバーは system/controlDict の application に設定されたものが実行される。 gnuplot により残差が表示される。 ~/.OpenFOAM/$WM_PROJECT_VERSION/controlDict でstopAtWrtieNowSignal に 10 を設定すると、Ctrl-C で計算を安全に停止できる。 ~/.OpenFOAM/$WM_PROJECT_VERSION/controlDict
OptimisationSwitches
{
...
stopAtWriteNowSignal 10;
}
~/.OpenFOAM/$WM_PROJECT_VERSION や controlDict がなければ、まず用意する。 $ mkdir -p ~/.OpenFOAM/$WM_PROJECT_VERSION $ cp $WM_PROJECT_DIR/etc/controlDict ~/.OpenFOAM/$WM_PROJECT_VERSION 10. 残差のプロットbin/plot で残差をプロットできる。 $ bin/plot 画像 residual.png が保存される。 11. 結果の削除
使い方 $ bin/clearResults 使用上の注意時刻 0 以外のデータは settings の設定を参照していないが、runSolver は自動的に最後の時刻のデータを現在の settings の設定で更新する。設定の更新を自動で行う必要がある場合は、bin/applyLatestSettings を実行する。 ChangeLog
2019.12.21
* ライセンスを GPL から MIT License に変更。
2017.7.31
* bin/createPartitions applyLatestSettings, bin/runSolver.py
bin/createFields を自動で実行するようにした。
* bin/getControls.py
追加。system/controlDict から値を取得する。
* bin/getSolver
廃止。bin/getControls.py で代用。
* bin/getBoundaries, getBoundaryType
引数に boundary ファイルを取るのをやめた。
* bin/createBoundaries, createBoundaryInfo, createFields,
createFieldsLatestTime, createPartitions
上記変更にともない修正。
* bin/getFields, getFieldType
引数に fields ファイルを取るのをやめた。
* bin/createBoundaries, createFields, createFieldsLatestTime
上記変更にともない修正。
* penguinFoam, gui
GUI を追加。
2017.6.27
* bin/cleanCase
'case.foam' ファイルを消すようにした。
* setup
廃止。
* penguinFoamNewCase
追加。setup での作成を廃止。
bin ディレクトリをコピーではなくリンクに変更した。
* bin/changeBoundary.py
廃止。
* bin/getSolver
追加。ソルバー名を取得する。
* bin/runSolver
ソルバーを自動取得するようにした。
* bin/*
エラー時に終了ステータスに 1 を返すようにした。
* bin/getLatestTime.py
シリアルの最終時刻を得るオプションを追加。
* bin/createPartitions
processor* ディレクトリが存在しても処理するようにした。
* bin/createFieldsLatestTime
追加。計算継続時フィールドファイル作成用。
* bin/applyLatestSettings, createChangeDictonaryDict
計算継続時の設定について改善
* bin/changeBoundaryType.py
physicalType 指定できるようにした。
* bin/updateBoundaryInfo
追加。settings/boundaryInfo の情報を constant/polyMesh/boundary
に反映する。
2017.5.26
* bin/*.py
行頭 "#!/usr/bin/python" を "#!/usr/bin/env python" に変更。
* bin/*.py
例外処理を Python 3.x 向けに修正
* bin/runSolver.py, bin/plotResiduals.py
subprocess.Popen() の引数に universal_newlines=True を追加。
* bin/createPlotLogs.py
os.chmod() の引数の 8 進リテラルを Python 3.x 向けに修正。
* bin/createChangeDictionaryDict
0 ディレクトリ内のディレクトリを無視するように修正。
* settings/defaults
nut の設定を追加。
2017.5.25
* penguinFoamNewCase (setup)
bin, settings ディレクトリが存在するときはコピーしないようにした。
* bin/createFields
setConstraintTypes の設定を追加。
* bin/runSolver.py
継続計算時に bin/applyLatestSettings の実行を追加。
2017.5.23
* リリース。
| |
| PENGUINITIS | |