OpenFOAM 8 リリースノート

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

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

  • マルチフェーズ:インターフェイス捕捉のための選択可能な補間、PLIC方式。
  • 多相反応:統合多相EulerFoamソルバーとモデル開発。
  • 輸送: 新しい MomentumTransportModels と ThermophysicalTransportModels ライブラリ。
  • 熱物理学:熱力学と状態方程式モデル、データ入力、リファクタリング。
  • サーフェスフィルム:大幅な性能向上と表面処理の改善。
  • 熱伝導:数値計算とケース設定の改善、新しい熱的快適性のモデル化。
  • パーティクルトラッキング:非結合ソルバーの名称変更、トラッキング効率の向上、インジェクション。
  • その他のモデル:過渡/定常状態ソルバー、境界条件、反応。
  • メッシュ:snappyHexMeshとblockMeshの改良、面中心の計算、サイクリックパッチ。
  • 機能オブジェクト:可視化/フィールド、滞留時間、コンフィギュレーションの改善。
  • ケース・コンフィギュレーション:新しいコンフィギュレーション/初期化ツール、コード化された Function1.
  • 計算:データI/Oの改善、フィールドキャッシング、Armプロセッサーのサポート。
  • 約710件のコードコミット、200件以上の問題解決
  • ISO/IEC 14882:2011 (C++11): GCC v5.4+、Clang v3.8+、Intel ICC v18.0+でテスト済み。

ParaView 5.6.0(LLVM/Galliumアクセラレーション付きMesaを含む)は、(サポートされている)グラフィックカードがないシステム用にパッケージ化されています:

  • Ubuntu Linux: Ubuntu 16.04、18.04、20.04用のパッケージインストール;
  • その他のLinux:Dockerコンテナによるインストール、またはソースコードからのコンパイル;
  • Windows 10: Windows Subsystem for LinuxとUbuntuパックを使用したインストール;
  • macOS: Dockerコンテナによるインストール。

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

一般多相

  • モデリング 新しい界面捕捉フレームワークにより、fvSchemesで二相流の補間法を指定できるようになりました[ commit fa79ba ]。多相界面ハンドリングのための新しい補間スキームファミリーは、区分線形界面計算(PLIC) [ commit 1611e0 ]に基づいています。[詳細情報: "OpenFOAM における界面捕捉" ]。
  • 性能/数値計算: mixtureKEpsilonモデルにおける気泡生成乱流の位相分率リミッターにより、気泡が存在しない場合のスプリアス乱流生成を回避 [ commit f84708 ]。多相VoFの制御パラメータを一元化しました[ commit 8af31c ]。
  • 後処理: phaseMap関数オブジェクトは複数のフェーズに対して単一のフェーズマップフィールドを書き込みます[ commit 35a04f ]。

反応する多相

VTTフィンランドおよびHZDRドレスデン・ローゼンドルフとともに

  • 統合されたmultiphaseEulerFoam: reactingMultiphaseEulerFoam、twoPhaseEulerFoam、reactingTwoPhaseEulerFoamを複製し置き換える。反応がオフの場合、"古い "multiphaseEulerFoamが再現されます[ commit b83245 ]。位相方程式が解かれない参照相を指定することができ、"古い"(reacting)TwoPhaseEulerFoamが再現されます[ commit d1170c ]。
  • 位相運動量: 暗黙的な相圧力の取り扱いを改善し、粒子床における充填のシミュレーションをよりロバストかつ安定的に行えるようになりました[ commit 3fbd9a ]また、充填床における性能を改善しました[ commit ba6b55 ]。運動論モデルを任意の一対の相に一般化しました[ commit 01f4fa ]。
  • その他の相モデリング: 熱力学、反応、種分率の補正の順序を改善 [ commit 89023d ]。相の速度とフラックスが全体の混合物に対応するように修正 [ commit 27ce5a ]、およびMRF計算 [ commit 658b0c ]。反応相の多成分拡散モデリングをサポートするコード構造を追加 [ commit 854dae ]。
  • 相変化: 熱相変化と境界条件 [ commit 94a5e0 ]。物質移動プロセスの修正[ commit df6835 ]、相ペアの保存とその界面組成モデルの指定の改善[ commit 474962 ]。
  • 人口バランス: 分散相にフラクタル形状を追加 [ commit cfbb38 ]。物質移動速度とソース項の同期化 [ commit cebc40 ]。PrinceBlanch合体モデルに層流せん断を追加 [ commit 6ad711 ]。
  • インターフェース 分散相の粒子について、単位体積あたりの表面積を保存することができます[ commit 8df44a ]。飽和モデルを相のペアに対して指定することができるようになり、異なる界面や壁の異なる相で複数の伝熱過程をシミュレートすることができるようになりました[ commit aedb44 ]。Alberto Passalaqua氏による流動層シミュレーション用の新しいガン熱伝達モデル [ commit 8e2402 ]。alphatWallBoilingWallFunction境界条件を完全に定義しました[ commit 4d0661 ]。
  • 反応: 新しいsurfaceArrheniusReactionRateモデルは、単位体積あたりの表面積の関数である反応速度を提供します[ commit 8c9e46 ]。
  • 乱流: kOmegaSSTSato モデルが完全に動作するようになりました [ commit 8ce466 ]. yPlus が特定のフェーズに対して計算できるようになりました [ commit 02dcff ]. 乱流分散モデルの力を面フラックスから計算 [ commit 124c70 ]。乱流分散モデルを修正 [ commit 64da7a ]。
  • 数値計算:粒子圧の数値処理が改善され、流動床などのシミュレーションが大幅に高速化されました[ commit da429d ]。
  • 境界条件: 相ごとに適用される外部および連成伝熱境界条件 [ commit b494e5 ].
  • チュートリアル: bubblePipe [ commit 2be90f ]. 改良されたチュートリアルでコード修復をテスト [ commit 474962 ]。  新しい damBreak4Phase チュートリアルでインターフェースのキャプチャをデモ [ commit 89439a ]。

輸送モデリング

  • MomentumTransportModels:新しいライブラリは、非圧縮性/圧縮性ニュートン、非ニュートン、粘弾性層流、レイノルズ平均、乱流のラージエディシミュレーションのための運動量方程式のせん断応力を一般化します。
  • ThermophysicalTransportModels:複雑なエネルギーと化学種の輸送モデル、特に多成分拡散を可能にするために作られた新しいライブラリ [ commit 25b348 ]。divjとj関数は物質輸送のための新しいインターフェイスを提供します [ commit b4cf40 ]。
  • 乱流: SpalartAllmaras DESモデルにおいて、一時的な場の保存を減らし、LES領域の書き込みを可能にしました[ commit 4a810c ]。kkLOmega乱流モデルの安定性を改善しました[ commit 3c64dc ]。乱流による質量拡散率を熱拡散率とは別に乱流のプランドル数とシュミット数で指定できるようになりました[ commit 86f2c6 ]。
  • 粘弾性: PTT (Phan-Thien-Tanner) 粘性モデル [ commit 99982d ] およびマルチモード粘弾性モデル [ commit a7eb35 ]。
  • 種: 種が表面に堆積するための新しい吸着境界条件 [ commit bcc867 ]。

熱物理モデリング

  • 熱力学: 熱物理モデリングに分別エンタルピー関数を追加 [ commit 086034 ]。標準状態の混合物のGibbs自由エネルギーを計算するGstd関数を追加 [ commit 73c6f9 ]。液体用の新しい熱物性クラスが追加され、各物性の関数と係数が入力ファイルを通して設定されるようになりました [ commit 375e1f ]。 heSolidThermo 熱物性モデルが更新され、修正された状態係数混合方程式を使用するようになりました [ commit c909bd ]。
  • 状態方程式: rPolynomial (逆多項式) が液体と固体のデータによくフィットし、混合種の係数の計算をサポート [ commit 481797 ]。状態方程式の係数混合を大幅に修正しました[ commit c8d434 ]。比熱容量が圧力一定か体積一定かによって状態方程式からエントロピーのための別々の関数を作成 [ commit fa9ccc ]。
  • データ入力: 熱物性を指定するための一様でないテーブル、高速アドレス指定で最適化 [ commit 73a594 ]。状態方程式、熱力学、輸送モデル用の温度の関数表 [ commit 4c2fae ]。
  • リファクタリング: 熱物理モデルをインスタンス化するためのマクロを書き換え、2,500行のコードを削減 [ commit fe8908 ]。反応物/生成物燃焼混合物から純粋種に基づく混合物を分離 [ commit 80f15b ]。種の特性、例えば絶対エンタルピーをセルレベルではなくフィールドレベルで評価するフレームワークを追加 [ commit e695df ]。

表面フィルム

  • パフォーマンス: 100%保守的に書き換え、30倍高速化 [ commit 0ad918 ]。内部コーナーがある場合の静水圧問題を修正 [ commit 131a9f ]。高い表面張力での収束性[ commit 68a384 ]と安定性[ commit 7d03ae ]を大幅に改善。  強い密度勾配をサポートし、表面コーナーでの以前のエラーを克服 [ commit f6688b ]。
  • 表面: 表面速度が放物線プロファイルを仮定するように修正 [ commit 2b82c3 ]。表面速度と壁速度の取り扱いを合理化、単純化しました[ commit 663970 ]。
  • モデル: チキソトロピックモデルを修正 [ commit 9025e2 ]、ビンガム塑性降伏応力のオプションを追加 [ commit 3d7031 ]。

熱伝達

  • ケースのセットアップ: chtMultiRegionFoam [ commit a9ddd7 ]に流体や固体の領域を持たないケースのサポートを追加しました。
  • 数値計算: 共役伝熱ソルバーで固体のエンタルピーをエネルギーに変更しました[ commit c109be ]。伝熱および浮力ソルバーにオプションの圧力参照pRefを追加しました。
  • 浮力駆動フロー: Tobias Holzmann氏との共同作業により、DIN ISO EN 7730:2005に基づく熱的快適性のための快適性関数オブジェクトを追加しました [ commit 280c05 ]。buoyantPimpleFoamにメッシュの移動/変更機能を追加しました[ commit 38fff7 ]。

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

  • ソルバー: 非結合ソルバー particleFoam と rhoParticleFoam [ commit 9fd917 ] と関数オブジェクト particles [ commit 9fd917 ] の名前を変更しました。
  • トラッキング: 特にストリームラインなどの後処理において、メッシュが動く場合の効率が向上しました。
  • 注入: Rosin-Rammler粒子分布モデルのクリッピングを改善しました[ commit 8604c1 ]。CellZoneInjection のセル間のパーティクル分布を修正しました [ commit b507f3 ]。
  • モデリング: エトヴェシュ数の計算を修正 [ commit aab3a2 ]。放射線散乱に影響する粒子雲の散乱を修正 [ commit 7e6528 ]。

Other Modelling

  • ソルバー: rhoPimpleFoamはrhoSimpleFoamと同じ結果を定常時間スキームで生成し、rhoReactingFoamもSIMPLE操作をサポートするように更新されました[ commit 97cda4 ]。高速での圧縮性流れソルバーのアルゴリズムを改良しました。solidDisplacementFoamが標準的な熱伝導境界条件を使用できるように、標準的な固体熱物理モデリングを使用するように修正しました[ commit 640027 ]。
  • 境界条件(BC): 新しいentrainmentPressureは、totalPressureが失敗することがある外部境界での優れた安定性を提供します[ commit 6c887b ]。freestreamVelocityの収束が改善されました[ commit f7bcc1 ]. flowWithOpenBoundaryチュートリアルは開いた境界での条件を探索します[ commit 197b14 ]. pressureInletOutletVelocity 境界条件のオプションの tangentialVelocity が時間変化するようになりました [ commit d9fc45 ]。
  • 反応: reactingMixtureをリファクタリングし、反応のリストが反応から派生しないようにしました [ commit 3dc362 ]。singleStepReactingMixtureの機能をsingleStepCombustionクラス内に移動し、反応スキームのインスタンス化をリファクタリングする第一歩としました [ commit b8fcd1 ]。chemistryModel、reactions、ODESolverの反応速度を評価するすべての関数にindex引数を追加しました[ commit 2d0f45 ]。
  • 剛体力学: SeongMo Yeonとの外力拘束 [ commit 278ba8 ].
  • ソース semiImplicitSource fvOption は方程式のソース項を設定するためのもので、スカラー、ベクトル、テンソルに対して一般化され [ commit b6f91d ]、時変関数を可能にする Function1 をサポートしています [ commit 95b5ef ]。

メッシュ

  • snappyHexMesh: 例えば小さな隙間の場合 [ commit 4c08b4 ] 、surfaceFeatures [ commit 509f15 ] によって計算されたサーフェスの近さを使用して、サーフェスフィーチャー間のスパンに基づいてリファインメントを制御できるようになりました。
  • blockMesh: 新しい構文により、角度と軸を使用した円弧の指定が可能になりました [ commit 73d253 ]。ブロック面の向きのチェックを改善 [ commit 471810 ]。
  • 数値計算: 面中心の計算が修正され、歪んだセルでの収束が改善されました。magFaceAreas()関数による低レベルメッシュの変更をprimitiveMeshに追加しました[ commit 19d4f1 ]。
  • 結合(巡回)パッチ: トランスフォームの合理化 [ commit 4f0e38 ] およびリファクタリング [ commit 03207b ] を行い、重複した不完全な実装を置き換えた [ commit 87bce8 ]。transformPosition 関数をリファクタリングし、コードの重複を減らし、関連するエラーを取り除きました [ commit 50d135 ]。回転変換の自動計算を改善し [ commit 7010a8 ]、あいまいな代入を削除 [ commit ba52c4 ]。
  • メッシュモーション: メッシュのアンリファインメントによるフィールドのセルフマッピングを修正 [ commit 22bba4 ]。
  • リージョン 平面に最も近い面を選択する topoSet の新しいソース planeToFaceZone [ commit 14e7db ]。

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

  • 可視化: isoSurface処理でサーフェスの浸食を避けるための修正 [ commit 916d0a ] と、頂点除去のレベルを制御するisoSurfaceのフィルタリングオプション [ commit 916d0a ] を追加。
  • フィールド: fieldAverage 関数オブジェクトのインターフェースの改善 [ commit c60cef ] と設定の簡素化 [ commit 0177c7 ]。新しい faceZoneAverage パッケージ化された関数オブジェクトはフェイスゾーン上のフィールドの平均を計算します [ commit 84a126 ]。 shearStress 関数オブジェクトは体積せん断応力を出力します [ commit c57ffd ]。コアとなるvolFieldValue関数オブジェクトにオプションの重みフィールドを追加しました。
  • 滞留時間:滞留時間を測定する年齢関数オブジェクトは、fvOptions [ commit 73503b ]をサポートし、オプションで拡散と収束のコントロールがあります(Tobias Holzmannと) [ commit a2a74c ]。
  • 設定: 時刻 "0 "のデータを提供するためにシミュレーション開始時に実行するオプション [ commit 2ebed5 ]。  マルチリージョンの場合のファンクションオブジェクトファイルの検索を改善しました[ commit 435b89 ]。  設定ファイルなしで(例えば後処理のために)関数オブジェクトを素早く実行するためのフィールドパラメーターの取り扱いが改善されました [ commit ad12d3 ]。

ケース構成

  • データの可視化: ParaViewリーダーモジュールがサーフェスおよびポイントフィールド[ commit b7c064 ]とボリューム内部フィールド[ commit 67d3a8 ]を可視化できるようになりました; foamToVTKもボリューム内部フィールドをサポートするようになりました[ commit 53e845 ]。foamToVTK で、低レベル書き込み関数を合理化して 3x コードの重複を削除 [ commit 9ff1e2 ]。バイナリ VTK ファイル [ commit 622f47 ] とサンプルサーフェスファイル [ commit 84759e ] の書き込みをサポート。
  • 大文字小文字の初期化: マクロ($)展開を使用して入力ファイルの異なる辞書レベルのデータにアクセスするための新しい "スラッシュ"(/)構文 [ commit a7b842 ] 入力ファイルへの絶対パスのサポートを含む [ commit b7c0cd ] チュートリアル、テンプレートケース、foamDictionaryへの更新 [ commit 26187d ]. aerofoilNACA0012チュートリアルの迎角設定による例示的なcodeStream例 [ commit 17f110 ]。
  • ケース管理: patchSummary ユーティリティがフィールドに適用された境界条件に関する完全な情報を提供するようになりました [ commit 107b5d ]。foamDictionary において、インクルードされたファイルとマクロの展開がデフォルトで無効になりました [ commit c1edb0 ]。 foamCloneCase に並列分解ケースと追加ファイルのオプションが追加されました [ commit f06e13 ]。
  • Function1:コード化されたFunction1により、時間変化するパラメータなどのFunction1をコードで設定できます [ commit 0dd2e9 ]。テーブルと定数関数を読み込むための3つの標準フォーマット [ commit 0d9786 ]. reverseRampは任意のFunction1のランプを1から0に反転できます [ commit 8756e8 ].

プログラミングと計算

  • データ入力: readScalar(dict.lookup("name")) を dict.lookup<scalar>("name") に簡略化 [ commit 5eaf74 ]。辞書エントリの解析と処理に関する大規模なメンテナンスが行われ、コードがより堅牢で一貫性があり、拡張可能になりました [ コミット 4d8981 ]。複数行の引数リストを含む入力設定の構文を改善した [ commit 7dc08e ]。
  • フィールドとディメンション: フィールドなどの一時的なオブジェクトをキャッシュし、データのさらなる処理と書き込みを可能にしました [ commit fdf121 ]特にフィールドデータ、例えばコード診断のためのモデルソース項や数値リミッターなど [ commit 30cceb ]。dimensionedConstants クラスを大幅に単純化しました [ commit 9513ad ]。
  • アーキテクチャ: Arm ベースのプロセッサ用のコンパイルルールが追加されました [ commit ed9e42 ]。
  • その他の数値計算: 関数オブジェクトによって解かれるフィールド(例えばスカラー輸送フィールド)を時間/反復ループの収束テストに含めることができるようになりました [ commit c6089a ]。