OpenFOAM v1806 リリースノート

OpenFOAM v1806がリリースされましたので、リリースノートの概要をまとめてみました。

相変わらずとりあえずの機械翻訳です。

以下、文章の原文および画像、動画は OpenCFD Ltd (ESI Group)の著作物です。

Upgrading

ユーザーのヘルプは、ユーザーアップグレードガイドで提供されています。

開発者のためのヘルプは、開発者のアップグレードガイドで提供されています。



Pre-processing New solver dry-run options 大規模なケースのデバッグは、特にユーザーがジョブをバッチキューイングシステムに追加するクラスタ環境で作業する場合は困難です。 入力ディクショナリのエラーを修正する典型的な反復プロセスは、ケースを実行する前に大幅な遅延を招く可能性があります。


ソルバアプリケーションで使用可能な新しいドライブ実行オプションは、メッシュをメインケースの特性を保持する単純化されたバリアントに置き換えることにより、入力エラーを簡単に修正するプロセスを作成しようとします。 境界条件、メッシュ範囲、ゾーン情報:


simpleFoam -dry-run

実行時には、ソルバアプリケーションは単一のタイムステップを実行します。 入力エラーが報告された場合、たとえば 失われたエントリや不正な形式のエントリは、これらを簡単に識別でき、完全なケースが正常に実行されるという確信を与えます。

関数オブジェクトのような後処理ツールの多くは、計算書き込み時間にタスクを実行します。 新しい-dry-run-and-writeoptionは、ソルバーに単一のタイムステップを実行し、書き込み操作を実行するよう指示します。

simpleFoam -dry-run-and-write

これらは単純化されたメッシュに適用され、値はそのケースを代表するものではないことに注意してください。 既存のpostProcessingディレクトリとの競合を避けるため、出力はpostProcessing-dry-runディレクトリに書き込まれます。

このツールは2つのモードで動作します。

メッシュ付き:メッシュ境界情報は定数/ポリメッシュ/境界ファイルから抽出されます。 ドメインの範囲は、メッシュポイントに従って設定されます メッシュなし:単純化されたメッシュは、フィールドファイルで提供されるパッチ名を使用して作成されます。 ただし、これによりツールの有効性が制限されます。 すべてのパッチ適用済みの壁紙はデフォルトで使用されます すべてのパッチは、すべてのフィールドファイルで同じパッチ名を使用して定義する必要があります。 正規表現を使用する場合は注意が必要です 単純化されたmsh境界は '大きな値に設定されます'

既知の制限事項

結合されたパッチは現在無視されています マルチリージョンソルバーでは使用できません(例:multtRegionFoam)。 Improved dictionary robustness

誤った形式の辞書入力を検出するのに役立ついくつかの変更が行われました。さらに、v1812リリースではさらに変更が予定されています。

このタイプのエラーは、末尾の ';'が省略されたときにしばしば発生します。

dict {     keyword  <entry with missing semi-colon> }

この変更は、エントリが '}'で終わっているが、最初の '{'を開始していないことを検出します(この場合、後続の ';'は忘れてしまったため)。

この変更により、次のようなプリミティブ・エントリの問題にフラグが立てられます。

ミスマッチ: keyword mismatch ( set of { brackets ) in the } entry;

アンダーフローが多すぎる閉じ括弧: keyword too many ( set of ) brackets ) in ) entry;

サブディクショナリエントリにセミコロンがない場合は、 '}'を解析して開きますが、アンダーフローと表示されます。 New string expansion shortcuts

一般的なケースの場所を指定するための新しい簡潔なフォーマットが用意されました。

Short-form Equivalent ”<etc>/” as per foamEtcFile ”<case>/” ”$FOAM_CASE/” ”<constant>/” ”$FOAM_CASE/constant/” ”<system>/” ”$FOAM_CASE/system/”

これらは、明快さを改善し、タイピングを減らすために、fileName展開で使用できます。

これらの短い形式は絶対ファイルの場所に対応しているため、ファイル名の先頭にのみ意味があります。

前のコード:

  1. include "$FOAM_CASE/constant/reactions"
  2. include "$FOAM_CASE/system/blockMeshDict"

ショートカット:

  1. include "<constant>/reactions"
  2. include "<system>/blockMeshDict"

$ FOAM_CASEを使った拡張は、変更せずに引き続き動作しますが、新しいフォームは短く読みやすくなります。

Improved mapFieldsPar performance

並列プロセッサー・マップを判別する新しい方法がmapFieldsParユーティリティーに追加されました。 並列分解の品質によっては、以前のバージョンで使用されていたAABB(axis-aligned bounding box)ツリーメソッドがすべてのデータをローカルプロセッサに送信するマップを生成する可能性があり、プロセッサの負荷が不均衡になり、

新しいオプションは、オプションのprocMapMethodキーワードで選択されたローカル詳細レベル(LOD)に基づいてマップを作成します。

mapFieldsPar -procMapMethod LOD <other options and arguments>

初期テストでは、実行時間が15〜20%減少することが示唆されています。 下位互換性のために、procMapMethodoptionが提供されない場合、AABBオプションが選択されます。

snappyHexMesh New directional refinement

snappyHexMeshは、refinementRegions内で追加の方向の洗練をサポートするようになりました。 これは、refinementRegions辞書内のオプションキーワードlevelIncrementによって行われます。 modeキーワードは、リファインメントジオメトリのどの辺が洗練されているかを決定します。 全方向性の精緻化(レベルによる)キーワードが最初に実行され、続いて選択された方向にセルが選択的に分割されます。 例えば

refinementRegions {

   wake 
   { 
       mode        inside; 
       // Dummy uniform refinement 
       levels      ((10000 0)); 
       // Directional refinement 
       //  - for all cells with uniform level 0-1 
       //  - do one split in y and z direction. Note:the resulting mesh is 
       //    no longer compatible with e.g. dynamic 
       //    refinement/unrefinement. 
       levelIncrement  (0 1 (0 1 1));



以下の図では、追加の精緻化の効果が、方向性改良なしの単純化された翼形部形状上に示されている。

指向性の洗練

制限は

洗練された領域は地域内のみであり、表面に相当するものは存在しない 開始メッシュは座標軸を揃えておく必要があります(例:transformPointsなどを使用して後で移動できます) 結果として得られるメッシュは、ダイナミックリファインメント/アンリファインメントと互換性がありません。 Source code $FOAM_UTILITIES/mesh/generation/snappyHexMesh/snappyHexMeshDict Examples $FOAM_TUTORIALS/mesh/snappyHexMesh/aerofoilNACA0012_directionalRefinement



Numerics New scheme stabilisation

新しい関数オブジェクトstabilityBlendingFactorは、2つの離散化スキーム間のブレンド係数の自動計算を可能にします。 これは、低品質のメッシュ上での(安定した)計算を安定化させるために使用することができ、その逆も可能である場合には高次離散化を使用することができる。

関数オブジェクトは、localBlended対流スキームによって使用されるstabilityBlendingFactorフィールドを計算します。 出力は、0から1の間の面ベースのウェイトフィールドで、localBlended定義の最初のスキームの量を示します。 一般に、第1の方式は、より安定した低次の方式であり、第2の方式は、より安定ではあるが高次の方式である。

ブレンドされたスキームの重み は、ブレンド係数 の関数によって与えられる。

ここで、<scheme1>と<scheme2>は、localBlendedエントリ(fvSchemes辞書のdivSchemes部分)の1番目と2番目のスキームです。

div(phi,U) bounded Gauss localBlended linearUpwindV grad(U) linear;

ここで、<scheme1>はlinearUpwindV grad(U)であり、<scheme2>は線形である

全体的な混合係数は、以下の6つの基準によって決定される最大係数に基づいています。

メッシュ非直交性 細胞中心勾配の大きさ 残差の収束率 メッシュfaceWeight メッシュスキューネス ローカルクーラン

各オプションは、入力最小値と最大値によって直線的に重み付けされ、それぞれ<scheme1>と<scheme2>の制限を表します。

Convergence rate of residuals

残差収束オプション(3)では、PIDメソッドを使用して、個々のセルの残差変動を次のように制御します。

ここで、P、IおよびDはユーザ入力であり、 残差に関連する積分誤差および微分誤差である。

エラーは次のように計算されます。

where .

ブレンドフィールドを0-1の間で計算するには、次の線形依存関係を使用します。



はドメイン内の残差の平均であり、はユーザ入力である。

ここで、は、差(f-)がmaxResidual times meanResのときに1になる。換言すれば、セル誤差が平均値よりもはるかに大きい場合、係数は混合係数1に向かって重みを加える。残差は時間/反復で変化するので、PIDは重み係数を動的に変更し、残差の進展に応じて重み付けを減少または増加させます

このオプションを使用するには、関数オブジェクトに新しい残差関数オブジェクトによって提供される残差フィールドが必要です。ほとんどの場合、残留圧力を使用する必要があります。


他のオプションについては、下記のソースコードのリンクを参照してください。


全体的なセルベースのブレンドファクタフィールド(f)は、個々のエラー測定値から得られる。



blendedIndicatorというインジケータ(ボリューム)フィールドは、ログフラグが有効になっている場合に生成されます。


1:スキーム1をアクティブとして、 0:スキーム2をアクティブとして 0-1がブレンドされます。 セルベースのブレンドファクタフィールド(f)は、最終的に補間されてlocalBlendedスキームの重みフィールドを作成します。ここで、より安定した選択を維持するために、すなわち最も高い値を有するセルから値を取るために、localMax補間法を使用することが有益であり得る。


Source code $FOAM_SRC/functionObjects/field/stabilityBlendingFactor Examples $FOAM_TUTORIALS/incompressible/pisoFoam/LES/motorBike/motorBike



Solvers and physical models

このリリースでは、新しい熱と物質移動機能を追加することにより、流体の体積(VOF)法をベースにした、レーザー溶融を近似するためのアプリケーション例

上記のアニメーションは、新しいParaView Catalystアダプターを使用して作成されたアルミニウム球のアレイに適用された移動レーザー熱源について説明しています

icoReactingMultiphaseInterFoam solver

icoReactingMultiphaseInterFoamは、熱力学モデル(圧力と温度を共有する)の相ごとの選択で、流体の体積(VOF)法に基づく多相、多成分非圧縮ソルバです。 さらに、フェーズ間の質量および熱伝達と、DTRM(Discrete Transfer Radiation Model)を介したオプションの双方向放射相互作用(以下を参照)をサポートしています。

基本的なセットアップは、新しいphasePropertiesディクショナリの中にあります。


個々のフェーズの名前、 それを進化させるためのモデルごとに、 2つの相の組み合わせの物質移動モデル、 オプション:2相の組み合わせのための多孔性モデル、 オプション:2つの相の組み合わせに対する表面張力モデル。 Phase model types

各フェーズのモデルのオプションは次のとおりです。

pureMovingPhaseModel:純粋な移動フェーズ。 流体 pureStaticSolidPhaseModel:純粋な静的フェーズです。 固体 multiComponentMovingPhaseModel:多成分移動フェーズ。 多成分流体

蒸発液体シミュレーションの一例は、例えば純粋な液体と空気と蒸発した液体との混合物の2つの相を特定することができる。

phases  (liquid gas);

liquid {     type            pureMovingPhaseModel; }

gas {     type            multiComponentMovingPhaseModel; }

各段階には、利用可能なランタイム選択可能な熱物理学的モデルパッケージからユーザーが選択できるthermophysicalProperties.phaseName辞書で記述された独自の熱物理学的モデルがあります。

Mass transfer models

物質移動モデルは、相の各対に対して選択可能である。 現在の選択肢は次のとおりです。

リー:固体融解と凝固 キネティックガス蒸発:凝縮および蒸発

i)固体融解/凝固モデル

フェーズ間の物質移動は、Leeモデルによって次の形式で行われます。

ここではモデル定数です。 、すなわち溶融

、すなわち凝固について:

参照に基づいて:

W. H. Lee. ”A Pressure Iteration Scheme for Two-Phase Modeling”. Technical Report LA-UR 79-975. Los Alamos Scientific Laboratory, Los Alamos, New Mexico. 1979.

典型的な仕様は次のとおりです。

massTransferModel (     (solid to liquid)     {         type            Lee;         C               130;         Tactivate       659;     } );

ii) The condensation/evaporation model. (kineticGasEvaporation)

このモデルは、平坦な界面の運動理論に基づいて蒸発 - 凝縮フラックスを与えるヘルツクヌーセンの式を考慮して、運動ガス理論に基づいています。

where  represents the mass flux rate [Kg/s/m2],  the molecular weight,  the activation temperature,  the accommodation coefficient,  the universal gas constant,  the saturation pressure and  vapour partial pressure

The Clapeyron-Clausius equation relates the pressure to the temperature for the saturation condition:

ここで、は質量流量[Kg / s / m2]、は分子量、は活性化温度、は収容係数、は汎用ガス定数、は飽和圧力および蒸気分圧


Clapeyron-Clausius方程式は、圧力を飽和条件の温度に関連付ける:



は潜熱、は蒸気密度の逆数、は液体密度の逆数である。


上記の関係を使用して:



これは、液体と蒸気が平衡状態にあることを前提としているため、収容係数は界面で同等です。 この関係は、Hertz-Knudsen-Schrageとして知られています。

参照に基づいて:

Van P. Carey, Liquid-Vapor Phase Change Phenomena, ISBN 0-89116836, 1992, pp. 112-121.

典型的な仕様は次のとおりです。

massTransferModel (     (liquid to gas)     {         type            kineticGasEvaporation;         species         vapour.gas;         C               0.1;         alphaMin        0.0;         alphaMax        0.2;         Tactivate       373;     } );

ここで:

モデル定数です。 モデルが蒸発する場合、凝縮している。 alphaMinとalphaMaxは、モデルが界面に適用される液体の範囲です。 T actateは、飽和/凝縮温度 種は、移送されるガスの成分の名称です。 「ガス」相が純粋である(成分なし)場合、その種を特定する必要はない。 Inter-phase porosity models

これらのモデルは、2つのフェーズの間のインタフェースの/上に人工運動量ソースを追加することができます。 良い例は、固化/融解時の挙動に影響を与えることです。

唯一の多孔質界面法は、参考文献に基づくVollerPrakashである:

V.R. Voller and C. Prakash, A fixed grid numerical modelling methodology for convection-diffusion mushy phase-change problems, Int. J. Heat Mass Transfer 30(8):17091719, 1987. C.R. Swaminathan. and V.R. Voller, A general enthalpy model for modeling solidification processes, Metallurgical Transactions 23B:651664, 1992.

次のように指定できます。

interfacePorous (     (solid and liquid)     {         type            VollerPrakash;         solidPhase      alpha.solid;         Cu              1e10;     } );

ここで、solidPhaseは固相を表す相であり、Cuはモデル定数である。

Inter-phase surface tension models

表面張力は、相対基準で特定することができる。 唯一の選択肢は、定数モデルです。

surfaceTension (     (gas and liquid)     {         type            constant;         sigma           0.07;     } );

Source code

$FOAM_SOLVERS/multiphase/icoReactingMultiphaseInterFoam DTRM radiation model

コリメートされた放射束のシミュレーションを可能にするために、新しい放射モデルが導入されている。 これは、放射線と参加メディアとの双方向の相互作用を可能にするためにDTRM(Discrete Transfer Radiation Model)を使用します。 これは、現在、VOFシステムを通過するコリメートされたレーザビームを表すように特化されている。

Laser specification

DTRMは、メッシュを通過する一組の光線、すなわちレーザが粒子インジェクタを表すラグランジアン粒子トラッキングに相当する一組の光線による放射効果を計算する。 レーザーの仕様には以下が含まれます:

レーザーパワー、形状、分布 レーザーの位置、方向 レーザーDTRM解像度

laserPower(W)は、時間ベースの変化を可能にする機能1タイプの入力です。 レーザーパワー分布は、均一、ガウスまたは手動であり得る。 モードマニュアルを使用するときは、レーザー出力の合計は次のようになります。

時間と空間の分布を制御することができます。

focalLaserPositionは円形注入ディスクの現在の中心を表し、laserDirectionは光線の方向を表します。 どちらも時間依存性を有効にするためのFunction1タイプです。

DTRMの分解能は、2D円形ディスクの極性区分として指定されています。

nTheta      70; nr          30;

ここで、nThetaおよびnrはそれぞれθ方向および半径方向の粒子数である。

Phase interaction (absorbtion, emissivity)

このモデルは、異なるフェーズを表すVOFフレームワークで動作するように開発されています。吸収と放出は、個々のフェーズの吸収、単純な混合モデルによる放出から計算されます。

ここで、は相体積分率

Inter-phase interaction (reflection)

提供される唯一の反射モデルは、FresnelLaserモデルです。 このモデルは次のものに基づいています:

Implementation of real-time multiple reflection and Fresnel absorption of FresnelLaser beam in keyhole. J. Phys. D: Appl. Phys. 39 (2006) 5372-5378.

リフレクションモデルは、フェーズのペアごとに指定されます。

(gas and liquid) {     type            FresnelLaser;     epsilon         0.25; } このモデルは、2つの相の間の界面を見出すことを試み、ガスから液体へと来る粒子は、ガスに反射して戻って液体に伝達される。


インタフェースごとに複数の反射モデルを指定することは可能です。 これにより、ほとんどすべてのエネルギーが出口パッチを介して吸収されるか失われるまで、各反射に対して新しい粒子が挿入されるので、実行時間が大幅に増加します。


このインターフェイスは、ユーザーが指定した位相分数のしきい値を使用して、デフォルト値のを使用して配置されます。 Consolidation of moving mesh solvers

移動メッシュ機能は、以前のリリースの多くの静的メッシュソルバーアプリケーションに組み込まれています。

Old solver New solver pimpleDyMFoam pimpleFoam rhoPimpleDyMFoam rhoPimpleFoam interDyMFoam interFoam multiphaseInterDyMFoam multiphaseInterFoam Attribution These updates were performed by OpenFOAM.org Extended interIsoFoam solver for dynamic meshes

interIsoFoamソルバとそのコアisoAdvectorライブラリは、動的メッシュで動作するように拡張されています。

特に、このコードは、自動メッシュリファインメント(AMR)のdynamicRefineFvMeshクラスで動作します。 この機能を使用するdamBreakWithObstacleのケースがinterIsoFoamチュートリアルに追加されました:

AMR機能はdynamicMeshDictで制御されます。

$FOAM_TUTORIALS/multiphase/interIsoFoam/damBreakWithObstacle/constant/dynamicMeshDict

また、このコードは、dynamicMotionSolverでソリッドボディメッシュのモーションソルバを使用して動作します。 この機能を使用するsloshingTank2DのケースはinterIsoFoamチュートリアルに追加されました:

Source code $FOAM_SOLVERS/multiphase/interIsoFoam  $FOAM_SRC/finiteVolume/fvMatrices/solvers/isoAdvection Examples $FOAM_TUTORIALS/multiphase/interIsoFoam/damBreakWithObstacle  $FOAM_TUTORIALS/multiphase/interIsoFoam/sloshingTank2D Known issues メッシュエッジに沿って複数のカットポイントが発生するため、Foam :: isoCutFace :: cutPointsおよびFoam :: isoCutFace :: quadAreaCoeffsの警告がログファイルに表示されることがあります。 これはさらに調査されますが、ソリューションの品質に視覚的な影響を与えるようには見えません。 注:interIsoFoamは他の移動メッシュクラスでも実行できるようになりましたが、ソルバーは形状と体積が変化するセルと一貫して動作するようにはまだ変更されていません。 目的はこれをv1812に含めることです。 Attribution This extension was provided by Johan Roenby Angular velocity restraint for solid-body simulations

v1606 +で導入されたRigid-body-dynamics(RBD)フレームワークは、親に対するオブジェクトのモーションを指定する機能を拡張しました。 この仕様は、新たな拘束である、規定された回転(relativeRotation)を通じ、親に対する相対(角)速度を指定します。 この速度は一般的なFunction1タイプのものであり、例えば、 1つの定数、インライン・テーブル、またはファイルcsvFileから読み取ることができます。 以下の例では、プロペラは増加する回転速度で回転する。

propellerRotation {     type                    prescribedRotation;     body                    propeller;     referenceOrientation    (1 0 0 0 1 0 0 0 1);     axis                    (1 0 0);     omega                   table     (         (0 (0 0 0))         (1 (16 0 0))     ); }

Known issues

この拘束では反復手順を使用して希望の回転速度の運動量を得るため、起動に問題が生じる可能性があるため、速度を上げることをお勧めします。 もう1つの推奨事項は、デフォルトの単一のnIteroverall繰り返し以上です。 Examples $FOAM_TUTORIALS/multiphase/overInterDyMFoam/boatAndPropeller New coded mesh motion

コーディングされたフレームワークを使用する新しい変位型モーションソルバは、ユーザコーディングを通じてモーションの完全な仕様を可能にします。 constant / dynamicMeshDictでは、motionSolverとしてコード化されたものを指定できるようになりました。

dynamicFvMesh   dynamicMotionSolverFvMesh; motionSolver    coded; name            myMotion;code

  1. {

    const Time& tm = mesh().time();     const pointField& p0 = points0();    // Inflate w.r.t. origin     return p0*tm.value();

  1. };



上記の例では、ソルバはサブディレクトリdynamicCode / myMotionにコンパイルされ、自動的に更新され、ロードされて実行されます。 下のサンプルチュートリアルのアニメーションは、コード化されたモーションソルバーを使用して実装されたねじれモーションを示しています。

Source code $FOAM_SRC/dynamicMesh/motionSolvers/displacement/codedPoints0 Examples $FOAM_TUTORIALS/mesh/moveDynamicMesh/twistingColumn New wave-mangrove interaction

マングローブとの波動相互作用は、参照に基づいて新しい運動量と乱気流有限体積オプションを使用してモデル化できるようになりました。

Tsunami wave interaction with mangrove forests: A 3-D numerical approach. Maza, M, Lara, J.L., & Losada, I.J. [2015], Coastal Engineering [Vol.98, pp. 33-54]

Source code $FOAM_SRC/waveModels/fvOptions/multiphaseMangrovesSource  $FOAM_SRC/waveModels/fvOptions/multiphaseMangrovesTurbulenceModel Examples $FOAM_TUTORIALS/multiphase/interFoam/laminar/waveMangroveInteraction Attribution These boundary conditions were supplied by the Environmental Hydraulics Institute IHCantabria Integration コードはOpenCFDによって更新され、interFoamファミリのソルバで利用可能な$ FOAM_SRC / waveModelsライブラリに追加されました Boundary conditions New outlet Mach number condition

この圧力境界条件は、静的出口圧力を動的に調整することによって出口パッチにおける(亜音速の)マッハ数を維持する。 これは、例えば、タービン内部の流れの詳細を解決することなく、タービン前のエンジン排気マニホールド内の流れをシミュレートすることを可能にする。

この処方は、固定された幾何形状を有するノズルを通るガス流の単純なモデルに由来する。 ノズル流は、準定常、1D、等エントロピー、圧縮可能であると仮定される。

付随する速度の境界条件は、pressureInletOutletVelocity

Source code $FOAM_SRC/TurbulenceModels/compressible/turbulentFluidThermoModels/derivedFvPatchFields/outletMachNumberPressure Examples $FOAM_TUTORIALS/combustion/reactingFoam/RAS/chokedNozzle New swirl fan velocity condition

この条件は、ファンをシミュレートするための周期的な圧力ジャンプ条件と組み合わせて使用できます。 既存のファン圧力ジャンプ条件は、ファン - ノーマル運動量ゲインを実現します。 この新しい速度ジャンプ条件では、スワールコンポーネントが追加されます。

速度ジャンプは2つの方法で指定できます。

等速 一定の渦巻き

第1のモードでは、速度は以下のように計算される。

Where  represents the current pressure drop across the cyclic,  is the effective radius,  is the fan efficiency coefficient and  the speed of the fan (in revolutions-per-minute).

In the second mode the inner () and outer () radii are provided instead of , where for  and  the velocity is given as:

ここで、はサイクリングにおける現在の圧力降下を表し、は有効半径であり、はファン効率係数であり、はファンの回転速度(毎分回転数)である。


第2のモードでは、の代わりに内側()および外側()半径が設けられ、およびの場合、速度は次のように与えられる。



where  is the distance from a patch face to the fan axis. Outside  and , . The input for this mode is:

ここで、はパッチ面からファン軸までの距離です。 と、の外側。 このモードの入力は次のとおりです。

useRealRadius   true; rInner          0.005; rOuter          0.01; origin          (0.0453 0.06 0);

もしが与えられていなければ、パッチの重心が取られます。

Source code $FOAM_SRC/finiteVolume/fields/fvPatchFields/derived/swirlFanVelocity New wave modelling: irregular waves

周波数方向スペクトルに基づく新しい不規則波モデルが、利用可能な波モデル群に追加されました。

波の高さは、次の式に従って設定されます。

Source code $FOAM_SRC/waveModels/waveGenerationModels/derived/irregularMultiDirectional Examples $FOAM_TUTORIALS/multiphase/interFoam/laminar/waveExampleIrregularMultiDirection Attribution These boundary conditions were supplied by the Environmental Hydraulics Institute IHCantabria Integration The code has been updated by OpenCFD and added to the $FOAM_SRC/waveModels library available to the interFoam family of solvers Post-processing New In-situ processing with ParaView Catalyst

ParaView Catalyst用の新しい関数オブジェクトアダプタは、OpenFOAMのポストプロセッシングおよびビジュアライゼーション機能に重要な付加価値を与えます。

Catalystは、任意のOpenFOAMシミュレーションに現場およびライブビジュアライゼーション機能を追加します。シミュレーション終了時の後処理ではなく、ParaViewの機能を活用してシミュレーションと同時に視覚化結果を生成することが可能になりました。視覚化パイプライン用のスクリプトは、ParaView GUIを使用してインタラクティブに作成できます。

Catalyst in-situビジュアライゼーションを使用することには、いくつかの利点があります。一般に、視覚化のためだけに中間結果を書くことを避ける方が効率的です。これは、より速く、必要な視覚化イメージを直接生成するために使用するディスクスペースを少なくします。これは、大きなメッシュや視覚化に高い時間分解能が要求される場合には非常に重要になります。

以下の例のアニメーションは、計算中に高い時間周波数で画像が作成され、すべてのメッシュ領域の合成画像を生成するように構成されたビューをオーバーセットした場合を示しています。

ライブビジュアライゼーションオプションは、ディスクに書き込まずに現在のシミュレーションフィールドを調べるのにも役立ちます。 ライブビジュアライゼーションはOpenFOAMの時間ループに組み込まれているため、シミュレーションの一時停止やブレークポイントの設定に使用できます。 これらの機能は、新しいソルバーや物理学の開発中に非常に貴重なものとなり、シミュレーションやモデルの動作の洞察を得ることができます。

Catalystファンクションオブジェクトは、実行時に選択可能で、次のタイプの現場変換をサポートします。

有限体積のメッシュとフィールド。 シングルまたはマルチリージョン。 有限エリアメッシュとフィールド。 単一領域。 ラグランジュ(雲)。 単一または複数の雲。

Catalyst関数オブジェクトは、Simone Bnaandと協力してOpenCFDによって開発されたコミュニティモジュールで、Andy Bauerの支援を受けています。

スパックによるインストールサポートは現在完了しており、数週間以内に利用可能になります。

Build requirements OpenFOAM-v1806 or newer. ParaView 5.4 or newer, compiled with python support.

より進んだスクリプト生成サポートのために、ParaView 5.5以降が推奨されます。 ソースからビルドする場合は、OpenFOAM -caseoptionのサポートを強化するために、ThirdParty makeParaViewスクリプトによって適用される追加パッチも推奨されます。

Source code $WM_PROJECT_DIR/modules/catalyst Examples $WM_PROJECT_DIR/modules/catalyst/tutorials/finiteArea/sphereSurfactantFoam/sphereTransport  $WM_PROJECT_DIR/modules/catalyst/tutorials/heatTransfer/chtMultiRegionFoam/multiRegionHeater  $WM_PROJECT_DIR/modules/catalyst/tutorials/incompressible/icoFoam/cavity  $WM_PROJECT_DIR/modules/catalyst/tutorials/lagrangian/coalChemistryFoam/simplifiedSiwek  $FOAM_TUTORIALS/incompressible/overPimpleDyMFoam/twoSimpleRotors/system/catalyst Writing residual fields

残差関数オブジェクトでは、メッシュデータベースに格納された線形ソルバ残差フィールドを作成できます。オプションとして、選択した書き込み制御に従ってディスクに書き込むこともできます。 次のアニメーションは、BernardCellチュートリアルの場合のp_rghフィールドの進化と初期残差を示しています。

Source code $FOAM_SRC/functionObjects/utilities/residuals Examples $FOAM_TUTORIALS/heatTransfer/buoyantBoussinesqPimpleFoam/BernardCells/system/residuals  $FOAM_TUTORIALS/incompressible/pisoFoam/LES/motorBike/motorBike/system/stabilizationSchemes Updated writing of VTK format data Updated vtkWrite function object

実行時変換を誤って上書きしないように、-postProcessモードでは無効になりました。

新しいデフォルトでは、多面体分解を追加することなく書いています。これは、コンパクタファイルを生成し、VTKがほとんどの場合これを管理するためです。 オプションの辞書分解フラグを使用して、古い動作を元に戻すことができます。

Source code $FOAM_SRC/functionObjects/utilities/vtkWrite Examples $FOAM_TUTORIALS/incompressible/simpleFoam/windAroundBuildings New vtkCloud function object

この新しい関数オブジェクトは、シミュレーション中にラグランジアンデータを拡張子.vtpのVTKポリデータ形式で書き込みます。 並行して、すべてのデータはマスタから書き込まれます。

結果は、選択されたフィールドとすべての位置を含むクラウドとタイムステップごとの.vtpです。

時刻情報は重複して保存されます。 各データファイルには、この情報がファイル内の最初のXMLコメントに含まれます。 例えば、


さらに、.vtp.series時系列ファイルが各クラウドに対して作成されます。 このファイルには、ParaView 5.5以降のシーケンスとして直接ロードすることも可能な、人間が判読可能な形式でファイル名とその関連時間のリストが含まれています。

Source code $FOAM_SRC/functionObjects/lagrangian/vtkCloud Examples $FOAM_TUTORIALS/lagrangian/coalChemistryFoam/simplifiedSiwek Updated writing of Ensight format data EnSight format for sampled surfaces

サンプリングされたサーフェスジオメトリは、サンプリングされたフィールドと同じディレクトリに書き込まれるようになりました。 これにより、下にあるサンプリングされたサーフェスジオメトリの変化に柔軟に対応できます。

サーフェスジオメトリの変更が発生すると、サーフェス出力ライタがトリガされるようになりました。 これにより、照合されたEnSightサーフェスフォーマットに従わない以前のバグが修正され、iso-surfacesが変更されます。

Updated ensightWrite function object

実行時変換を誤って上書きしないように、-postProcessモードでは無効になりました。

今度は、メッシュジオメトリがフィールドと同じ場所に保存されるため、移動シミュレーションと非移動シミュレーションの間の出力には初期の区別はありません。 万年筆のケースファイルが書かれている場合にのみ、区別が見られます。

移動するケースでは、ジオメトリは時間とともに変化し、タイムセットとデータマスクの組み合わせがファイルの位置を特定するために使用されます。

GEOMETRY model:  1   data/********/geometry

非移動の場合、ジオメトリは時間不変であり、直接参照されます。

GEOMETRY model:  data/00000000/geometry

関数オブジェクトのwriteが呼び出されるたびに、ensight caseファイルがフラッシュされるようになりました。 これにより、ケースファイルに常に現在の値が格納され、ケースファイルの即時読み込みと計算中のデータ処理が可能になります。

ensightWrite関数オブジェクトは、foamToEnsightユーティリティとの一貫性のためにnodeValuesオプションをサポートするようになりました。

Source code $FOAM_SRC/functionObjects/utilities/ensightWrite Examples $FOAM_TUTORIALS/incompressible/simpleFoam/windAroundBuildings  $FOAM_TUTORIALS/incompressible/pimpleFoam/RAS/wingMotion/wingMotion2D˙pimpleFoam  $FOAM_TUTORIALS/incompressible/simpleFoam/motorBike Improved sampling options Surface sampleScheme

表面サンプリングルーチンは、単にセル値を使用するのではなく、顔の値を取得するための代替サンプリング方式を指定することができます。

{     type    surfaces;     libs    ("libsampling.so");     ...     sampleScheme  cellPoint;     interpolationScheme cellPoint; }

これは、サンプリング面がセル境界に近い場合や、サンプリングされたフィールドに大きな勾配がある場合に役立ちます。

Source code $FOAM_SRC/sampling/sampledSurface/sampledSurfaces  $FOAM_SRC/src/sampling/surfMeshSample/surfMeshSamplers New cellCentre sampledSet

セルの中心にあるサンプルは、必要に応じて境界ボックスに基づいて制限することができます。 これは、たとえば、ボリュームフィールドを外部プログラムで使用するためのCSV形式または他の形式に抽出するために使用できます。

Source code $FOAM_SRC/sampling/sampledSet/cellCentre Examples $FOAM_SRC/compressible/rhoSimpleFoam/squareBend Bounded sampling planes

サンプリング・プレーンの新しい境界入力により、ユーザーは次のようにプレーンの範囲を制限できます。

plane1 {     type        plane;     source      cells;    planeType   pointAndNormal;    pointAndNormalDict     {         normal      (-1 0 0);         point       (-0.04 0 0);     }     bounds      (-1 -1 -1) (0 0 1); } Distance surface sampling

ユーザーは、非閉鎖の符号付き距離サーフェスを定義できるようになりました。 これにより、バウンディングボックスの制限があるサンプリングされたプレーンに柔軟に代わるものとして、または任意のサーフェスでサンプリングすることができます。 流出の半球。

Source code $FOAM_SRC/sampling/sampledSurface/distanceSurface  $FOAM_SRC/sampling/surfMeshSample/distanceSurface/surfMeshSampleDistanceSurface Examples $FOAM_SRC/compressible/rhoSimpleFoam/squareBend Derived sampled fields

rhoUまたはpTotalを非圧縮の場合の派生サンプリングされたサーフェスフィールドとして計算するときにrhoRefの仕様をサポートするようになりました。

Source code $FOAM_SRC/sampling/surfMeshSample/surfMeshSamplers Examples $FOAM_SRC/incompressible/rhoSimpleFoam/squareBend New uniformity index

surfaceFieldValue関数オブジェクトに新しいフロー一様性操作を追加しました。これは、定期的、重み付け、および絶対的なバージョンで利用できます。

注:質量フィールドで質量流量を測定する場合、surfFieldsへの中間サンプリングが必要となりえます。

Source code $FOAM_SRC/functionObjects/field/fieldValues/surfaceFieldValue Example case $FOAM_TUTORIALS/compressible/rhoSimpleFoam/squareBend  $FOAM_TUTORIALS/incompressible/simpleFoam/squareBend Documentation New solvers documentation

ソルバーアプリケーションに関する新しい文書がコードガイドに追加されました。 メインエントリポイントには、ソルバへのリンクがあります。

機能の互換性マトリックスを完成させる:

simpleFoamソルバーのドキュメントのセクションを以下に示します。

詳細は、新しいソルバアプリケーションページを参照してください。

New finite volume options (fvOption) documentation

fvOptionsに関する新しいドキュメントがコードガイドに追加されました。 メインエントリポイントには、オプションへのリンクと、オプションの使用方法が記載されています。

たとえば、「ソース」セクションのセクションは次のようになります。

詳細については、新しいfvOptionsページを参照してください。

New verification and validation cases

検証および検証のケースに関する新しい文書がコードガイドに追加されました。 メインエントリポイントはチュートリアルのケースへのリンクを提供します:

次の図は、表面実装キューブケースのセクションを示しています。

詳細については、新しい検証と検証のケースページをご覧ください。



Build system Improved configuration and make system Compiler settings

基本レベルのコンパイラ設定は、コンパイラの種類ごとにwmake / rules / Generalディレクトリに統合されるようになりました。 これにより、コンパイラフラグがプラットフォーム間で一貫していることを確実にすることが容易になります。

Dependencies

ファイル依存関係を構築するには、以前のflexベースのパーサーよりも約40%高速な新しいragelベースのパーサーが使用され、オープンファイルのエラーが多すぎます。

Library locations

設定スクリプトは、boost / CGALなどのシステムパッケージのlib / vs lib64 / installationディレクトリを自動的に処理するように更新されました。

パッケージのシステムインストール(boost、CGAL、FFTWなど)には、システムヘッダとライブラリの検索に/ usr / localも含まれるようになりました

CGAL, gmp/mpfr

GMP / mpfrのThirdPartyビルドでCGALを使用し、ThirdParty GCCを使用しない場合、CGAL設定ファイルでgmp / mpfrの場所を定義できるようになりました。

CGALのwmakeルールには、プラットフォーム固有のCGALルールがあればそれも含まれます。

scotch

librtの依存関係は、Linuxなどの.soファイルを使用するシステムにのみ含まれるようになりました。

Centralised handling of ThirdParty packages

これまでのサードパーティ製パッケージのアドホック検出とロケーティングは、GNU autoconfigの精神に基づき、スクリプトの形式でwmake / scriptsサブディレクトリに集中化されました。 例えば、

have_boost, have_readline, have_scotch, ...

それぞれのhaveco <package>スクリプトは、一般的に以下のタイプの関数を提供します:

have_<package>          # detection no_<package>            # reset echo_<package>          # echoing

次のタイプの変数:

HAVE_<package>          # unset or 'true' <package>_ARCH_PATH     # root for <package> <package>_INC_DIR       # include directory for <package> <package>_LIB_DIR       # library directory for <package>

これは呼び出しスクリプトを単純化します:

if have_metis then     wmake metisDecomp fi

対応するメイク/オプションの混乱を軽減するだけでなく、

EXE_INC = -I$(METIS_INC_DIR) -I../decompositionMethods/lnInclude LIB_LIBS = -L$(METIS_LIB_DIR) -lmetis

追加の変更(プラットフォーム固有または外部ビルドシステム用)を一元的に行うことができるようになりました。

Portability

構成スクリプトとソースコードの.so vs .dylibのライブラリ拡張の処理を一般化しました。

これらの関数は、wmake sysFunctions ダーウィン(Mac OSX)でのコンパイルのための新しいコンパイルルールと調整済みソースコード。 システムClangcompilerを使用するように構成されています。 この新しいプラットフォームには、スタックトレースの適切な処理のためのSIGFPE処理とaddr2lineエミュレーションも含まれています。

この移植はAlexey Matveichevの貴重な貢献によって支えられました。

このポートは、徹底的にテストされていない初期の作業を表しています。



Community Community contributions

OpenFOAM v1806のリリースは、より広範なOpenFOAMコミュニティにOpenFOAMの開発を統一するための継続的な取り組みに基づいており、OpenFOAMのコアチームの外にある開発チームの取り組みを認めています。

これらには、


移動メッシュソルバーの統合 interIsoFoamに移動メッシュ機能を追加 新しい波動発生モデル 新しい波 - マングローブの相互作用 コラボレーションの可能性を探究し、開発内容を含める場合は、お問い合わせください。



Notable bug-fixes snappyHexMesh layer feature angle

これは純粋なバグ修正であり、機能拡張ではありません。 あなたのsnappyHexMeshメッシュに影響するかもしれません。 v1712以前では、レイヤーのfeatureAngle設定がsnappyHexMeshDictのセクションコントロールセクションにあります

// Settings for the layer addition. addLayersControls {     // When not to extrude surface. 0 is flat surface,     // 90 is when two faces are perpendicular. Note that this     // is the angle of the mesh surface (so after snapping) and not     // the original geometry.     featureAngle 130; }

正しく解釈されていませんでした(ラジアン変換が欠けていました)。 その結果、v1712では60度を超える値に設定するとすべてのレイヤーの押し出しが無効になります。

下の図には、2つのフィーチャアングルの効果(v1806)が示されています。

45度、すなわち、鋭角ですべての押出を無効にする 130°、すなわち、鋭角での押出を可能にする)

注意:パラメータのデフォルト値の一部は、上記のfeatureAngle設定から計算されます。 これらのパラメータは次のとおりです。

// When to merge patch faces. Default is featureAngle //mergePatchFacesAngle 45;// Do not extrude around sharp edge if not both faces are extruded. // Default is 0.5*featureAngle. Set to -180 always attempt extrusion //layerTerminationAngle -180;// Optional: at non-patched sides allow mesh to slip if extrusion // direction makes angle larger than slipFeatureAngle. Default is // 0.5*featureAngle. //slipFeatureAngle 30;

したがって、v1806のfeatureAngleパラメータを変更し、v1712とまったく同じ動作をしたい場合は、これらの設定を対応して調整する必要があります。 変換テーブルとして表現:

featureAngle v1712 featureAngle v1806 mergePatchFaces layerTermination slipFeature 0 0 0 0 0 30 58.4 30 15 15 45 38.3 45 22.5 22.5 60 180 60 30 30 75 180 75 37.5 37.5 90 180 90 45 45 120 180 120 60 60 130 180 130 65 65 Source code $FOAM_UTILITIES/mesh/generation/snappyHexMesh Examples $FOAM_TUTORIALS/mesh/snappyHexMesh/addLayersToFaceZone



About us

OpenFOAM is produced by the core ESI-OpenCFD team

Andrew Heather Mattijs Janssens Sergio Ferraris Mark Olesen Prashant Sonakar Pawan Ghildiyal Roger Almenar Matej Forman Sebastien Vilfayeau Bjorn Landmann Siby Mandapathil Baby Mayur Wala Son Vo Karen Kettle Fred Mendonca

With wider support from the global ESI team

ESI Group (GmbH) ESI Group (ESI Software (India) Private Limited) ESI Group (North America) ESI Group (Nihon ESI)

And contributions from

OpenFOAM.org Johan Roenby The Environmental Hydraulics Institute IHCantabria