「OpenFOAM v2006 リリースノート」の版間の差分

ナビゲーションに移動 検索に移動
 
(同じ利用者による、間の5版が非表示)
1行目: 1行目:
== '''OpenFOAM v2006 リリースノート''' ==
== '''OpenFOAM v2006 リリースノート''' ==


原文はこちら
[https://www.openfoam.com/releases/openfoam-v2006/ OpenCFD Release OpenFOAM®  v2006 (20 06)]


== アップグレード ==
== アップグレード ==
1,028行目: 1,031行目:
ガバナンスの下で開発:Mark Olesen、Simone Bna、Stefano Zampiniが参加するHPC技術委員会によって作成されました。
ガバナンスの下で開発:Mark Olesen、Simone Bna、Stefano Zampiniが参加するHPC技術委員会によって作成されました。


== 見出し文 ==


== ソルバーと物理モデル ==
=== サーマルバッフルの改良 ===
compressible::thermalBaffle温度境界条件は、流体領域に隣接する熱を意識した固体領域(バッフル)を作成するために使用されます。これは、固体内のエネルギー方程式を解き、流体に結合するために必要なすべての情報を提供します。
以前のバージョンでは、thermalBaffleModel は外部流体パッチでは使用できませんでした。今回のリリースでは、任意の伝達熱ソルバーを使用して共役熱伝達(CHT)ケースを作成し、パッチから押し出すことができるようになりました。
条件は、温度、Tフィールド境界で指定され、要求されます。
固体のthermoTypeモデル
固体混合型
ほうしゃせんモデル
メッシュ押出しモデル
以下の図は、主な流体領域と固体領域を示している。ここで、固体領域は、流体のトップパッチから押し出された。
<syntaxhighlight>
type              compressible::thermalBaffle;
// Solid baffle region name
region              baffle3DRegion;
Tnbr              T;
kappaMethod        fluidThermo;
// Is this baffle internal
internal            true;


// Solid thermo
thermoType
{
    type            heSolidThermo;
    mixture        pureMixture;
    transport      constIso;
    thermo          hConst;
    equationOfState rhoConst;
    specie          specie;
    energy          sensibleEnthalpy;
}


== ソルバーと物理モデル ==
// Solid mixture
mixture
{
    specie
    {
        molWeight      20;
    }
    transport
    {
        kappa          0.01;
    }
    thermodynamics
    {
        Hf              0;
        Cp              15;
    }
    equationOfState
    {
        rho            80;
    }
}
 
// Radiation Model
radiation
{
    radiationModel  opaqueSolid;
    absorptionEmissionModel none;
    scatterModel    none;
}
// Extrude model
extrudeModel        linearNormal;
nLayers            50;
expansionRatio      1;
columnCells        false;
linearNormalCoeffs
{
    thickness          0.1;
}
</syntaxhighlight>
 
 
このパッチから押し出されるバッフルが流体領域の内部か外部かを制御する新しいキーワード項目 internal に注意してください。internal オプションが false の場合は、bottom という名前のカップリングソリッド/T が必要ですが、これも compressible::thermalBaffle 型でなければなりません。
ソースコード
$FOAM_SRC/regionModels/thermalBaffleModels/derivedFvPatchFields/thermalBaffle
チュートリアル
フォーム_TUTORIALS/熱伝達/buoyantSimpleFoam/roomWithThickCeiling
 
 
=== 粒子注入境界のハンドリングの改善 ===
 
致命的なエラーを発生させるのではなく、ドメイン外に位置する粒子注入を単に無視するかどうかを柔軟に指定できるようになりました。これは、例えば、ドメインジオメトリが計算セットアップに完全に対応していない場合に、粒子の位置を初期化するために実験データセットを使用する場合などに便利です。
このオプションは、粒子注入モデルを指定する際に含まれます。
 
<syntaxhighlight>
model1
{
    type            reactingMultiphaseLookupTableInjection;
    ...
 
    // New entry to allow out of bounds
    ignoreOutOfBounds yes;
}
</syntaxhighlight>
 
この機能を有効にすると、範囲外として識別された注入位置の数がソルバーのログに報告されます。
ソースコード
$FOAM_SRC/lagrangian/intermediate/submodels/Kinematic/InjectionModel/InjectionModel
 
 
== 新しいウェーバー数雲関数オブジェクト ==
 
新しいWeberNumberクラウド関数オブジェクトは、シミュレーションの書き込み時間に粒子のウェーバー数を計算し、ディスクに書き込みます。このフィールドは、<time>/lagrangian/<cloudName>/Weの'標準'クラウドフィールドとして書き込まれ、ParaViewなどを使用した後処理のために利用可能です。
クラウド関数オブジェクトは、定数/<cloudName>Properties<i>ファイルで次のように指定します。
 
<syntaxhighlight>
cloudFunctions
{
    WeberNumber1
    {
        type    WeberNumber;
    }
    ...
}
</syntaxhighlight>
 
次の例は、aachenBombチュートリアルの場合で、粒子の色がウェーバー数とキャリアのベオシティマグニチュードによって決定されています。
 
ソースコード
$FOAM_SRC/lagrangian/intermediate/submodels/CloudFunctionObjects/WeberNumber
チュートリアル
foam_tutorials/lagrangian/sprayFoam/aachenBomb
 
 
=== 改良されたCurle関数オブジェクト ===
 
OpenFOAM v1706でリリースされたCurle関数オブジェクトは、近距離音場項を含むようになり、ユーザー定義のリストまたはサーフェスに基づいて点のセットの音圧を計算するようにリファクタリングされました。
点モードを使用する場合、エントリにはオブザーバーの位置のリストが含まれます。
 
<syntaxhighlight>
CurlePoints
{
    type            Curle;
    libs            (fieldFunctionObjects);
    ...
    patches        (surface1 surface2);
    c0              330;
 
    input          points;
    observerPositions
    (
        (0 0 0)
        (1 0 0)
        ...
        (x y z)
    );
}
</syntaxhighlight>
 
サーフェスモードでは、入力サーフェスの面の中心がオブザーバーの位置を表します。出力はサーフェスフォーマットまたはプレーンテキストファイルに書き戻すことができます。
 
<syntaxhighlight>
CurleSurface
{
    type            Curle;
    libs            ("libfieldFunctionObjects.so");
    ...
    patches        (surface1 surface2);
    c0              330;
 
    input          surface;
    surface        "inputSurface.obj"
 
    // Output - either points or surface
    output          points;
    //output          surface;
    //surfaceType    ensight;
}
</syntaxhighlight>
 
下の画像はvortexShedチュートリアルケースの例で、左側には表面形状が白で表示されています(速度マグニチュード予測を重ねて表示)。
 
点と表面の両方の出力は、ノイズユーティリティによってサポートされており、例えば、ここでは約0.1Hzであることが示されているように、渦の放出周波数を強調するために使用することができます。
 
Source code
$FOAM_SRC/functionObjects/field/Curle
Tutorial
$FOAM_TUTORIALS/incompressible/pimpleFoam/LES/vortexShed
 
 
=== 改良された多相位相変化モデリング ===
 
相変化非圧縮性ソルバーinterCondensatingEvaporatingFoamとicoReactingMultiphaseInterFoamが改良されました。
 
新しいinterfaceHeatResistance相変化モデル
温度方程式の半暗黙の処理
インタフェース面積密度のための isoCutCell メソッドの使用
ダイナミックメッシュの使用
新しいinterfaceHeatResistance相変化モデルでは、拡散ソース分布法を使用しています(参考文献参照)。
相変化ソースは、質量移動率を滑らかにするために、シャープな界面に広がっています。質量移動率は次のように計算される。
 
ここで
 
Aiは界面面積密度
ツァット飽和温度
L潜熱
このモデルでは、等値面の位置はエントリisoAlphaによって制御することができます。
さらに、特にソルバー icoReactingMultiphaseInterFoamでは、新しいオプションが利用可能になりました。
相変化モデルにより柔軟性を持たせるために、相変化による体積変化を含めるか無視するかの新しいオプションが利用可能になりました(includeVolChange)
ソルバーicoReactingMultiphaseInterFoamでは、質量交換モデルkineticGasEvaporationがより強固なものになりました。
 
これらのモデルの使い方は、以下のリンク先で見ることができます。
 
ソースコード
$FOAM_SOLVERS/multiphase/icoReactingMultiphaseInterFoam
$FOAM_SOLVERS/multiphase/interCondensatingEvaporatingFoam
チュートリアル
foam_tutorials/multiphase/icoReactingMultiPhaseInterFoam/poolEvaporationのmultiphase/icoReactingMultiPhaseInterFoam/poolEvaporation
$FOAM_TUTORIALS/verificationAndValidation/icoReactingMultingMultifaseInterFoam/stefanProblem
$FOAM_TUTORIALS/verificationAndValidation/interCondensatingEvaporatingFoam/stefanProblem
参考文献
Hardt, S., Wondra, F.(2008). ソースタームの連続体場表現に基づく界面流の蒸発モデル Journal of Computational Physics 227 (2008), 5871-5895
帰属
interfaceHeatResistanceの実装はHenning Scheufler氏の貢献です。
 
 
=== 新しい改良された isoAdvector ベースのモデリング ===
 
このバージョンでは、isoAdvectorメソッドが更新され、新しいサブモデルとメソッドが追加されました。
 
新しい再構成法: isoAlpha, plicRDF, gradAlpha
interIsoFoamソルバーの圧縮可能な定式化、compressibleInterIsoFoam
適応的なメッシュ精密化のための改良されたアルファ補間スキーム
sampledSurfacesに基づくピースワイズ線形インターフェース構築(PLIC)のための後処理関数
最も重要な更新は、新しく開発された再構築スキームに関するものです(参考文献参照)。
再構成法isoAlphaは非構造格子ではうまく機能しないことがわかりました。新しく開発された手法であるplicRDFは、非構造格子上での法線方位計算を改善し、非構造格子が存在する場合にはより良い選択が可能となりました。
新しいトップレベルソルバーcompressibleInterIsoFoamは、圧縮性のある流れを扱うように設計されています。このソルバーと非圧縮性ソルバーは、Automated Mesh refinement (AMR)と連動します。
 
'''使用方法'''
 
再構成スキームは、isoAdvector スキームを用いてアドベクタされた変数の fvSolution に以下のように指定されています。
 
<syntaxhighlight>
"alpha.water.*"
{
    nAlphaCorr      1;
    nAlphaSubCycles 1;
    cAlpha          1;
 
    reconstructionScheme plicRDF;
    vof2IsoTol      1e-8;
    surfCellTol    1e-6;
    nAlphaBounds    3;
    snapTol        1e-12;
    clip            true;
}
</syntaxhighlight>
 
以下の動画は、isoAdvector法を用いた新しい圧縮可能なInterIsoFoamとMULESを用いた圧縮可能なInterFoamについて、deepthCharge3Dの場合に得られた結果を比較したものです。
 
ソースコード
$FOAM_SOLVERS/multiphase/compressibleInterFoam
チュートリアル
$FOAM_TUTORIALS/multiphase/interIsoFoam/damBreakWithObstacle
$FOAM_TUTORIALS/multiphase/compressibleInterIsoFoam/laminar/depthCharge3
参考文献
Henning Scheufler と Johan Roenby. "一般的なメッシュ上の体積分率データからの正確で効率的な表面再構成" Journal of Computational Physics (2019), doi: 10.1016/j.jcp.2019.01.009.
帰属
この実装は、Henning Scheufler(DLR)とJohan Roenby(DHI)によって実施されました。
統合
統合はOpenCFD Ltdが著者からの寄稿を受けて実施した。
 
 
=== 新しいパイプライン型共役グラジエントソルバー ===
 
共役勾配(CG)ソルバーを並列に実行する場合、すべてのプロセッサが同じ探索方向を使用する必要があります。これにはグローバルリダクション (MPI_Allreduce) が必要です。多数のコアでは、これがスケーリングのボトルネックになるかもしれません。
この問題を回避するために、2つの新しい線形ソルバーが導入されました。
 
スカラの3つのグローバルリダクションを3つのスカラに対して1つのリダクションに置き換える(オーバーヘッドを減らす)
これらのグローバルな削減は、'ハロスワップ' (隣接するプロセッサとの通信のみ) とのオーバーラップを可能にします。
多数のコアでは、これがスケーリングの助けになるかもしれません。この方法の欠点は、以下の点です。
 
演算数の増加
必要なメモリを増やす
 
'''Pipelined Preconditioned Conjugate Gradient solver (PPCG)'''
 
新しいソルバーの最初のものは、既存のPCGソルバーをパイプラインフレームワークに再構築したものです。切り捨て誤差の違いを除けば、既存のPCGソルバーと全く同じ動作をします。単純なケースでは、残差と反復回数は同じでなければなりません。
 
'''パイプライン化された前提条件付き共役残基ソルバー(PPCR)'''
 
これは、前提条件付き変数の消去方向をベースにしたPPCGソルバーを修正したものです。これは、最初の反復でわずかに良い残差の振る舞いを示しますが、通信の重複が少なくなります。詳細については、上記の参考文献を参照してください。このソルバーは、例えば非圧縮性/pisoFoam/LES/motorBikeチュートリアルのように、緩い許容範囲でGAMGソルバーの最も粗いレベルを解くために使用すると面白いでしょう。
 
<syntaxhighlight>
pFinal
{
    $p;
    relTol          0;
 
    // Explicit specify solver for coarse-level correction to override
    // solution tolerance
    coarsestLevelCorr
    {
        solver          PPCR;
        preconditioner  DIC;
        relTol          0.05;
    }
}
</syntaxhighlight>
 
純粋に一番粗いレベルの解を見ている(一番粗いレベルを解くのに必要なスイープ数の全体)。
 
PPCRソルバーは掃引回数が少なくて済みますが、時折トップレベルのGAMGサイクルをより多く必要とするため、粗いレベルのソルバーの呼び出し回数が多くなります。全体的な統計量。
 
注意事項。
 
シミュレーションは一度しか実行されていないため、タイミングは代表的なものではありません。
シミュレーションは同じノードの8コアで実行され、インターコネクトは使用されませんでした。
シミュレーションの統計量は比較されませんでしたが、ソルバーの選択以外はケースの設定に変更はありませんでした。
ソースコード
$FOAM_SRC/OpenFOAM/マトリックス/lduMatrix/ソルバー/PPCG/PPCG.C
$FOAM_SRC/OpenFOAM/マトリックス/lduMatrix/ソルバー/PPCG/PPCR.C
参考文献
Ghysels, P., and Vanroose, W. (2014). 前提条件付き共役勾配アルゴリズムにおけるグローバル同期遅延の隠蔽. 並列コンピューティング, 40(7), 224-238.
 
 
=== パーティクルを除去するための新しい雲関数オブジェクト ===
 
新しいremoveParcelsクラウド関数オブジェクトでは、事前に定義されたフェースゾーンに到達したパーティクルを削除することができます。これは、パーティクルが関心を持たなくなり、ドメイン境界を抜けるまで追跡されたり、他の方法で排除されたりして貴重なリソースを消費する場合に有益です。例えば、雨のシミュレーションでは、エアフィルターに到達したパーティクルだけが関心を持つことになります。
removeParcelsオブジェクトは以下のように指定できます。
 
<syntaxhighlight>
cloudFunctions
{
    removeParcels1
    {
        type            removeParcels;
        log            yes;
        resetOnWrite    no;
        resetOnStart    no;
        faceZones      (cycLeftcycRight);
    }
}
</syntaxhighlight>
 
アクティブにすると、オブジェクトは、面ゾーンごとに除去された小包の数と質量をレポートします。
 
<syntaxhighlight>
removeParcels1 output:
    faceZonecycLeft: removed 994 parcels with mass 0.009817407917
    faceZonecycRight: removed 0 parcels with mass 0
</syntaxhighlight>
 
ファイルにも同じ情報が保存されています。
postProcessing/lagrangian/<cloudName>/<objectName>/0/removeParcels<faceZoneName>.dat
ソースコード
$FOAM_SRC/lagrangian/intermediate/submodels/CloudFunctionObjects/RemoveParcels
 
 
=== 大型構造物の一括点移動を改善 ===
 
このリリースでは、OpenFOAMによる構造物の外部結合を拡張しています。塊点法は、CFDメッシュよりもはるかに、はるかに粗く、流体領域よりもはるかに遅い動きを持つFEAモデルで、大規模な構造物の流体-構造-相互作用を扱うために考案されました。このため、与えられたジオメトリ
は、その「リギング」によって定義されますが、これは、ポイントの塊と接続性の観点から定義されたモーションコントローラです。これらは、動きの「骨格」と考えることができます。
モーションコントローラは、補間の影響を定義するためにメッシュパッチに関連付けられています。
リギング上の塊点を移動させると、パッチ点が移動し、これがメッシュモーションソルバーの境界条件に使用されます。注:リギングの変位とブリッジの変位はともに誇張されたスケールで表示されています。
 
ソースコード
$FOAM_APP/applications/utilities/postProcessing/lumped
$FOAM_SRC/lumpedPointMotion
チュートリアル
$FOAM_TUTORIALS/incompressible/lumpedPointMotion/bridge
$FOAM_TUTORIALS/incompressible/lumpedPointMotion/building
 
 
=== 雪崩と泥のスライドツールを新しく更新しました。 ===


このリリースには、雪崩コミュニティサブモジュールの多くの更新が含まれています。


新しい物理モデル(ソルバー)faParkerFukushimaFoam(Parker et al. 1986; doi.org/10.1017/S0022112086001404に基づく)濁流のシミュレーション(Kate Heeremaとの共同研究、itn-slate.euの支援を受けています。
地理空間データフォーマットの統合が改善されたことで、QGISなどの地理情報システムでの簡単なケース設定、地理参照結果、後処理が可能になりました。)
有限領域フィールドに地理空間ベクトルデータ(ESRI(R)シェイプファイル)と地理空間ラスタデータ(ESRI(R)ガー ド)を直接インポートするための改良されたユーティリティ releaseAreaMapping
地理空間の地形/地形データからジオメトリ(STLファイル)を生成するための新しいユーティリティgridToSTL
新機能オブジェクト shapefile有限領域フィールドを地理空間ベクトルデータとしてエクスポートするための書き込み(ESRI(R)シェイプファイル
新機能オブジェクト gridfile有限領域のフィールドを地理空間ラスタデータとしてエクスポートするための書き込み(ESRI(R)ガード)
ソースコード
$WM_PROJECT_DIR/modules/avalanche
帰属
Matthias Rauter, ノルウェー地質研究所


== 境界条件 ==
== 境界条件 ==


=== 大気境界層モデリングのための新しいツール ===
OpenFOAM v2006には、大気境界層モデリングを対象とした新しいツール群の最初のリリースが含まれています。これらのツールは、ESI-OpenCFD Ltd.、ENERCON GmbH、CENERの共同研究により開発されました。
この改良は、時空間的に変化する地形、例えば部分的に林業平原などの大気安定条件の下で、(わずかに/非常に)安定/不安定/中立な大気安定条件の下での表面層とエクマン大気層の包括的なモデリングを可能にしています。
このコードは現在開発中であり、近い将来には更なる拡張機能がリリースされる予定です。


'''新しい境界条件'''


大気境界層モデル化のための8つの新しい境界条件が導入された(そのうち6つは壁制約)。


動学的乱流熱伝導率, alphat: atmAlphatkWallFunction
乱流運動エネルギー散逸率、ε:atmEpsilonWallFunction
乱流粘度、ナット、速度に基づく、U: atmNutUWallFunction
乱流粘度、ナット、乱流運動エネルギー、k、および速度に基づく、U: atmNutWallFunction
乱流粘度, ナット, 乱流運動エネルギーに基づく, k: atmNutkW壁関数
比放散率、quoteTextomega: atmOmegaWallFunction
温度、T、熱流束、q:atmTurbulentHeatFluxTemperature
特定の散逸率のための入口条件、ω:atmBoundaryLayerInletOmega
ソースコード
$FOAM_SRC/atmosphericModels/derivedFvPatchFields/wallFunctions/atmAlphatkWallFunction
$FOAM_SRC/atmosphericModels/derivedFvPatchFields/wallFunctions/atmEpsilonWallFunction
$FOAM_SRC/atmosphericModels/derivedFvPatchFields/wallFunctions/atmNutUWallFunction
$FOAM_SRC/atmosphericModels/derivedFvPatchFields/wallFunctions/atmNutWallFunction
$FOAM_SRC/atmosphericModels/derivedFvPatchFields/wallFunctions/atmNutkWallFunction
$FOAM_SRC/atmosphericModels/derivedFvPatchFields/wallFunctions/atmOmegaWallFunction
FOAM_SRC/atmosphericModels/derivedFvPatchFields/atmTurbulentHeatFluxTemperature
$FOAM_SRC/atmosphericModels/derivedFvPatchFields/atmBoundaryLayerInletOmega
チュートリアル
FOAM_TUTORIALS/verificationAndValidation/atmForestStability $FOAM_TUTORIALS/verificationAndValidation/atmosphericModels/atmFlatTerrain $FOAM_TUTORIALS/verificationAndValidation/atmosphericModels/HargreavesWright_2007
=== 境界条件の改善 ===
atmBoundaryLayer境界条件は、均質、二次元、乾気、平衡、中性大気境界層(ABL)モデリングのための風速と乱流量のための対数法則型の地上正規入口境界条件を提供します。
atmBoundaryLayer境界条件の2006年以前の実装は、Richards and Hoxey, 1993に基づいており、乱流運動エネルギーは高さに応じて一定です。
atmBoundaryLayer条件の新しい実装(Yang et al.に基づく)は、Richards and Hoxey, 1993による式を一般化し、乱流量の実験的またはヒューリスティックな空間変動プロファイルを数学的に一貫した方法で入力できるようにしました。実用的な利点の1つは、これにより、高さの関数として変化する乱流運動エネルギーの地平正規分布が可能になることである。
この目的のために、乱流運動エネルギーの実験データとの非線形フィッティングによって決定される2つの新しいオプションの曲線フィッティング係数、すなわちC1とC2が導入された(Yangら、2009、式19-20で示されるように)。
<syntaxhighlight>
inlet
{
    type    atmBoundaryLayerInlet{Epsilon,K,Omega,Velocity};
    ...
    C1      0.0;
    C2      1.0;
}
</syntaxhighlight>
ソースコード
FOAM_SRC/atmosphericModels/derivedFvPatchFields/atmBoundaryLayer/atmBoundaryLayer.H
$FOAM_SRC/atmosphericModels/derivedFvPatchFields/atmBoundaryLayer/atmBoundaryLayerInletEpsilon.H
$FOAM_SRC/atmosphericModels/derivedFvPatchFields/atmBoundaryLayer/atmBoundaryLayerInletK.H
FOAM_SRC/atmosphericModels/derivedFvPatchFields/atmBoundaryLayer/atmBoundaryLayerInletVelocity.H
チュートリアル
$FOAM_TUTORIALS/verificationAndValidation/atmosphericModels/HargreavesWright_2007
拡張コードガイド
ATM境界層
atmBoundaryLayerInletEpsilon
atmBoundaryLayerInletK
atmBoundaryLayerInletVelocity
'''新しい改良された fvOptions'''
8つの新しいfvOptionsが導入され、1つのfvOptionsが大気境界層モデリング用に改良されました。
atmAmbientTurbSource
atmBuoyancyTurbSource
atmCoriolisUSource
atmLengthScaleTurbSource
アットムナッツソース
atmPlantCanopyTSource
atmPlantCanopyTurbSource
atmPlantCanopyUSource
アクチュエーションディスクソース
ソースコード
FOAM_SRC/atmosphericModels/vvOptions/atmAmbientTurbSource
FOAM_SRC/atmosphericModels/fvOptions/atmBuoyancyTurbSource
FOAM_SRC/atmosphericModels/fvOptions/atmCoriolisUSource
FOAM_SRC/atmosphericModels/fvOptions/atmLengthScaleTurbSource
FOAM_SRC/atmosphericModels/vvオプション/atmNutSource
$FOAM_SRC/atmosphericModels/fvOptions/atmPlantCanopyTSource
FOAM_SRC/atmosphericModels/fvOptions/atmPlantCanopyTurbSource
$FOAM_SRC/atmosphericModels/fvOptions/atmPlantCanopyUSource
$FOAM_SRC/fvOptions/sources/derived/actuationDiskSource
チュートリアル
FOAM_TUTORIALS/verificationAndValidation/atmosphericModels/atmForestStability
$FOAM_TUTORIALS/verificationAndValidation/atmosphericModels/atmFlatTerrain
フォームチュートリアル/incompressible/simpleFoam/turbineSiting
'''新しい検証チュートリアル'''
大気境界層モデリングのための3つの新しい検証チュートリアルが導入されました。
これらは、均質、2次元、乾気、平衡、中性大気境界層(ABL)モデリングのための風速と乱流量のための対数法則型の地上正規流入境界条件の性能を評価します。
最初の検証ケースは、Hargreaves-Wright, 2007によるよく知られた空フェッチケースであり、ここでは、平坦な地形上の均質、2次元、乾燥空気、平衡、中性大気境界層に対して、下流の速度と乱流量の大気入口プロファイルが保存されていることが示された。
<syntaxhighlight>
Fig. 1:
        Hargreaves, D. M., & Wright, N. G. (2007).
        On the use of the k model in commercial CFD software
        to model the neutral atmospheric boundary layer.
        Journal of wind engineering and
        industrial aerodynamics, 95(5), 355-369.
        DOI:10.1016/j.jweia.2006.08.002
</syntaxhighlight>
チュートリアル
$FOAM_TUTORIALS/verificationAndValidation/atmosphericFlows/HargreavesWright_2007
$FOAM_TUTORIALS/resources/dataset/atm-HargreavesWright-2007
2つ目の検証事例は、Lettau, 1950を介してドイツのライプツィヒで行われた有名な野外実験で、地盤法線速度分布に対する浮力、コリオリ、単純なプランテーションの効果が示されています。
<syntaxhighlight>
Lettau, H. (1950).
    A re-examination of the "Leipzig wind profile" considering some
    relations between wind and turbulence in the frictional layer.
    Tellus, 2(2), 125-129.
    DOI:10.3402/tellusa.v2i2.8534
    Fig. 4.1:
        Koblitz, T. (2013).
        CFD Modeling of Non-Neutral Atmospheric Boundary Layer Conditions.
        DTU Wind Energy. DTU Wind Energy PhD, No. 0019(EN).
</syntaxhighlight>
チュートリアル
$FOAM_TUTORIALS/verificationAndValidation/atmosphericFlows/atmFlatTerrain
$FOAM_TUTORIALS/リソース/データセット/atm-Koblitz-2013
最終的な検証ケースは、スウェーデンのRyningsnasで複雑な森林景観を対象に実施されたより最近のフィールド実験に基づいており、大気安定性モデリングのための新しい機能をテストするためにArnqvistら、2015年。
<syntaxhighlight>
Datasets:
        Arnqvist, J., Segalini, A., Dellwik, E., & Bergstrm, H. (2015).
        Wind statistics from a forested landscape.
        Boundary-Layer Meteorology, 156(1), 53-71.
        DOI:10.1007/s10546-015-0016-x
</syntaxhighlight>
チュートリアル
$FOAM_TUTORIALS/verificationAndValidation/atmosphericFlows/atmForestStability
$FOAM_TUTORIALS/resources/dataset/atm-Arnqvist-2015
帰属
OpenCFDは、Hamza Musaddiq、Michael Alletto、Judith Langner (ENERCON Gmbh)、Roberto Chavez (CENER)に、様々な機能の初期実装、多くの有益な議論、有益な提案をしていただいたことに感謝します。
=== 低レイノルズ数と高レイノルズ数の流れのための新しい壁ブレンディング ===
壁関数を適切に使用するには、最初の壁法グリッドの高さがモデルの導出と仮定に適合している必要があります。しかし、局所的なレイノルズ数は時空間的に変化し、計算前には未知であり、複雑な形状の壁境界付近のメッシュを制御することは些細なことではないため、このタスクはしばしば時間がかかり、脆弱です。
このバージョンでは、これらの問題を軽減するために、各壁層からの寄与をスムーズに、または意図的に不連続にブレンドする新しい壁関数ブレンド手法を導入しました。
新しい壁関数ブレンドオプションは以下の通りです。
Blending description
stepwise Stepwise switch (discontinuous)
max Maximum value switch (discontinuous)
binomial Binomial blending (smooth)
exponential Exponential blending (smooth)
tanh Tanh blending (smooth)
を使用して、以下の壁関数に対応しています。
epsilonWallFunction
オメガウォールファンクション
ナットクウォール機能
ナットユーウォール機能
帰属
OpenCFDは、有益な議論と彼の提案をしてくれたMirza Popovac (オーストリア工科大学)に感謝したいと思います。


== 後処理 ==
== 後処理 ==
=== Ensightフォーマットへのデータ変換を改善 ===
foamToEnsightユーティリティが拡張され、cellZonesの柔軟な取り扱いが可能になり、foamToVTKと同様の機能をより多く組み込むことができるようになりました。foamToEnsightPartsユーティリティ(シリアルのみであった)は冗長化されたため削除されました。
現在、foamToEnsight
複数のセルゾーンを扱うことができます。
点場のための追加サポート
追加の-nearCellValueオプション(foamToVTKと同様)
これまでと同様に、シリアルまたはパラレルで実行できます。
最新のfoamToEnsightオプションです。
Options Output
default Individual parts for cellZones, unzoned cells (internalMesh) and patches
-cellZones NAME/LIST Specify single or multiple cellZones to write
-no-cellZones Suppress writing any cellZones
-excludePatches NAME/LIST Exclude single or multiple patches (name or regex) from writing
-index NUM Starting index for consecutive number of Ensight data/files.
-nearCellValue Use zero-gradient cell values on patches
-no-mesh Suppress writing the geometry
-no-overwrite Suppress removal of existing EnSight output directory
-no-point-data Suppress conversion of pointFields, disable -nodeValues
オプションの完全なリストは、オンラインマニュアルおよび/または OpenFOAM API ガイドに記載されています。
改良されたセルゾーンの機能性は、セルゾーンを使用したチュートリアルケースを使用してテストすることができます。foamToEnsight を実行すると、下図のようにケースを視覚化することができ、さまざまなセルゾーンが異なる色で強調表示されます。ParaViewでは、フィルタ抽出ブロックを使用して、Ensightフォーマットからセルゾーンを抽出することができます。
チュートリアル
$FOAM_TUTORIALS/incompressible/pimpleFoam/RAS/propeller
=== 新しい運動量誤差関数オブジェクト ===
新しいmomentumError関数オブジェクトは、controlDictの設定、またはpostProcessオプションとユーティリティを介したコマンドラインの設定に基づいて、トップレベルソルバーで解かれた運動量方程式の離散化に関連したエラーを評価します。
評価は、バジェット計算に過渡項が含まれないタイムステップごとに実行されます。したがって、このツールは定常ソルバーにのみ適しています。
誤差は、以下を使用して計算されます。
<syntaxhighlight>
momentErr = divDevRhoReff() + fvc::div(phi, U) + fvc::grad(p)
</syntaxhighlight>
ここで
divDevRhoReff() は乱流運動量フラックスです.
fvc::div(phi, U)移流項
fvc::grad(p)圧力勾配
controlDict内の関数オブジェクトの例です。
<syntaxhighlight>
momErr
{
    type            momentumError;
    executeControl  writeTime;
    writeControl    writeTime;
}
</syntaxhighlight>
ソースコード
$FOAM_SRC/functionObjects/field/momentumError
チュートリアル
フォームチュートリアル/incompressible/simpleFoam/airFoil2D
=== Abaqus表面ファイルの新規読み込み ===
本バージョンでは、Abaqus サーフェス要素ファイルの読み込み機能が追加されました。
Abaqus ファイルと STARCD ファイルでは、入力ファイルに拡張子 .inp が使用される場合があるため、拡張子に依存しない入出力形式を指定する機能が追加されました。例えば、以下のようになります。
<syntaxhighlight>
surfaceMeshConvert -read-format abaqus file.ext1 -write-format nastran file.ext2
</syntaxhighlight>
Handling of surface extraction from solid elements and writing sampled surfaces in Abaqus format will be made available in future releases.
Source code
$FOAM_SRC/fileFormats/abaqus
$FOAM_SRC/src/surfMesh/surfaceFormats/abaqus
=== 新しいインターフェイスの高さ関数オブジェクト ===
この関数オブジェクトは openfoam.org リポジトリから移植されました。
interfaceHeight オブジェクトは、ユーザーが指定した位置のセットの上にあるインターフェイスの高さを報告します。それぞれの場所について、その場所と最下層の境界線上のインターフェイスの垂直距離が書かれ、これらの高さが計算されたインターフェイス上の点が完全に書き込まれます。これは,位置の上下に複数のインタフェースが存在する場合,平均値が報告されるという意味で,積分アプローチを使用しています.
初期コードは、インターフェースの高さが計算されるデフォルトの方向を変更するオプションを含むように拡張されました。デフォルトでは、高さ計算は重力ベクトルに合わせて設定されますが、オプションの方向入力は、異なる方向を設定するために使用することができます。
<syntaxhighlight>
interfaceHeight1
{
    type          interfaceHeight;
    libs          (fieldFunctionObjects);
    alpha          alpha.liquid;
    direction      (1 0 0);
    writeControl  timeStep;
    writeInterval  3;
    locations      ((0 0 0) (10 0 0) (20 0 0));
}
</syntaxhighlight>
ソースコード
$FOAM_SRC/functionObjects/field/interfaceHeight
チュートリアル
$FOAM_TUTORIALS/verificationAndValidation/interCondensatingEvaporatingFoam/stefanProblem
帰属
interfaceHeight 関数オブジェクトのベースは OpenFOAM.org から移植されています。
拡張コードガイド
インターフェイスの高さ
=== 新しいダイナミックモード分解(DMD)機能オブジェクト  ===
動的モード分解(DMD)は、データ駆動型、すなわち基礎となる物理学とは独立した次元削減手法であり、与えられた流れ(またはデータセット)から支配的な時空間コヒーレント構造をモードの形で明らかにし、定量化するために使用することができるので、与えられた流れの動的特徴は、支配方程式の完全なセットを計算しなくても解釈可能、牽引可能、または再現可能になるかもしれません。DMD理論へのエレガントで有用な導入はBrunton(2018)によって与えられています。
このリリースには、Kiewat(2019)、Hematiら(2017)、およびHematiら(2014)によって開発されたアルゴリズムに基づくStreaming Total Dynamic Mode Decomposition(STDMD)と呼ばれる関数オブジェクトとしての新しいDMDバリアントが含まれています。
他のDMDバリアントの中で、STDMDは、インクリメンタルアップデートと直交則ベースでのデータ圧縮を可能にすることによって、経済化された実行可能なメモリおよびCPU使用量と並んで、一般的なDMD法の能力を提供すると推定される。
顕著な特徴。
古典的なグラム・シュミット法を含む並列処理、および直接トールスキニーQR分解(eigendecompositionソルバーを除く)
<Type>=Scalar/Vector/SphericalTensor/SymmTensor/Tensorのように、{vol,surface}<Type>Fieldが入力可能なテンプレート入力。
直交基底圧縮によるデータ圧縮が可能です。
3つのモードソートアルゴリズムと、支配的なモードを明らかにするための様々なフィルタリングエントリが利用可能です。
潜在的な(既知の)注意点。
このSTDMDリリースはベータリリースです。したがって、次のバージョンでは、入出力インタフェースや内部構造の小~中程度の変更が予想されます。
DMDは執筆時点では活発な研究分野であり、そのため、奇妙な現象に遭遇する可能性があります。
STDMD行列の中間書き込みは計算コストが高くなるため、現在のところ再起動はサポートされていません。
wallShearStressなどの境界フィールドの操作は現在サポートされていません。
postProcessユーティリティによる使用はサポートされていません。
2次元定常流入円筒からのモード場の断面を示すプロットのセット
検証テストスイートを以下に示します。各サブ図では、対応する順序を使用しています。左上=MATLAB(シリアルデータを使用)、左下=OpenFOAM(シリアル)、右上=MATLAB(パラレルデータを使用)、右下=OpenFOAM(パラレル/8-procs)。
この関数オブジェクトの最低限の動作例を以下に示します。
<syntaxhighlight>
STDMD1
{
    type                STDMD;
    libs                (fieldFunctionObjects);
    field              <inpField>;
    stdmdInterval      5.5;
}
</syntaxhighlight>
ソースコード
$FOAM_SRC/functionObjects/field/STDMD
チュートリアル
$FOAM_TUTORIALS/incompressible/pimpleFoam/laminar/cylinder2D
拡張コードガイド
STDMD
帰属
OpenCFDは、STDMD機能の初期のMATLAB実装、有益な議論、有益な提案をしてくれたMarco Kiewat博士(ミュンヘン工科大学/AUDI)に感謝したいと思います。
=== 新しい関数オブジェクト。ObukhovLength ===
新しいObukhovLength関数オブジェクトは、Obukhov長さ場と関連する摩擦速度場を計算します。
地上の正規高さ、すなわち z でスケーリングされた場合、オブホフ長は大気境界層のモデリングのための無次元安定性パラメータ z/L になります。これは、乱流運動エネルギーの生成と散逸における浮力とせん断の相対的な役割を表現しています。
system/controlDict.functionsを用いたこの関数オブジェクトの最小動作例を以下に示します。
<syntaxhighlight>
ObukhovLength1
{
    type            ObukhovLength;
    libs            (fieldFunctionObjects);
}
</syntaxhighlight>
ソースコード
$FOAM_SRC/atmosphericModels/functionObjects/ObukhovLength
チュートリアル
FOAM_TUTORIALS/verificationAndValidation/atmosphericModels/atmForestStability
拡張コードガイド
オブホフの長さ
=== 新しい log(x) 関数オブジェクト ===
新しい log 関数オブジェクトは、入力 volScalarField の自然対数を計算します。
f = sln(max (f0,a)) + t
ここでは: f 出力 volScalarField f0 入力 volScalarField ln 自然対数演算子 a クリップスカラ s スカラ s スケーリング係数 t オフセット係数
この関数オブジェクトの最低限の動作例を以下に示します。
<syntaxhighlight>
log1
{
    type            log;
    libs            (fieldFunctionObjects);
    field          <inpField>;
    clip            1e-3;
    checkDimensions false;
    scale          1.0;
    offset          0.0;
}
</syntaxhighlight>
Source code
$FOAM_SRC/functionObjects/field/log
Tutorial
$FOAM_TUTORIALS/incompressible/pisoFoam/laminar/cavity
Extended code guide
log
Attribution
The base of the log function object has been ported from OpenFOAM.org
=== 新しい pow(x) 関数オブジェクト ===
新しい pow 関数オブジェクトは、入力 volScalarField の電力を計算します。
f = sfn0 + t
ここでは
f 出力 volScalararField
f0 入力 volScalararField
n 指数
s スケーリングファクター
t オフセット係数
この関数オブジェクトの最低限の動作例を以下に示します。
<syntaxhighlight>
pow1
{
    type            log;
    libs            (fieldFunctionObjects);
    field          <inpField>;
    n              0.25;
    scale          1.0;
    offset          0.0;
}
</syntaxhighlight>
ソースコード
FOAM_SRC/functionObjects/field/pow/pow.H
チュートリアル
フォームチュートリアル/非圧縮性/pisoFoam/層状/空洞
拡張コードガイド
パウダー
=== サンプリングされた表面のコントロールを改善 ===
サーフェス出力フォーマットは、一般的に使用されるフォーマットと圧縮キーワードを受け入れるように拡張されています。これらの正確な意味はコンテキストに依存します。例えば、VTK出力では、バイナリ/ASCIIフォーマットを選択しますが、圧縮は無視されます。X3D出力では、出力はASCIIのままですが、出力ファイルは圧縮できます。
この変更により、boundaryDataのバイナリ出力のサポートも追加され、マップされたフィールドのファイルサイズが改善されました。
nastran および raw フォーマットでは、幾何学的なスケーリングと同様に、柔軟なディクショナリフォーマットでの独立したフィールドスケーリングがサポートされるようになりました。
例えば、以下のようになります。
<syntaxhighlight>
formatOptions
{
    raw
    {
        compression on;
        scale  1000;    // [m] -> [mm]
        fieldScale
        {
          "p.*"  0.01;  // [Pa] -> [mbar]
        }
    }
    …
}
</syntaxhighlight>
ソースコード
$FOAM_SRC/src/surfMesh/writers/nastran
$FOAM_SRC/src/surfMesh/writers/raw


== ドキュメント ==
OpenFOAMのユーザードキュメントのオーバーホール
過去のリリースでは、OpenCFDはユーザードキュメントの改善を続けてきました。これはOpenFOAM v2006でも継続しており、すべてのフィールド関数オブジェクトとトップセットに対応するための努力が行われています。AMIWeights関数オブジェクトの例を以下に示します。
拡張コードガイド
フィールド関数オブジェクト
トップセット




== ビルドシステム ==
== ビルドシステム ==


=== 新しいコンパイル済みパッケージ ===


このリリースでは、Ubuntu、openSUSE、CentOS/RedHat用にコンパイル済みのバイナリパッケージをサポートすることで、OpenFOAMの使用を簡素化しています。
https://develop.openfoam.com/Development/openfoam/-/wikis/precompiled
パッケージの細分化は、さまざまな要件をサポートしています: https://develop.openfoam.com/Development/openfoam/-/wikis/precompiled#sub-packages


小実行時専用パッケージ
中規模開発パッケージ
チュートリアル付きの大規模開発パッケージ


== ドキュメント ==
 
=== wmakeのビルドシステムを改良しました。===
 
これにより、トップレベルのスクリプトを追加することなく、追加の機能にアクセスするための自然な手段が提供され、また、スクリプトの再利用が容易になりました。例えば、wmake -build-info.
wmakeルールは追加の環境パラメータ(FOAM_EXTRA_CFLAGS、FOAM_EXTRA_CXXFLAGS、FOAM_EXTRA_LDFLAGS)を通過するようになり、コンパイルパラメータのカスタムチューニングをサポートし、OpenFOAMコードを統合する際に追加のコンパイルパラメータが必要な状況をサポートします。
 
'''コンパイラ/システムサポート'''
 
コンパイラのルールを新しく/更新しました。
linux64用のAmdコンパイラ(AOCCコンパイラ)。
linuxARM64用の富士通コンパイラ。
Darwin用のClangルールを更新し、openmpをサポートしました。
コンパイラの派生物の扱いをより簡単にしました。
オプションの 'オーバーライド' wmake ルールのサポート
 
'''モジュールとMPI'''
 
モジュールと MPI 固有のレイヤのツリー外コンパイルをサポートする新しいインフラストラクチャが追加されました。ユーザーアップグレードガイドを参照してください。
 
 
=== 可視化モジュール ===
 
OpenFOAMをより柔軟にするための進行中の作業の一環として、VTK関連のコンポーネントが可視化モジュールに集約され、これらの要素が含まれるようになりました。
 
catalyst : ParaView/Catalystによるin-situ可視化
paraview-plugins : ParaView 用の補助リーダモジュール
runTimePostProcessing : VTKベースの処理を用いたin-situ可視化
この分割により、OpenFOAMコアを再コンパイルすることなく、異なるビジュアライゼーションコンフィギュレーションを簡単に生成することができます。
これは例えば、VTK/PararaViewのバージョンや機能の異なる組み合わせをミックスしてマッチさせるために使用されます。
 
触媒サブモジュールは現在では廃止され、非推奨となっていることに注意してください。
多くの普通のユーザにとって、このモジュールは無視しても問題ありません。

案内メニュー