OpenFOAM 12 リリースノート

2024年12月2日 (月) 21:38時点におけるMmer547 (トーク | 投稿記録)による版 (ページの作成:「OpenFOAM Foundationは、オープンソースCFDツールボックスOpenFOAMのバージョン12のリリースを発表します。 バージョン12では、モジュール式ソルバーとNCC(Non Conformal Coupling)を活用し、メッシングやカップリングの簡素化など、複数の領域を含むシミュレーションを改善しました。  インジェクションや分配、並列分解、再分配、負荷分散など、粒子コー…」)
(差分) ← 古い版 | 最新版 (差分) | 新しい版 → (差分)

OpenFOAM Foundationは、オープンソースCFDツールボックスOpenFOAMのバージョン12のリリースを発表します。 バージョン12では、モジュール式ソルバーとNCC(Non Conformal Coupling)を活用し、メッシングやカップリングの簡素化など、複数の領域を含むシミュレーションを改善しました。  インジェクションや分配、並列分解、再分配、負荷分散など、粒子コードの書き換え作業が続いている。 新しい便利な境界条件や、入力値に[bar]などの単位を含めるオプションがあり、それに応じて変換されます。 TUbuntu24.04および22.04用のopenfoam12パッケージが標準のparaviewパッケージを使用するようになり、サードパーティ製ソフトウェアのインストールがより簡単になりました。

OpenFOAM 12には次のようなハイライトがある。

  • モジュール式ソルバー:他の変数の方程式のための1変数のソース項をサポートしています。
  • 多相:質量、運動量、熱伝導、固相のモデルの改良。
  • 乱流モデリング:簡略化および補正された壁関数のロバストな制限。
  • 熱:粘性加熱モデルを追加し、熱力学的特性の名称を改良。
  • 粒子追跡:一般化された射出と粒子分布。
  • メッシュ:メッシュ生成と複数のメッシュ領域の結合をアップグレード。
  • 並列実行:負荷分散、分解、再分配のための効率的なオプション。
  • ファンクション・オブジェクト:system/functionsファイルに移動し、新しいファンクション・オブジェクトを追加。
  • モデル:質量の連続性に追加される体積と質量のソース。
  • 境界条件:新しい圧力、速度、温度の境界条件
  • ケース構成:パラメータには単位を含めることができる(例:[bar])。
  • プログラミング:ソースコードを検索するfoamFindスクリプト、コード化された関数オブジェクトの例。
  • その他 ParaViewと分解ライブラリのインストールがより簡単になりました。
  • 722件のコードコミット、100件以上の問題解決。
  • ISO/IEC 14882:2011 (C++14): GCC v5.5+、Clang v16+でテスト済み(v10+でも動作するはず)。

OpenFOAM 12は、以下のプラットフォーム用にパッケージ化されています:

  • Ubuntu Linux: Ubuntu 20.04、22.04、24.04用のパッケージインストール;
  • Windows:UbuntuパックでLinux用のWindowsサブシステムを使用してインストールします;
  • cmacOS: UbuntuパックでCanonical Multipassを使用したインストール。

OpenFOAM 12 Source Packは、適切なLinuxプラットフォームでコンパイルできます。

モジュール式ソルバー

  • 一般: ソルバーモジュールによる入力パラメータの再読み込みがよりシンプルで効率的になりました[ commit 6054b1 ]。 多領域ケースに、特定の許容値に達したときに解を停止する、より単純なコントロールが含まれるようになりました[ commit 815f0b ]。
  • 非圧縮ソルバーと圧縮ソルバー: dnsFoamソルバーはOUForce fvModelを持つincompressibleFluidソルバーモジュールに置き換えられました。
  • 堅実なソルバー: 熱物理モデル補正ステップを非直交補正ループ内に移動することにより、固体ソルバーモジュールを修正しました。
  • フィルムソルバー: isothermalFilmソルバーモジュールでインピンジメント圧力が修正されました[ commit 0b321e ]。
  • 数値計算:異なる変数に関する方程式に適用される1変数のソース項用の新しい sourceProxy() 関数を作成しました。例えば、体積/質量ソースを圧力方程式(密度ではなく)に適用します。[コミット a5ea0b ].

多相

  • 運動量移動: multiphaseEulerFoamに新しい陰解法抗力アルゴリズムが追加され、小粒子やEuler-VoFの高抗力ケースの収束が大幅に改善されました[ commit 5fd304 ]。 新しい陰解法による仮想質量力の実装により、気泡流ケースの収束性が大幅に改善されました[ commit 18200e ]。
  • 物質移動: multiphaseEulerFoam が均質凝結と相分離のモデルを含むようになりました [ commit 046680c4 ]。 coefficientMassTransfer fvModelは2相間の物質移動を生成するプロトタイプの例です[ commit 2f018f ]。
  • 熱伝導: multiphaseEulerソルバーに単純なPrandtl熱伝達モデルを追加し、対応する抗力モデルの運動量伝達係数に比例した熱伝達係数を作成するようにしました[ commit 01d0af39 ]。
  • 固相:固相の新しい熱相モデルを追加しました[ commit 020463 ]。 定常相のサポートを改善しました[ commit 9c3a40 ]。 新しいphaseSolidThermophysicalTransportModelクラスを使用するように更新し、定常固相での異方性伝導をサポートしました[ commit 5e0387 ]。 等温定常固相のための新しいIsothermalSolidPhaseModel [ commit ad3d25 ]。
  • 境界条件: multiphaseExternalTemperature境界条件は、multiphaseFluidソルバーモジュールのexternalTemperatureを提供します[ commit 6fce00 ]。
  • インターフェイスのキャプチャ: 多相ソルバーにおいて、PLICやMPLICなどの圧縮界面スキームをCrank-Nicolson時間スキーム[ commit 7ec1e2 ]でよりロバストにしました。
  • 表面波: 新しい不規則表面波モデル [ commit c0da2a ]。 GodaJONSWAP波浪スペクトルは、風速とフェッチの代わりに有義波高と周期が指定される、JONSWAPスペクトルの代替近似パラメータ化を提供します[ commit cbec0045 ]。

乱流モデリング

  • RASのモデリング: 乱流散逸εの境界の下限は、安定性とロバスト性を改善するεの最小値ではなく、最大乱流粘性ナットに基づいています[ commit 854f4541 ]また、乱流散逸ωについても同じです[ commit 195dfbe1 ]。
  • 壁関数: alphatJayatillekeWallFunction熱壁関数は、実装を単純化し、より一貫性を持たせるために、それぞれのナット運動量壁関数のyPlusを使用します[ commit 054a5206 ]。 乱流壁関数のωとεのコーナー重み付けを再実装しました[ commit 1218bd08 ]。非整形多領域の場合の壁関数の境界条件のマッピングを修正しました[ commit b6caf356 ]。

  • エネルギーだ: 新しいviscousHeating fvModelが、全エネルギー方程式に粘性加熱源を追加しました[ commit bbc39318 ]。
  • 熱力学: 熱力学のすべての物性関数は、エネルギーやエンタルピーが特定の量であることを示すために小文字を使うようになりました[ commit abe43a95 ]。

パーティクルとトラッキング

  • 分配金: 分布のコードを一般化し、書き換え助詞のコードを含め、より広く使えるようにしました [ commit e1e0e258 ]。
  • 注射をする: ラグランジュモデリングにおいて、パッチインジェクションモデルの U0 エントリに、初速度を補間するフィールド名を指定できるようになりました[ commit 96b61305 ]。
  • データ処理: 新しいvolumeFraction関数は粒子雲の体積率を計算します[ commit 31b096 ]。

メッシュ

  • 一般的なことだ: dynamicMeshライブラリは、保守性を向上させるためにコードを大幅にリファクタリングした結果、polyTopoChangeライブラリとmotionSolversライブラリに分離されました[ commit b9fe7df3 ]。
  • 生成: extrudeMeshに新しいcylindricalRadial押し出しメソッドが追加されました [ commit e880ec ]. extrudeMeshは新しく生成されたセルを1つ以上のセルゾーンに割り当てることができるようになりました [ commit 33aa4496 ]. snappyHexMeshは-regionオプションを使ってリージョンメッシュを直接リージョンサブディレクトリに生成できるようになりました [ commit 9ace5366 ]. snappyHexMeshのレイヤー挿入のfeatureAngleパラメーターの使用を修正しました[ commit 47fa9bc6 ]。
  • 複数リージョン:mergeMeshesは別々のメッシュ(別々のpolyMeshディレクトリ)のリストを1つのメッシュ(1つのpolyMeshディレクトリ)にまとめることができます[ commit f47e1b0b ]。 stitchMeshアプリケーションをnon-conformal coupledインターフェイスのパッチ交差機能を使用するように置き換えた [ commit 69da8f3d ]。
  • 非共形結合: NCCを並列再分配(負荷分散)と適応的精密化でメッシュの動きに対応させる [ commit 9af6bd ]。 NCC などのメッシュスティッチャーのロバスト性を改善 [ commit 2057174b ]。
  • Boundary: 新しい patchOrder ユーティリティでメッシュのパッチの並び替えができるようになりました [ commit 4707bc91 ]。
  • その他 checkMeshユーティリティまたはcheckMesh関数オブジェクト(後者は移動メッシュの場合)を使ってメッシュをチェックすることができます。
  • モーション マルチバルブICエンジンのメッシュモーションのための新しいfvMeshMover [ commit 7d65e66b ]。
  • ゾーン:メッシュゾーンの処理が改善されました。[ コミット ca2cae8c] コードの重複を削減しました。[コミット4ad52ea1]

パラレルランニング

  • Lオードバランシング: パーティクルクラウドトラッキングやケミストリーの統合は、CPUロードキャッシングをオンにすることで、並列シミュレーション中に自動ロードバランシングを使用することができます[ commit 41705e9e ]。新しい parMETIS インターフェースは、ParMETIS ディストリビューターを使用したマルチ制約と再分配による負荷分散を提供した [ commit 40bcabf7 ]。 aachenBomb のチュートリアルの例では、ラグランジュと化学の両方による多制約の負荷分散を示しています [ commit e727809b ]。
  • 分解と再配布: decomposePar が NCC を使用する際に nonConformalProcessorCyclic パッチを正しく作成するようになりました [ commit 89c818 ]。動的メッシュ精密化の並列ロバスト性を改善 [ commit cd133a28 ]。  特にsnappyHexMesh [ commit adfc80c4 ]を使って並列メッシュを作成するときに起こりうる、あるプロセッサが一時的にゼロセルを含むときに、Zoltanをメッシュの再配分に使えるようになりました; ParMETIS [ commit 3cdec1dc ]でも同じです。

機能オブジェクト

  • 一般的なことだ: 関数オブジェクトは別の system/functions ファイルで設定されるべきで、不要な関数オブジェクトの読み込みやビルドを避けるためです [ commit de363dde ]。新しいfluidMaxDelta関数オブジェクトは、時間の関数として最大時間ステップとクーラント数を設定できます[ commit 277944 ]。writeObjects関数Objectは、指定されたオブジェクトが見つからない場合、オブジェクト・レジストリからすべてのオブジェクト名とその型を表示します[ commit 5039aec6 ]。パッチを操作する関数オブジェクトは、単一のパッチのpatchキーワードと複数のパッチのpatchキーワードの両方を読むことができます [ commit e5f48bfc ]。
  • 力だ: 新しいmovingForcesとrigidBodyForces関数オブジェクトは、指定された、または計算された回転中心を持つ移動剛体の力とモーメントを計算し、書き込みます[ commit 2daceb90 ]。wallShearStress関数オブジェクトは、filmWall [ commit 898cb9b5 ]など、どのタイプのウォールパッチでも計算できます。
  • フィールド cylindricalパッケージ関数オブジェクトはベクトル場を円筒座標に変換します[ commit 1622e190 ]。 新しいspecieFlux、specieAdvectiveFlux、specieDiffusiveFlux関数オブジェクトは流体種のフラックスをsurfaceScalarFieldとして計算します。
  • ICエンジン: 新しいmultiValveEngineState functionObjectはICエンジンの計算でピストンとバルブの動きを表示し、ログに記録します[ commit 9753b67f ]。
  • その他 phaseScalarTransport関数オブジェクトで、alphaPhiフィールドが存在しない場合、新しいsolveAlphaPhiスイッチを設定することで計算できるようになりました[ commit 2bc91ecf ]。

Models

  • 一般的なことだ: MRFはアダプティブ・メッシュ・リファインメントで動作します[ commit cdef2003 ]。
  • 液体ソース: 新しいvolumeSource fvModelは非圧縮性ソルバーには連続方程式に体積ソースを適用し、圧縮性ソルバーには同等のmassSource fvModelを適用します[ commit 9181a6 ]。  ドメインに流体を導入するfvModelsからのソースがフィールドファイルのboundaryFieldセクションで指定されるようになりました[ commit 171101 ]。
  • 勢いだ: 新しい propellerDisk fvModel は、プロペラ曲線 [ commit b3b1b5b6 ] に基づいて、プロペラを近似するディスク運動量ソースを提供します。
  • その他 新しいOUForce fvModelは等方乱流の箱の直接数値シミュレーションのためにランダムなOrnstein-Uhlenbeck過程の力を計算し、運動量方程式に適用します[ commit f0ee70 ]。

一般的な境界条件

  • 圧力:entrainmentPressure境界条件は、テンプレートケースの例[ commit 2a9a2d0e ]の開いた境界での圧力に推奨されています。
  • ベロシティ 円筒座標で入口速度を記述するcylindricalInletVelocity境界条件において、角速度をrad/sまたはrpmで指定できるようになりました。movingMappedWallVelocity境界条件は、2つのメッシュ領域の境界で使用することができ、片側の壁からもう片側の流体に対して滑り止め条件を適用することができます[ commit 59ebac71 ]。
  • 温度だ: 新しいlumpedMassTemperature境界条件は、境界パッチ[ commit 3ab0e63e ]によって全体的または部分的に囲まれた固体の温度をモデル化します。
  • 一般的なことだ: 表データを持つFunction1の補間スキームのデフォルトは線形ですが、ステップに設定できるようになりました[ commit 50c053 ]。すべての境界条件におけるフィールドマッピングの簡略化 [ commit cef86f ]。 多項式 Function1 はより単純な入力構文を持つ [ commit c3f131e8 ]。
  • カップリング: nonConformalMappedWallパッチタイプは、例えばCHTのために、界面で面を適合させる必要なしに、別々の領域のメッシュを接続する柔軟な方法を提供します[ commit a3e38977 ]。

ケース構成

  • データの可視化: foamMonitorに、データの列を選択し、Y軸に独立変数をプロットし、定期的に更新することなく単一のグラフを表示する新しいオプションが追加されました[ commit 9252d0c0 ]。
  • ケースの初期化: deltaTFactorをcontrolDictファイルで設定し、可変時間ステップでの調整率を制限することができます。無次元のパラメータはdimension []; [ commit 87ff44 ]で指定できる。 foamDictionaryに-outputオプションが追加され、変更された辞書を任意の指定されたファイルに書き出せるようになりました[ commit 6d9bc6 ]。寸法付きパラメータを値の前後に寸法を指定できるようになりました[ commit 209a3756 ]。foamDictionary に入力ファイルの項目名を変更するオプションが追加されました [ commit b0dbdd4a ]。
  • 単位: 入力パラメーターに単位を指定できるようになり、例えば圧力の[bar]は、kg/(ms²) [ commit 476bb42b ]のような従来の単位に変換されます。新しいfoamUnitsスクリプトは、入力パラメータの単位(例えば[cal]や[J])とその変換、および次元単位を記述します[ commit e4abe3d5 ]。例えば、回転速度omegaは[rpm] [ commit 3928fbb8 ]として指定されます。

単位については、"OpenFOAM User Guide "を参照してください: 4.2.6. 次元単位" と以下のサブセクション、および foamUnits スクリプトについては、"OpenFOAM User Guide: 4.7.7 foamUnits スクリプト" を参照してください。

プログラミング

  • コード化された入力: 入力ファイル用の#calcディレクティブは、ニュートン・ラプソン反復を使って方程式の根を求める例で示されます[ commit cc9991 ]。 入力ファイルに対する#codeStreamディレクティブは、グラフデータをプロットする例で示されます[ commit fbc36b ]。 pitzDailySteady のサンプルケースには、ひずみ率を書き込むコード化された関数オブジェクトが含まれています [ commit 58cb08 ]。 コード化された関数オブジェクトの例をいくつか追加しました [ commit 811faaa0 ]。
  • コード検索: 新しい foamFind スクリプトは OpenFOAM ファイルを検索し、オプションでファイル全体または検索文字列にマッチする行を表示して内容を処理します [ commit 1c6d785c ]。

foamFind スクリプトの詳細については、"OpenFOAM User Guide "を参照してください: 4.7.8 foamFind スクリプト" を参照してください。

その他

  • その他の数字: 一般的な分布に standardNormal 関数を追加 [ commit d34d9b93 ]。
  • フィールド フィールドはメッシュのパッチの順番でパッチフィールドを構築するようになり、ロバスト性が向上しました [ commit 16b8bf5e ]。
  • データ出力: I/Oで時刻が使用される場合、各値が一意になるように精度が自動的に調整される [ commit d2817a0 ]。
  • インストール: ParaViewと分解ライブラリのインストールを制御する新しい環境変数を追加 [ commit 48fcb7f6 ]。

クレジット

OpenFOAM12は、次のように制作された:

  • メンテナンス (CFD Direct): Henry Weller, Will Bainbridge, Chris Greenshields.
  • 投稿者: Timo Niemi, Juho Peltola, Heikki Kahila, Bulut Tekgül, Stanislau Stasheuski.

ライセンス

OpenFOAM 12は、OpenFOAM FoundationによってGeneral Public Licence v3の下で配布されています。