OpenFOAM Foundationは、オープンソースCFDツールボックス「OpenFOAM」のバージョン9のリリースを発表しました。バージョン9は、OpenFOAM開発バージョンのスナップショットで、持続的な開発により、常にリリース可能な状態になっています。  このバージョンでは、ユーザビリティ、ロバスト性、拡張性が厳しく要求される新機能や既存コードの大幅な改良が行われています。


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


Multiphase:マルチフェーズソルバーの性能、数値、ロバスト性を向上させました。

輸送:変異体の拡散とThermophysicalTransportModelsの再設計。

熱物理学:モデルパッケージの自動コンパイル、混合ルール、表形式の入力。

熱伝導:ソルバー、BC、ポストプロセス間で計算の一貫性を持たせました。

粒子追跡:クラウドの種類はユーザーが選択し、ソルバーにはハードコードされません。

反応:数値と化学のロバスト性を改善し、一般的なコントロールを追加しました。

メッシュ:snappyHexMeshの一部をリファクタリングし、分解と操作のツールを追加しました。

表面皮膜:標準的な熱物理モデリングを導入。

ファンクションオブジェクト:パッケージ化されたファンクションオブジェクトを一新し、使いやすさを向上させました。

Models and Constraints: fvOptionsは、より柔軟なfvModelsとfvConstraintsに置き換えられました。

Case Configuration:スクリプトを強化し、2変数のFunction2関数を新たに追加しました。

計算:I/O、コンパイル、数値計算の堅牢性とパフォーマンスを向上させました。

約750件のコードコミット、200件以上の問題解決。

ISO/IEC 14882:2011(C++14):GCC v5.4+、Clang v10+でテスト済み(v4+でも動作するはず)。

OpenFOAM 9は、以下のプラットフォーム向けにパッケージ化されています。ParaView 5.6には、(サポートされている)グラフィックカードのないシステム向けにLLVM/Galliumアクセラレーション機能付きのMesaが含まれています。

Ubuntu Linux:Ubuntu 18.04、20.04、21.04向けにパッケージ化されています。

その他のLinux:Dockerコンテナを使用したインストール、またはソースコードからのコンパイル。

Windows 10:Windows Subsystem for Linuxを使用してUbuntuパックでインストールします。

macOS:Dockerコンテナを使用したインストール。

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


マルチフェーズ

  • モデリング:multiphaseEulerFoamの界面での物質移動によるエネルギー変化を修正しました[ commit 0efc49 ]。
    • multiphaseEulerFoam: 質量/熱伝達の一貫性と線形化 質量移動に起因するすべての熱移動は、顕在的エンタルピーで実装されるようになりました。これにより、どの形式のエネルギーを解くかにかかわらず、一貫性が保たれます。これにより、質量移動を伴ういくつかのケースで、温度の異常が解消されました。 質量移動に起因するすべての熱移動が線形化されました。多種系の場合、残留質量分率を指定する必要があり、これは constant/phaseProperties 辞書の新しい「residualY」キーワードで与えられます。多種系でこの項目が省略された場合、線形化は無効になります。
  • compressibleInterFoamにおいて、混合物モデルは、熱力学的特性については質量分率、輸送特性については体積分率に基づいています [ commit 1988e3 ]。
  • compressibleInterFoamでは、壁に衝突して膜を形成する粒子雲をサポートしており、膜が十分に厚い場合にはVoFに移動することができます。壁での表面張力について、多相ソルバーで接触角を任意の相で指定できるようになりました [ commit de7642 ]。
  • Reacting Multiphase (with VTT Finland and HZDR Dresden-Rossendorf): 新しい phaseSurfaceArrhenius 反応により、多相シミュレーションにおける相の表面での反応速度を計算できるようになりました[ commit 3f64e2 ]。
  • fvOptionソース項の追加、sizeGroup方程式の修正、密度変化ドリフトモデルの修正 [ commit 1cbb70 ].
  • multiphaseEulerFoamでのpopulation balance modellingを含む新しいbubblePipeチュートリアル [ commit 01205c ]。
  • パフォーマンス/数値計算:multiphaseEulerFoamの複数相の制限を改善しました[ commit 058562 ]。
  • テストのために古い方法に切り替えることができます[ commit d92665 ]。
  • multiphaseEulerFoamの衝撃を確実に保存するために運動エネルギー項を修正しました。multiphaseEulerFoamに圧力コントロールを追加し、圧縮性ソルバーとの整合性を図りました [ commit 762fb4 ]。
  • multiphaseEulerFoamの保存性と拘束性をムービングメッシュの場合に改善しました [ commit bdf45f ].
  • チュートリアル:multiphaseEulerFoam の新しい isothermalGrowth の例題 [ commit b92955 ].
  • 新しい containerDischarge2D example case with liquid discharge from the container [ commit 6b469e ].
  • multiphaseEulerFoamのmixerVessel2Dケースは、圧力参照を実演するために完全な非圧縮性になりました [ commit 4865cd ]。

トランスポート・モデリング

  • MomentumTransportModels: 新しいチキソトロピック運動量輸送モデル [ commit 9105b8 ].
  • ThermophysicalTransportModels: エネルギーではなく温度勾配に基づく熱流束モデルを安定的かつ効率的に追加しました。内部エネルギーを解く際のユニティ・ルイス数拡散モデルの改良 [ commit 8106c1 ].
  • 流体種の差動拡散による熱流束の計算を改善しました [ commit 0ea1b2 ].
  • 多成分の拡散:層流用の新しいMaxwellStefanFourierは、多成分拡散のためのMaxwell Stefanモデルと、オプションで種のSoret熱拡散を含むFourier熱流束モデルを組み合わせたものです[ commit 8182a0 ]。
  • New FickianEddyDiffusivity multicomponent transport model has calculates heat and mass fluxs using Fick's law and eddy viscosity turbulence modelling [ commit e001cd ] with optional temperature-dependent coefficients [ commit c5fc21 ].
  • 新しい多成分 FickianFourier 質量/エネルギー輸送モデル [ commit 16e975 ].
  • タービュランス:kkLOmega乱流モデルにLopez & Walters (2016) の修正を追加しました[ commit fdfe5f ]。
  • 新しいkOmega2006乱流モデル、Wilcoxのk-omega RAS乱流モデルの2006年版 [ commit 10a6e7 ].

輸送モデリングについては、「Redesigning OpenFOAM for the Future」を参照してください。

熱物理モデリング

  • モデルパッケージ:標準では提供されていないモデル(熱力学、輸送、状態方程式)のパッケージが指定された場合、そのパッケージは自動的に構築・コンパイルされます(コミット04cab8)。
  • thermophysicalPropertiesのパッケージを様々なソルバーアプリケーションに合わせて動的にコンパイルします [ コミット f60252 ]。
  • 熱力学:固体の熱物理モデリングに圧力場が必要なくなり、共役伝熱ケースの固体領域にpファイルが必要なくなりました[ commit 51d763 ]。
  • 新しいfluidReactionThermoモデルでは、密度(rh)または圧縮率(psi)に基づいて熱物理モデルを選択することができます - rhoReacting(Buoyant)Foamは廃止され、より一般的なreactingFoamとbuoyantReactingFoamソルバーが採用されました。
  • 混合規則:熱物理モデリングのコアメンテナンスでは、熱力学と輸送特性の個別の混合ルールの実装をサポートしています [ commit a63b30 ]。
  • 新しいvalueMulticomponentMixtureモデルにより、種の混合物の熱物理特性の一般的な計算が可能になりました[ commit 995cda ]例えば、気体の輸送特性に対するWilke混合規則[ commit e638d7 ]。
  • データ入力:新しい rhoTabulated, hTabulatedThermo, tabulatedTransport は、密度、エンタルピー、粘度、熱伝導率を圧力と温度の均一なテーブルから高速なルックアップと補間で提供します [ commit 13589c ].
  • R12冷媒の熱物性の表を追加した [ コミット 6b4b81 ].
  • リファクタリング:CpとCvの計算をキャッシュすることで、複数種の熱物理モデリングの効率を向上させた [ commit 5e146c ] 。

熱伝導

  • ケース設定:radiation fvOption [ commit 984830 ] を使用したシミュレーションに熱放射が含まれるようになりました。
  • 数値計算:wallHeatFlux関数オブジェクトを更新し、thermophysicalTransportModelのq()関数を使用するようにした [ commit 16da54 ]。
  • 共役熱伝達において、固体熱流束モデルがエネルギー的に保守的で温度的にも一貫しているようになりました[ commit f15d15 ]。
  • 境界条件:温度結合された境界条件は、境界パッチでの異方性熱伝導率のために対称テンソルを使用します [ commit 77b31c ]。
  • externalWallHeatFuxTemperature境界条件における放射熱伝達の修正と一般化[ commit bdbb2a ]。
  • データ処理:wallHeatFlux関数オブジェクトに積分と平均の計算を追加 [ commit 9b2f93 ].
  • 壁熱伝達関数オブジェクトを再設計し、有効拡散率として計算するか、レイノルズのアナロジーを使用するかのオプションを追加しました [ commit c0978a ]。

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

  • 解決しました:粒子の組成が連続相に依存しないようになりました[ commit 40d3db ]。
  • トラッキング:コアメンテナンス作業では、ラグランジアンコードの下位レベルで粒子雲を不必要に含むことを削除しました[ commits 2df733 ]。
  • モデリング:粒子機能を書き直し、ユーザーがケース入力ファイルで雲のタイプを設定できるようにしました。それに伴い、ラグランジアンソルバーの名前を変更しました。

リアクション

  • 制御:化学反応におけるマスバランスのチェックを追加しました [ commit 52a10b ].
  • 新しい反応基底クラスは、熱力学モデルを必要とせずに反応スペシ係数を提供します [ コミット e8fba9 ]。
  • 反応を含むエネルギー組成系が解決され続けている間、pとUの解決を停止するためにreactingFoamにfrozenFlowオプションを追加しました[ commit a620e9 ]。
  • 数値計算:圧縮性流れと反応性流れのソルバーにおける圧力仕事項の離散化を改善しました。化学積分が古い時間のプロパティで正しく初期化されるようになりました [ コミット 07adb1 ] 。
  • 化学:EulerImplicitの化学ソルバーが、標準的な化学モデルのジャコビアンを使用するように更新されました[ commit bddd82 ]。 
  • 化学モデルのジャコビアンの温度微分項を修正しました [ commit 955d9d ].
  • 反応速度の計算を簡素化しました [ commit ad8262 ].
  • ISATが標準で可変タイムステップモードで動作するようになりました [ commit 672afc ].

メッシュ

  • snappyHexMesh: メッシュの歪みと、結合された(サイクリックとプロセッサー)パッチのパッチインデックスと順序のバグを修正しました[ コミット f85dbc ]。
  • リージョン内のリファインメントレベルの設定を簡素化 [ commit be9fb8 ].
  • 様々な castellatedMeshControls を簡素化しました [ commits 0ef0247 ]。
  • 分解します:Mesh redistributionはいくつかのリファクタリングと再設計が行われました[ commit f02d5e3 ]。
  • 幾何学的分解の delta パラメータを削除し、デフォルト値を設定しました [ commit 9c73d4 ]。
  • 再構築:reconstructParMesh と fvMeshDistribute を維持することで、不正なポイントマージに関連した再構築の失敗を防ぐことができました [ commit 9e740b ] 。
  • blockMeshです:angleDuct [ commit 35f73c ] と sloshingTank [ commit c5b6e6 ] を含むサンプルケースにおいて、blockMesh 設定の m4 スクリプトを codeStream で置き換えました。
  • Manipulation: transformPoints に新しい構文が追加され、複数の変換の連続を正しくサポートするようになりました [ commit 845d5b ].
  • mergeOrSplitBaffles を splitBaffles と mergeBaffles の2つの専用アプリケーションに置き換えました [ コミット 45a005 ] 。
  • refineMeshにおける座標軸の命名を標準化しました [ commit 926ba2 ]。
  • メッシュの動き:リージョンやマルチプルフィールドによってダイナミックなメッシュのリファインメントを制御できるようになりました[ commit fe9de1 ]。
  • 地域:patchDistanceToCellは、指定されたパッチの距離内にあるtopoSetのセルを選択します [ コミット 1440b6 ]。
  • 新しい内部パッチフィールドタイプで、メッシュのサブセットから内部の面を露出させることができるようになりました [ コミット 520440 ]。
  • チュートリアル:新しいdrivaerFastbackの例題である自動車のエアロダイナミクスに、メッシュサイズとプロセッサコアを指定するスクリプトオプションを追加しました[ commits 2bd0fd ]。
  • Surface geometry: surfaceTransformPointsに新しい構文が追加され、複数の変換の連続を正しくサポートするようになりました[ commit 45dca3 ]。

表面フィルム

  • 使用方法:下位互換性を保ちつつ、表面積モデリングの入力ファイルフォーマットを簡素化した [ commit 3838df ] 。
  • モデル:表面フィルムと一次流れ領域の間の熱と質量の移動を修正しました [ commit 0eafc1 ]。
  • 標準熱力学がフィルムの熱物性を提供するようになりました [ commit 76e07b ].
  • 例:New plateFilm example case of VoF with film modelling [ commit b0a573 ].

機能オブジェクト

  • 全般:パッケージ化された関数オブジェクトを見直し、ローカルファイルや関数呼び出しの引数を使った設定が同じように効果的になるようにしました[ コミット 5d0d9a ]。
  • 関数オブジェクトはcontrolDictの中でパラメータを引数として設定することができるようになりました。
  • サンプリング:topoSet ユーティリティに改良された searchableSurfaceToFaceZone オプションが追加され、サーフェスのジオメトリファイルに対応する信頼性の高いフェースゾーンを生成できるようになりました [ commit 89b9e2 ]。
  • 新しい volumetricFlowRateTriSurface 関数オブジェクトは、ジオメトリ (例: OBJ, STL) ファイルで定義されたサーフェスを通過する流量を計算します [ commit bda074 ].
  • データ書き込みコードをサンプリングライブラリのsetWriterクラスとしてリファクタリングしました [ commit f4a65f ]。
  • 視覚化:ストリームライン関数オブジェクトは、ストリームラインの開始点からの合計積分時間などの年齢を書き込むようになりました[ commit aa4cb4 ]。
  • 切断面などのisoSurfaceの生成のロバスト性を改善しました [ commit cb8be0 ]。
  • ポリゴンの三角測量をロバストなアルゴリズムに置き換えました [ commit 02b97a ]。
  • フィールド:turbulenceFields関数オブジェクトで特定のフェーズを選択できるようになりました[ commit a09465 ]。
  • 新しい cylindrical functionObject が速度を円筒形の極座標に変換するようになりました [ commit 501f3d ]。
  • 一般的なsurfaceFieldValueとvolFieldValue関数オブジェクトの使いやすさとパフォーマンスが改善されました [ コミット 056cc2 ].
  • 時間:setTimeStep関数オブジェクトでは、時間の経過とともに変化するwriteIntervalを設定することができます[ commit bae95b ]。

パッケージ化された機能オブジェクトの最新リストについては、「ユーザーガイド」を参照してください。6.2 Post-Processing CLIをご覧ください。

モデルと制約条件

  • 全般: fvOptionsを物理的なソース用のfvModelsと数値的な制約用のfvConstraintsに置き換え、後方互換性を持たせました[ コミット da3f4c ]。非効率で不完全なアクティブスイッチを削除しました [ commit 19b3a5 ].
  • fvModels: heatTransfer は、周囲の温度に対する熱伝達係数のソースタームを提供します [ commit 07a0af ].
  • heatSource は、総電力または単位体積あたりの電力としての熱のソースタームを提供します [ commit 8d707b ].
  • 合理化された interRegionHeatTransfer [ commit 4442ce ]。
  • 新しい雲とsurfaceFilm fvModelsは、一般的なソルバー(reactingFoamなど)で連続体との結合を持つ、プラグイン可能な粒子とフィルムのモデリングを提供します。新しいmassSource fvOption (後にfvModel)は連続性方程式と全ての場の方程式に質量源を指定します [ commit 69e98d ]。
  • スイッチ:新しいfvModelsに合わせて、新しいモデル、サーモフィジックス、フローのスイッチがソルバーアプリケーションに追加され、ユーザーはシミュレーションのこれらのコンポーネントを無効にすることができるようになりました[ commit 49ce8f ]。
  • hydrostaticInitialisationスイッチによる静水圧の初期化により、buoyantReactingFoamがfireFoamの機能を再現できるようになりました。これは現在では非推奨となっており[ commit a997dd ]、 buoyantPimpleFoam, buoyantSimpleFoamに実装されています[ commit 789bdc ]。
  • fvConstraints: limitPressureでは、圧力制限をより柔軟に制御できるようになりました[ commit ab7d01 ]。
  • Co-ordinate Systems: ローカル座標系を一般的な constant/coordinateSystems ファイルで定義できるようになりました[ commit 31891a ]。

モデルと制約の詳細については、「OpenFOAMのモデルと制約」を参照してください。

ケース構成

  • データの視覚化。新しいtimeStep functionObjectは、foamMonitorでライブで見ることができる各時間における(可変の)タイムステップを書き込みます [ commit 564e21 ]。
  • 粒子のような点のみのファイルに対するVTK出力の改善 [ commit 933572 ].
  • Case の初期化。foamDictionary は、入力ファイルのパラメータを -set オプションで直接設定することができるようになりました [ コミット 312a56 ].
  • foamDictionary は、case ファイル内で置換を行うためのシンプルな keyword=value 構文を含むようになりました [ コミット bf7ac2 ].
  • 新しい foamCleanCase スクリプトが case ディレクトリをクリーンアップし、初期状態にリセットするようになりました [ コミット fac831 ] 。
  • ケースマネージメント。新しい stopAtFile 関数オブジェクトは、指定されたファイルが作成されたときにケースを停止させ [ commit 7379f4 ] 、stopAtClockTime は指定されたクロックタイムを超えたときにシミュレーションを停止させます [ commit 5bfd3b ].
  • Uinlet 0/U!internalField; [ commit 6c8732 ] のように、他のファイルからの値の読み込みをサポートするために、デフォルトのスコープ構文を "/" に変更しました。
  • アプリケーションを -region オプションで実行する際に、-dict オプションで設定ファイルをデフォルトで system/<region> ディレクトリに指定するようになりました [ コミット cce3e1 ].
  • foamInfo は指定したモデルと同じファミリーのモデルをリストアップするようになりました [ コミット e00316 ].
  • Function1/2: 複素関数と補間された表データを含む2変数の関数である入力データのための新しいFunction2 [ commit 2cd197 ].
  • 特殊なテーブルルックアップを Function1 [ commits bfedfc ] と Function2 [ commits 2c6e43 ] で置き換えました。
  • これにはすべての熱物理学関数、NSRDS、API、高速一様テーブルと非一様テーブルが含まれます [ commit 0c79b6 ] 。
  • NonUniformTable1 および UniformTable2 関数による標準化された表形式のデータ [ commits 6fe12e ]。
  • 新しい squarePulse 関数1 は、指定された時間と期間でパラメータをオンにすることができます [ コミット aa4151 ]。

プログラミングとコンピュテーション

  • データ入力。IOdictionary のメンテナンス、#calc のサポートを含む、グローバルな controlDict の処理の改善 [ commits fe4181 ] 。
  • ASCIIおよびバイナリデータの読み込みを改善し、並列実行時のプロセッサ間の転送を改善しました[ commits aa8e4b ]。
  • FoamFile ヘッダのバージョンエントリを削除し、デフォルトで 2.0 にするようにしました [ コミット 014944 ] 。
  • データ出力。ケースを停止して再起動した場合、結果は再起動した時刻ではなく、元のケース開始時刻を基準とした後続の時刻ディレクトリに書き込まれるようになりました [ commit 7aca9b ]。
  • フィールドとディメンション。グローバルなスイッチと定数を簡素化し(コミットbbc00c)、case controlDictファイルのdimensionedConstantsの仕様を改善しました(コミットa121ba)。
  • アーキテクチャ。引数リストパーサーを標準化、一元化しました [ コミット 560db9 ] 。
  • その他の数値。Rx、Ry、Rz、Raの回転変換を右回りの座標系で動作するように標準化 [ commit 227734 ].
  • 新しい移流の遅延補正では,行列の対角線優位性を確保するために選択されたスキームに基づいて明示的な補正を行い,暗黙の風上寄与を提供するようになった [ commit ed2ca6 ].
  • 圧力リファレンスコードを合理化し、フラックスとフラックス補正の間の一貫性を改善しました [ commit e8ff92 ]。
  • コンパイルしました。C++プログラミング言語のISO/IEC 14882規格であるC++14バージョンに更新しました(コミット0257ab)。OpenFOAM のコンパイルに必要なメモリ量が減少し、並列コンパイル時間が短縮されました [ commit 1cd084 ]。
  • wmake でのコンパイルにおいて,コメントや条件文を含めることができるようにするために Make/files の処理に cpp を使用しなくなりました [ コミット 848ec1 ].