OpenFOAM 10 リリースノート


OpenFOAM Foundationは、オープンソースCFDツールボックスOpenFOAMのバージョン10のリリースを発表します。バージョン10は、OpenFOAM開発版のスナップショットで、持続可能な開発により、常にリリース可能です。  使いやすさ、ロバスト性、拡張性が厳しく要求される中、新機能と既存コードの大幅な改良を提供します。

OpenFOAM 10には、次のような重要な開発が含まれています。

  • 多相:モデルの追加、多相ソルバーのパフォーマンスとロバスト性の向上。
  • トランスポート:プロパティを単一の physicalProperties ファイルに統合。
  • 熱物理:導電率の取り扱いを改善し、ドキュメントを追加。
  • 熱伝導:共役熱伝導における熱結合の改善。
  • パーティクルトラッキング:雲のfvModelを使ったソルバーにプラグインできるようになりました。
  • 反応:化学では、熱膨張を考慮して質量分率を求める。
  • 並列化:負荷分散、分解、再分配のための新しいフレームワーク。
  • メッシュ:snappyHexMesh、blockMesh、その他のツールの全般的な改善
  • ダイナミックメッシュ:AMIに代わる回転ジオメトリ用の非整合結合(NCC)。
  • 動的リメッシング:エンジンを含むメッシュモーションのためのメッシュ間マッピング。
  • ファンクションオブジェクト:サンプリングのためのより効率的な出力、および新しいフィールド計算。
  • モデルと制約:メッシュケースの移動とファンクションオブジェクトでの動作が可能になりました。
  • 境界条件:圧力、速度、温度の新しい一般条件。
  • ケース・コンフィギュレーション:カスタマイズされた時間の尺度を提供するためにuserTimeを作成。
  • 計算:壁までの距離計算、時間処理、I/Oの改善。
  • 約635件のコードコミット、161件の問題解決。
  • ISO/IEC 14882:2011 (C++14): GCC v5.4+、Clang v10+でテスト済み(v6+でも動作するはず)。

OpenFOAM 10は、以下のプラットフォーム用にパッケージ化されています。(サポートされている)グラフィックス・カードがないシステムでは、ParaView 5.6(LLVM/Galliumアクセラレーション付きMesaを含む)[2023年1月更新:ParaView 5.10.1(LLVM/Galliumアクセラレーション付きMesaを含む)]。

  • Ubuntu Linux: packaged installation for Ubuntu 18.04 20.04 and 22.04 [ 22.10 added Jan 2023 ];
  • その他のLinux:Dockerコンテナによるインストール、またはソースコードからのコンパイル;
  • Windows 10: Windows Subsystem for LinuxとUbuntuパックを使用したインストール;
  • macOS: Dockerコンテナによるインストール。

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

多相

  • モデリング: 表面波を(波長の代わりに)周期を入力して指定できるようになりました[ commit 559fe8 ]。また、境界での流れの反転が可能になったので、波はどの方向でも、平均流がゼロでも指定できるようになりました[ commit 1c4868 ]。液体の蒸発モデリングに凝縮スイッチを追加 [ commit cc3b25 ]。multiphaseEulerFoamのサブモデルのブレンドが3相以上のシミュレーションのために拡張されました[ commit 428c54 ]。driftFluxFoamのコロイド分散に対する新しいQuemada粘度モデル [ commit f4b497 ]。driftFluxFoamのMRFによる遠心加速度を修正しました。driftFluxFoamに凝集懸濁液のMichaels and Bolgerモデルを追加。driftFluxFoamで、流れの曲率が連続相からの分散相の分離に物理的に影響するようになりました[ commit 620cbe ]。
  • Reacting Multiphase (VTT FinlandおよびHZDR Dresden-Rossendorfとの共同研究): Liao et alの合体および分解モデルを追加しました[ commit fe9829 ]。新しいモーメント関数オブジェクトがポピュレーションバランス法で計算された粒度分布の平均特性を計算します[ commit 36c565 ]。multiphaseEulerFoamに固体粒子の合体および破壊モデルを追加しました[ commit b4bcb2 ]。母集団バランス法における膨張の計算を改善しました[ commit 376b51 ]。
  • パフォーマンス/数値計算: compressibleInterFoamの温度方程式はデフォルトでは全内部エネルギーに基づいて定式化されますが、totalInternalEnergyをfalseに設定することで内部エネルギーに基づいて定式化することができます[ commit 12dc41 ]。 compressibleMultiphaseInterFoamがfvModelsとfvConstraintsをサポートするようになりました[ commit 13b782 ]。相率 alpha → 0 の場合の多相ケースの安定化が改善されました[ commit 3df883 ]。新しいphaseStabilisedおよびphaseStabilisedSnGrad補間スキームが、位相分率が1e-3より小さい場合に有界形式に戻すことにより、貧弱なメッシュ上での多相EulerFoamの実行を安定化させるようになりました[ commit 7b3631 ]。
  • チュートリアル 固体粒子の合体および破壊を示す90°曲がり管内の流れのチュートリアル例(Kasper Gram Bilde、HZDR Dresden-Rossendorf との共同研究) [ commit 0999cd ]。

輸送モデリング

  • 一般: 非圧縮性、圧縮性、単一相、多相、単一領域、多領域の流れに対して、特に単一の physicalProperties ファイルによる流体特性の指定を統合しました[ commit 65ef2c ]。
  • MomentumTransportModels: 燃焼のチュートリアルで、輸送特性を計算するためのWilke混合則を示すようになりました[ commit 393023 ]。新しい Andrade モデルが液体の動的粘性と熱伝導率の自然対数を計算するようになりました[ commit 26f0e4 ]。
  • ThermophysicalTransportModels: listThermophysicalTransportModelsオプションを指定してソルバーを実行すると、熱物理輸送モデルをリストアップできるようになりました。
  • 乱流: 新しいVoFTurbulenceDamping fvModelはVoF界面で乱流減衰を適用します[ commit 4f9694 ]。mixtureKEpsilonモデルのεmフィールドにεmWallFunctionを追加しました[ commit 3bac21 ]。レイノルズ応力(R)乱流モデルにおいて、Rと速度Uの結合が改善され、ダクト内の二次流れを示す新しいチュートリアルが追加されました[ commit a34604 ]。

熱物理モデリング

  • 熱力学: 状態方程式 [ commit c86c64 ]、熱力学 [ commit b3e02d ]、輸送モデル [ commit 8dbbe1 ]のヘッダードキュメントを拡張。状態方程式に体積熱膨張係数の関数を追加 [ commit 2d7a57 ]。熱力学は熱拡散率 alpha ではなく熱伝導率 kappa を熱輸送の基本パラメータとして保存するようになりました [ commit cc96ab ]。
  • 輸送: const輸送モデルで、プランドル数の代わりに導電率を指定できるようになりました[ commit cd1f69 ]。

熱伝達

  • 数値計算 共役熱伝達において、新しいnEcorrループが流体と固体領域間の熱結合が支配的なケースを改善します[ commit f52d86 ]。buoyantSimpleFoamとbuoyantPimpleFoamは、圧縮性流体の定常または過渡の浮力乱流ソルバーbuoyantFoamに統合されました[ commit d40ecd ]。

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

  • ソルバー 雲fvModelは、非圧縮性ソルバーと圧縮性ソルバーの両方で、様々なレベルの結合でシミュレーションに粒子を追加することができます[ commit 5f1146 ]、 例を参照してください[ commit 24a359 ]。
  • トラッキング: トラッキングのロバスト性を改善し、ハングアップ、ゼロ除算、浮動小数点エラーを防止しました [ commit 5272e4 ]。

反応する流れ

  • 化学: 化学モデルは熱膨張に伴う反応速度の変化を考慮するため、濃度ではなく質量分率を解くようになりました[ commit 4f0dfc ]。In-Situ Adaptive Tabulation (ISAT) 化学モデルがリファクタリングされ改善されました[ commit 8145de ]。
  • 燃焼: fixedTemperature 制約を使用した着火の例を追加しました [ commit 19b3b2 ]。
  • 集計: in-situ adaptive tabulation (ISAT) に関するいくつかの問題を修正しました[ commit 011397 ]。

平行移動

  • ロードバランシング: 一般的なCPUロードバランサーのプロトタイプがローカルセルの計算負荷に基づいてメッシュを並列に再分配します。新しいfvMeshDistributorsライブラリはシミュレーション中のメッシュの並列再配布、特にロードバランシングを提供します[ commit bf5f05 ]。
  • 分解と再配分: fvMesh 内に新しいフレームワークを作成し、ロードバランシングなどの実行時のメッシュ再分配を扱えるようにしました [ commit 687996 ]。負荷分散のためのメッシュ再分配をサポートするためにMeshObjectsに新しいdistribute関数を追加しました[ commit a0ac78 ]。並列ケース用のメッシュの分解と再分配のための個別のコントロールを導入 [ commit f97f63 ]。Zoltanライブラリを使用した新しい並列メッシュ再配分 [ commit 340856 ]。2次時間スキームで実行される移動メッシュケースが再配分によって実行できるようになりました[ commit 97eee8 ]。
  • 最適化: MULESのリミッター計算の並列効率が改善されました[ commit 8cc05a ]。 decomposeParが最小IOのために最適化され、時変メッシュのシーケンスを分解できるように修正されました[ commit 399545 ]。

メッシュ

  • 一般: メッシュ生成時に fvMesh と fvSolution ファイルが不要になりました [ commit ddbf2d ]。メッシュデータは、メッシュの動きとトポロジーの変更が発生した場合にのみ、時間ディレクトリに書き込まれるようになりました [ commit b439fc ]。
  • snappyHexMesh: バッフルを持つ複数のlocationInMeshの処理を修正しました[ commit 115144 ]。addLayersがオフの時、addLayersControlsサブ辞書をsnappyHexMeshDictファイルから完全に削除できるようになりました[ commit d87a93 ]。
  • blockMesh: 境界パッチ内で指定されていないブロック面は、defaultPatchエントリで名前とタイプを指定できるデフォルトパッチに集められます[ commit 99cfbd ]。
  • 操作: topoSetユーティリティは非推奨となったsetSetユーティリティを完全に置き換え [ commit 8d887e ]、入力ファイルの構文を簡略化 [ commit 6a657c ]。Zoltan ライブラリを使用した並列ケースでメッシュのリナンバリングを有効にしました [ commit d90f42 ]。createPatch ユーティリティ [ commit 930207 ] と createBaffles ユーティリティが単純化されました [ commit f93300 ]。topoSet で、指定した回転を使用する rotatedBoxToCell ソースによりシンプルな入力オプションを追加しました [ commit c18039 ]。
  • 変換: Fluent3DMeshToFoamメッシュコンバーターがFluentバージョンR2021用に更新されました[ commit 318f78 ]。
  • サーフェスジオメトリ: transformPointsとsurfaceTransformPointsの新しい構文を説明する-helpオプションが追加されました。

ダイナミック・メッシュ

  • ノンコンフォーマルカップリング Non-Conformal Coupling (NCC)は、特に、回転するジオメトリをシミュレートする場合など、1つ以上の領域が移動する場合に、信頼性が低く、不正確なAMIとACMI機能に代わって、独立したメッシュで領域の領域を接続します[ commit 569fa3 ]。AMI、ACMI、リピートAMIのすべてのチュートリアル例がNon-Conformal Couplingを使用するように変更されました。ACMI と Repeat AMI は信頼性が低いので OpenFOAM から削除され、Non-Conformal Coupling に置き換えられました。AMI は v10 リリースまで残りますが、その後削除されます。[コミット b4b8b2 ]。
  • その他 moveDynamicMeshユーティリティはmoveMeshに改名され、同名のユーティリティは廃止されました[ commit 31da3a ]。シミュレーションがトポロジカルメッシュの変更リストを受けられるようになりました[ commit 45428b ]。剛体力学に回転ジョイントを追加しました。例えば、移動する船にプロペラを組み合わせるために使用します [ commit 0289f3 ]。

Non-Conformal Coupling の詳細については、"OpenFOAM Non-Conformal Coupling" および "Using NCC in OpenFOAM" を参照してください。

ダイナミック・リ・メッシング

  • マッピング: mapFields ユーティリティのコードを簡素化しました [ commit 08b7a9 ]。最新のmesh-to-mesh mappingでは、トポロジーやジオメトリの変更、メッシュの精密化および精密化解除などを管理するために、事前に生成されたメッシュのセットを使用できます [ commit 47b0cd ]。  メッシュ間マッピングが並列実行時のメッシュ間の分解の変更をサポートするようになりました [ commit f0e693 ]。
  • エンジン: エンジンシミュレーション用の新しいエンジンとlayeredEngine fvMeshMoverを追加しました [ commit 941ea1 ]XiFoamで使用されるようになり、XiEngineFoamは冗長になりました [ commit 8f14b6 ]。エンジンfvMeshMoverのエンジンバルブとピストン機能をリファクタリングしました [ commit 49faf0 ]。rhoPimpleFoamとエンジンfvMeshMoverは反応なしでエンジンをシミュレーションすることができ、coldEngineFoamソルバーを冗長化します [ commit 640cd6 ]。同様にreactingFoamは化学反応ありのエンジン計算をシミュレーションすることができ、engineFoamソルバーを冗長化します [ commit facc36 ]。

ファンクション・オブジェクト

  • サンプリング: サンプルのサーフェスはすべてのフィールドデータを1つのファイルに書き出すようになり、ビジュアライゼーションの後処理を簡素化し、サーフェスジオメトリデータの重複を避けることでディスク容量を削減しました [ commit 261ce0 ]。CSVフォーマットの書き込みを改善しました。サンプリングデータにおいて、トラッキングが現在の時間レベルで確実に実行されるようになりました[ commit 41b73e ]。ストリームラインが周期境界を越えて伝播するようになりました [ commit 701fc2 ]。サンプリングとストリームラインを改良し、無駄なファイル書き込みを減らし、サンプリング・セグメントと並列化の信頼性を高め、インターフェイスを改善しました[ commit 25a6d0 ]。新しいlayerAverage関数オブジェクトがpostChannelポスト処理ユーティリティを置き換えます[ commit 053eed ]。layerAverage関数オブジェクトを書き換えて、例えばカーブしたパイプのような複雑な形状の変化にも対応できるようにしました [ commit d5820b ]。
  • 視覚化: サーフェス関数オブジェクトにwriteEmptyオプションを追加し、特にアニメーションを生成する際のisoSurfacesに空のファイルを書き出すようにしました[ commit 2d1428 ]。
  • フィールド: confort関数オブジェクトはドラフトレートを計算するために拡張されています[ commit 19950f ]。scalarTransport関数オブジェクトは、特に拡散がなく、圧縮または(M)PLICスキームを使用してシャープな界面が維持されている場合に、境界性を確保するためにMULESを使用するオプションを含んでいます[ commit aa6c04 ]。wallShearStress関数オブジェクトが多相系での指定相の壁せん断応力を処理できるようになりました[ commit e6acc7 ]。  wallHeatFlux 関数オブジェクトが多相系で指定した相の壁熱流束を計算できるようになりました [ commit 7d4dca ]。

パッケージ化された機能オブジェクトの最新リストについては、ユーザーガイドを参照: 6.2 後処理 CLI を参照してください。

モデルと制約

  • 一般: fvModelsとfvConstraintsにメッシュモーション用のアップデートを追加しました[ commit 19bdfa ]。 fvModelsとfvConstraintsは方程式を解く関数オブジェクト、例えばscalarTransport、スカラー場のモデルと制約を提供する関数オブジェクトと連動できるようになりました[ commit 987d59 ]。
  • fvModels: actuationDisk fvModelが多相ソルバーで動作するようになり [ commit 96de80 ]、ディスクの向きをサポートするようになりました [ commit 991489 ]。時間ステップをfvModelで制限できるようになりました[ commit e478bb ]。新しいinterfaceTurbulenceDamping fvModelが相界面付近の乱流の減衰を提供するようになりました[ commit 898924 ]また、phaseTurbulenceStabilisation fvModelが相率→0の場合に相の乱流特性を安定させるようになりました[ commit 9925df ]。
  • fvConstraints: limitTemperature fvConstraintが、compressibleInterFoamのような、エネルギー方程式の解変数として温度を使用するソルバーに対応しました[ commit fb53b9 ]。limitPressure fvConstraintに制限圧力場を指定するオプションを追加しました[ commit 3b3127 ]。limitVelocity fvConstraintをより一般的なlimitMagに置き換えました。

一般的な境界条件

  • Pressure: 新しい transonicEntrainmentPressure 境界条件は、ユーザーが指定できるマッハ数 [ commit 63ef6f ] から始まる超音速流出とゼロ勾配に向かってブレンドすることにより、出口境界 [ commit d10f22 ] で超音速ジェットをサポートします。totalPressure境界条件は、フリーストリームで指定できる外部接線速度[ commit a36082 ]で確実に機能します[ commit ba5612 ]。
  • 速度: 新しいmovingWallSlipVelocity境界条件は、動く壁のスリップ条件を提供します[ commit 80c1a6 ]。  flowRateInletVelocity 境界条件で、層流境界層と乱流境界層に対応するオプションの流速プロファイルと、平均流速に基づく流速指定を選択できるようになりました[ commit 8bb48d ]。
  • 温度 externalWallHeatFluxTemperature 境界条件は、複数の熱源、すなわちパワー、フラックス、伝達係数を同時に設定できるようになりました[ commit 373c49 ]。
  • 一般: テンソルの回転周期変換を修正しました。

Case Configuration

  • データ可視化: foamCreateVideoに新しいオプションが追加され、動画の開始時や終了時に一時停止ができるようになった [ commit c70a7b ]。
  • ケースの初期化: userTimeの概念を一般化し、controlDictで設定することで、実行時間をカスタマイズされた時間の尺度に変換することができます。例えば、データI/Oのためのクランク角などです。engineTimeは、標準ソルバーにエンジンシミュレーションを統合するためのさらなるステップとして、設定可能なengine userTimeに置き換えられました。

Programming and Computation

  • データ入力: オブジェクトファイルの存在をチェックし、オブジェクトを構築することなくヘッダをチェックできるIOobjectの新しいtypeIOobject [ commit b91233 ]。I/Oにおけるファイルパスの取り扱いを合理化した[ commit cc9233 ]。
  • その他の数値計算: cpuTimeがPOSIX clock()関数を使用するようになり、分解能が向上しました[ commit 01f075 ]。圧縮性ソルバーで圧力方程式の計算開始時の密度予測を標準化しました [ commit 468954 ]。meshWave機能の重複コードを削除し[ commit 20ef80 ]、最も近い壁までの距離計算で使用される変換インターフェイスによる計算を単純化しました[ commit 4e0577 ]。壁までの距離の計算がプロセッサーや周期的な境界でより一貫したものになり、計算の精度をより細かく制御できるようになりました [ commit 9d702d ]。
  • コンパイル: GCC コンパイラ v11 [ commit d83c87 ] と OneAPI Intel コンパイラ [ commit 37108e ] のサポートを追加しました。