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

編集の要約なし
 
(同じ利用者による、間の2版が非表示)
537行目: 537行目:


* $FOAM_TUTORIALS/finiteArea/liquidFilmFoam/cylinder
* $FOAM_TUTORIALS/finiteArea/liquidFilmFoam/cylinder
= v2212:数値計算の新機能と改良 =
== オーバーセットメッシュの改善 ==
オーバーセットの枠組みが拡張されました。
# は、オーバーセットされたパッチが背景領域の外まで広がるようにします。
# 背景領域のホールセルから離れたフリンジ面を許容する;および
# 質量保存を改善するためのオプションを追加する。
=== ドメイン外のオーバーセットパッチ ===
他のすべてのメッシュの外側に存在するセルは、ドナーセル候補が見つからないため、補間を使用することができません。これらのセルは、通常の計算セルと同様に局所的にセルを解く、新しいポーラスセルタイプを使用して処理することができます。これらのセルは通常、壁のパッチに近いため、圧力-速度系の安定性を維持するために、通常は何らかのダンピングが必要です。これは、例えば、速度を減衰させるfvOptionを使用して適用することができ、新しいcellType selectionMode項目は多孔質セルを識別することができます。
<code>limitU
{
    type            velocityDampingConstraint;
    active          true;
    selectionMode  cellType;
    UMax            0;
    C              1;
}</code>
inverseDistance、trackingInverseDistance、volumeWeightの各セルステンシルを用いたテストでは、ダンピング定数Cが「1」でうまく機能する傾向があることが示されました。
なお、この方法は、背景メッシュの上に2つのインセットメッシュを重ねることはサポートしていません。
=== 背景領域のホールセルから離れたフリンジ面を許可する ===
オーバーセット法は、流れが高い勾配を示す領域から補間されたセルが離れている場合に有効です。以前のバージョンでは、幾何学的に不明瞭なセル(穴のタイプ)は補間されたセルで囲まれていました。このリリースでは、system/fvSchemes辞書のoversetInterpolationセクションを使用して、補間セルを障害物からさらに遠ざけることができます。
<code>oversetInterpolation
{
    method              inverseDistance;
    ..
    holeLayers          4;
    useLayer            2;
}</code>
holeLayers の項目には、ホールセルから「歩く」セルの層数を指定し、useLayer には補間セルを配置する層数を指定します。例えば、上記の例では、4層からなる歩行を行い、層2を使用して補間を配置します。
実行時、ソルバーは各メッシュのレイヤー体積の平均比率を報告する、例.
<code>Number of layers : 4
Average volumetric ratio : 4(0.9581398507 0.9624422346 0.966612743 0.97065    73485)
Number of holes cells : 4(202 203 204 205)
Using layer : 2</code>
残圧について期待される改善点の代表的なものは以下の通りです。
=== オーバーセット質量保存を改善するためのオプション ===
以前の実験的キーワードは、オーバーセットベースのソルバーアプリケーション、すなわちmassFluxInterpolation、ddtCorr、およびcorrectPhiから削除されました。質量保存は、fvSolutionファイルの新しいoversetAdjustPhiキーワードによって制御されるフラックス補正を追加することで改善されました。
<code>PIMPLE
{
    momentumPredictor  no;
    nOuterCorrectors    1;
    nCorrectors        3;
    nNonOrthogonalCorrectors 0;
    oversetAdjustPhi    true;
}</code>
このフラグは、内側のPIMPLEループのフリンジ面を横切るフラックスを調整します。次の画像は、$FOAM_TUTORIALS/multiphase/overInterDyMFoam/simpleRotorの場合の質量保存への影響を示しており、最初のものは補正なしで、2番目は補正ありで計算されています。
フラックス/質量保存の第二のオプションは、パッチフィールド上で指定される暗黙の補正である。
<code>free
{
    type            overset;
    value          uniform 300;
    fluxCorrection  true;
}</code>
線形ソルバー内のフラックス制約を使用してフラックス補正を実装しています。これは、すべてのフリンジ面において、すべての行列-フィールドの乗算に対して保存制約を強制します。これは,事前調整された共役勾配系で事前調整された変数に適用されるため,効果が限定される可能性があることに注意してください.overLaplacianDyMFoamチュートリアルbasic/overLaplacianDyMFoam/1DheatTransferMassConservationでは、fluxCorrectionを有効にするとオーバーセットパッチの性能が改善されます。
Source code
* $FOAM_SRC/overset
Tutorials
Outside cells:
* $FOAM_TUTORIALS/multiphase/overInterDyMFoam/twoSquaresOutDomain
* $FOAM_TUTORIALS/incompressible/overPimpleDyMFoam/rotatingSquare
Fringe faces:
* $FOAM_TUTORIALS/incompressible/overPimpleDyMFoam/simpleRotor
* $FOAM_TUTORIALS/multiphase/overInterDyMFoam/floatingBody
* $FOAM_TUTORIALS/multiphase/overInterDyMFoam/rigidBodyHull
Mass conservation (explicit):
* $FOAM_TUTORIALS/multiphase/overInterDyMFoam/simpleRotor
Mass conservation (implicit):
* $FOAM_TUTORIALS/basic/overLaplacianDyMFoam/1DheatTransferMassConservation
== 新しい随伴目的関数 ==
アドジョイントベースの最適化で使用する5つの新しい目的関数が追加され、主に内部フロー最適化問題をターゲットにしています。以下に、それぞれの簡単な説明と例を示します。これ以降の図はすべて、速度の大きさを表しています。
=== flowRate ===
与えられたパッチのセットを通過する体積流量を計算し、最小化/最大化する。ダクトの上部を通る流量を最大にする(左から右へ流れる)アプリケーションを以下に示します。
Tutorial: $FOAM_TUTORIALS/incompressible/adjointOptimisationFoam/shapeOptimisation/fork-uneven/flowRate
Source code: $FOAM_SRC/optimisation/adjointOptimisation/adjoint/objectives/incompressible/objectiveFlowRate
=== flowRatePartition ===
入口流量を所定の割合で出口パッチに分配するために使用される。2つのアウトレットにインレット流量を均等に分配することを目的としたアプリケーションを以下に示す。
Tutorial: $FOAM_TUTORIALS/incompressible/adjointOptimisationFoam/shapeOptimisation/fork-uneven/flowRatePartition
Source code: $FOAM_SRC/optimisation/adjointOptimisation/adjoint/objectives/incompressible/objectiveFlowRatePartition
=== uniformityPatch ===
所定の(出口)パッチ(ここでは下部の出口パッチ)で計算される速度分散を最小にすることで、流れの均一性を高めることができます。
Tutorial: $FOAM_TUTORIALS/incompressible/adjointOptimisationFoam/shapeOptimisation/fork-uneven/uniformityPatch
Source code: $FOAM_SRC/optimisation/adjointOptimisation/adjoint/objectives/incompressible/objectiveUniformityPatch
=== uniformityCellZone ===
所定のセルゾーン内の流速のばらつきを抑え、流れの均一性を向上させます。
この場合、ターゲットとなるセルゾーンの境界は黒くハイライトされている。
Tutorial: $FOAM_TUTORIALS/incompressible/adjointOptimisationFoam/shapeOptimisation/sbend/laminar/opt/unconstrained/uniformityCellZone
Source code: $FOAM_SRC/optimisation/adjointOptimisation/adjoint/objectives/incompressible/objectiveUniformityCellZone
=== powerDissipation ===
与えられたcellZone内で発生する流体電力の損失を計算し、最小化する。セルゾーンがフロードメイン全体をカバーする場合、この目的は体積流量で重み付けされた総圧力損失(すなわちPtLosses目的関数)と等価である。
ターゲットセルゾーンの境界は黒くハイライトされている。
Tutorial: $FOAM_TUTORIALS/incompressible/adjointOptimisationFoam/shapeOptimisation/sbend/turbulent/SA/opt/powerDissipation
Source code: $FOAM_SRC/optimisation/adjointOptimisation/adjoint/objectives/incompressible/objectivePowerDissipation
Attribution
* The software was developed by PCOpt/NTUA and FOSS GP
* Integration in collaboration with OpenCFD on MR!578
== 新しい並列一貫したジオメトリ方式 ==
新しいパラレルジオメトリ計算手法は、他のジオメトリ計算手法のラッパーとして適用することが可能です。
<code>geometry
{
    type            parallel;
    // Optional underlying geometry calculation. Default is 'basic'.
    geometry
    {
        type            highAspectRatio;
    }
}</code>
オーナーサイドの面形状を隣接する面、つまり面中心、法線(ネゲート)に適用し、影響を受けるセルのセルベースの形状を再計算することで動作します。
これは特に単精度の場合に有効で、例えばグローバル変換を計算する際に問題となる、結合パッチが採用する異なる計算順序に起因する切り捨て誤差を除去することができます。
  <code>--> FOAM FATAL ERROR: (openfoam-2206)
  bad size -653174757
      From void Foam::List<T>::doResize(Foam::label) [with T = Foam::vectorTensorTransform; Foam::label = int]
      in file lnInclude/List.C at line 84.
  #0  Foam::error::printStack(Foam::Ostream&)
  #1  Foam::error::simpleExit(int, bool) at ??:?
  #2  Foam::error::exiting(int, bool)
  #3  Foam::List<Foam::vectorTensorTransform>::doResize(int)
  #4  Foam::globalIndexAndTransform::determineTransformPermutations() at ??:?</code>
なお、並列方式は点の位置を変更しないので、セルクローズなどの他の計算された形状に影響を与える可能性があります。
Source code
* $FOAM_SRC/finiteVolume/fvMesh/fvGeometryScheme/parallel
== 新有限面積最小二乗法によるエッジ補間法 ==
Finite Areaのための線形ベースのエッジ補間スキームは、表面勾配と発散の計算で高い誤差をもたらす可能性があります。新しい最小二乗法スキームは、Pesci (2019; p.29-30, 45-50) の研究に基づいています - Finite Volume フレームワークの pointLinear スキームに類似していることを示します。テストでは、新しいスキームが解析解に関して表面勾配とダイバージェンスの結果を改善できることを示した。
解析解に関してガウス線形とガウス最小二乗を比較すると(Pesci, 2019; 図4.2)、予測精度のレベルが向上していることがわかる。
Source code
* $FOAM_SRC/finiteArea/interpolation/edgeInterpolation/schemes/leastSquares
References
* Pesci, C. (2019). Computational analysis of fluid interfaces influenced by soluble surfactant. Darmstadt, Technische Universität. PhD thesis.
Merge request
* MR!575
== MappedFileの改善 ==
=== 代替のサーフェスフォーマット ===
外部データソースと結合する際に使用される MappedFile 関数が拡張され、別の表面読み取り形式をサポートするようになりました。これにより、例えばサンプリングしたEnSightデータをマッピングに再利用することができ、抽出データ、可視化データ、入力データを1つのソースにまとめることができる利点があります。
=== フィールドフィルタリング ===
MappedFileは、入力データにマルチスウィープメディアンフィルタリングを追加できるようになりました。これは、粗いメッシュにサンプリングする際に、高い空間周波数を除去するために使用することができます。例えば、探索半径5mmの線形、面積加重フィルタを適用する場合。
<code>filterRadius    5e-3;
filterSweeps    40;</code>
入力フィールド値は、指定された掃引回数で平均化されたフィルタリングが行われます。このフィルタリングにより、サンプリングされた値を汚染する高い空間周波数が取り除かれる。フィルタの効果は次のように見られる。
左はオリジナルの生入力データ、右は同じものをMappedFile内でフィルタリングし、高周波成分を除去した後の画像である。
Source code
* $FOAM_SRC/meshTools/PatchFunction1/MappedFile
Merge request
* MR!568
Tutorial
* $FOAM_TUTORIALS/compressible/acousticFoam/obliqueAirJet
=== フィールドフィルタリングのプレビュー ===
新しい smoothSurfaceData ユーティリティは、MappedFile で使用する前に、さまざまなフィルター半径やスイープの効果を簡単にテストするための手段です。
== 改良型DEShybridスキーム ==
Travinら[3]の研究に基づくDEShybridスキームは、細かいメッシュの渦度支配領域ではより低い散逸スキームを、回転しない領域や粗いメッシュではよりロバストなスキームを、解に応じてブレンドすることを可能にします。このオリジナルスキームを新しいグレー領域拡張 DES モデルで使用したところ,誤動作することが判明しました.より散逸的なスキームは、重要な初期せん断層領域で作動し、モデルの改良を打ち消すものでした[1]。
DEShybridスキームのアップデートがv2212リリースに含まれており、グレーエリア領域での低散逸挙動を保証し、その他の点ではオリジナルのスキームと同様の挙動を示します。
Tutorial
Settings for the new DEShybrid scheme can be found in the new tutorial based on the 2D hump case of Greenblatt et al. [2].
* $FOAM_TUTORIALS/incompressible/pimpleFoam/LES/wallMountedHump
Source code
* $FOAM_SRC/TurbulenceModels/schemes/DEShybrid
Attribution
* 更新されたDEShybridスキームは、Upstream CFD GmbHによって実装され、Volkswagen AGの資金提供によりOpenCFD Ltdと共同でOpenFOAMに統合されました。
* Merge request MR!560
References
# Fuchs, M., Mockett, C., Sesterhenn, J., and Thiele, F. (2015). Assessment of novel DES approach with enhanced SGS modelling for prediction of separated flow over a delta wing. 22nd AIAA Computational Fluid Dynamics Conference, Dallas / Texas, AIAA-2015-3433.
# Greenblatt, D., Paschal, K. B., Yao, C.-S., Harris, J., Schaeffler, N. W., and Washburn, A. E. (2006). Experimental Investigation of Separation Control Part 1: Baseline and Steady Suction. AIAA Journal, Vol. 44, No. 12, pp. 2820-2830, 2006.
# Travin, A.K., Shur, M.L., Strelets, M.K., and Spalart, P.R. (2004). Physical and numerical upgrades in the detached-eddy simulation of complex turbulent flows. Advances in LES of complex flows, pp. 239–254, 2004.
= v2212: 新規および更新されたソルバーと物理学 =
== ビューファクタ放射モデリングの改善 ==
放射線ビューファクタ生成アプリケーションであるviewFactorsGenが複数回アップデートされました。
* この方法は、2つの面が「遠い」場合は二重面積積分(2AI)、面が「近い」場合は二重線形積分(2LI)の組み合わせに基づいている。面間の距離は、平均面積と面中心間の距離の比として計算されます。
* OpenFOAMの標準的な反復線形ソルバーをデフォルトで使用し、シングル・プロセッサーでの従来の直接解法を使用する。
* CGALサポートでコンパイルした場合、より高速なレイ・インターセクション・ルーチンを適用することができます。
辞書入力
viewFactorsDict辞書の追加入力は、以下の通りです。
<code>// GaussQuad integral error tolerance (default: 0.01)
// Used to decide when to increase order of integration.
GaussQuadTol              0.1;
// Relative distance (default: 8)
// For distTol : use 2AI
distTol                  8;
// Constant model use for common edges for 2LI (default : 0.22)
// Approx for integral value of duplicate edges.
alpha                    0.22;
// Interval tolerance (default : 1e-2)
// Used for ray shooting from face centre to face centre plus intTol to avoid the ray
// hitting the same face where it was originated.
intTol                    1e-2;</code>
反復法ソルバーと直接法ソルバーの使用は、radiationProperties辞書のuseDirectSolver項目(オプション)で指定します。
<code>{
    smoothing          false;  // Use for closed surfaces where sum(Fij) = 1
    constantEmissivity true;
    nBands            1;
    useDirectSolver    false;    // Use direct solver or standard iterative solver ("qr", "qRFinal" in fvSolution)
}</code>
この新しいバージョンでは、顔の凝集(したがって faceAgglomeration アプリケーション)は必要ありません。
Tutorials
* $FOAM_TUTORIALS/heatTransfer/chtMultiRegionSimpleFoam/multiRegionHeaterRadiation
* $FOAM_TUTORIALS/heatTransfer/chtMultiRegionFoam/externalSolarLoad
Source code
* <code>$FOAM_SRC/thermophysicalModels/radiation/radiationModels/viewFactor (view factor evaluation)</code>
* <code>$FOAM_UTILITIES/preProcessing/viewFactorsGen (view factor generation)</code>
== DES乱流モデルの改良 ==
DES(Detached-Eddyシミュレーション)は、定常(RANS)モデルよりも精度が高く、LES(Large-Eddy Simulation)よりも低コストであるため、乱流モデリング手法としてますます一般的になりつつある手法です。しかし、「グレーゾーン」と呼ばれる欠点があり、初期せん断層で分解された乱流の発達が遅れ、ここでの予測精度が低下しています。
新しいグレー領域拡張DESバージョンは,局所的に渦粘性を低下させることで,初期シア層でのRANS-LES遷移を加速させます.乱流が完全に発達すると、通常のサブグリッドスケールの挙動が戻ってきます。次の図は,2次元の壁面設置型ハンプの下流で再循環する流れに ついて,グレーゾーン効果を示したものです.グレーゾーンを強化したモデルでは、分解された乱流のレベルが大幅に向上し、実験との一致も良くなっています。
v2212では、以下の乱流モデリング機能が搭載されています。
* Grey-area enhanced -DDES formulation [1][3], SpalartAllmarasDDES and kOmegaSSTDDES with activated option useSigma, which is applicable to both Spalart-Allmaras and Menter SST-based DDES formulation;
* Vorticity-adaptive filter definition, [4][5], DeltaOmegaTildeDelta, which is recommended for use in conjunction with the -DDES model; and
* Shear-layer adaptive filter definition, [5], SLADelta, which achieves a similar effect to the combination of -DDES and .
Example usage:
<code>simulationType LES;
LES
{
    LESModel        SpalartAllmarasDDES;
    SpalartAllmarasDDESCoeffs
    {
        useSigma        true;                    // <-- new entry
    }
    //delta          SLADelta;
    delta          DeltaOmegaTilde;
    DeltaOmegaTildeCoeffs
    {}
    ...
}</code>
これらの手法と合わせて、アップデート版のDEShybridスキームを使用することが推奨されます。
Tutorial
* $FOAM_TUTORIALS/incompressible/pimpleFoam/LES/wallMountedHump
Attribution
* グレー領域拡張DESモデルコンポーネントは,Upstream CFD GmbHによって実装され,Volkswagen AGの資金援助を受けてOpenCFD Ltdと共同でOpenFOAMに統合されました.
* Merge request MR!560
References
# Fuchs, M., Mockett, C., Sesterhenn, J., and Thiele, F. (2020). The grey-area enhanced sigma-DDES approach: Formulation review and application to complex test cases. In: Progress in Hybrid RANS-LES Modelling, Notes on Numerical Fluid Mechanics and Multidisciplinary Design 143, pp. 119-130, Springer, 2020.
# Greenblatt, D., Paschal, K. B., Yao, C.-S., Harris, J., Schaeffler, N. W., & Washburn, A. E. (2006). Experimental Investigation of Separation Control Part 1: Baseline and Steady Suction. AIAA Journal, Vol. 44, No. 12, pp. 2820-2830, 2006.
# Mockett, C., & Fuchs, M. (2017). Application of Alternative SGS Forms for Grey Area Mitigation. In Go4Hybrid, volume 134 of Notes on Numerical Fluid Mechanics and Multidisciplinary Design, Springer, 2017.
# Mockett, C., Fuchs, M., Garbaruk, A.V., Shur, M.L., Spalart, P.R., Strelets, M.K., Thiele, F., & Travin, A.K. (2016). Two non-zonal approaches to accelerate RANS to LES transition of free shear layers in DES. In: Progress in Hybrid RANS-LES Modelling, Notes on Numerical Fluid Mechanics and Multidisciplinary Design 130, pp. 187-201, Springer, 2015.
# Shur, M. L., Spalart, P. R., Strelets, M. K., & Travin, A. K. (2015). An enhanced version of DES with rapid transition from RANS to LES in separated flows. Flow, Turbulence and Combustion, 95, 709–737, 2015.
== 熱交換器のモデリングを改善 ==
領域間熱伝達fvOption、effectivenessHeatExchangerSourceがheatExchangerSourceに名称変更され、新たに2つのサブモデルを指定できるように拡張されました。
* effectivenessTable:先のeffectivenessHeatExchangerSourceの動作、および
* referenceTemperature: 熱交換を計算するために、基準温度(スカラーまたは2次元補間テーブルから計算)を使用するモデルです。
最小限の使用例を以下に示します。
<code>heatExchangerSource1
{
    type                    heatExchangerSource;
    // Option-1
    model                  effectivenessTable;
    // Option-2
    model                  referenceTemperature;</code>
Source code
* $FOAM_SRC/fvOptions/sources/derived/heatExchangerSource
Merge request
* MR!557
== 新ゾーンベースの熱物性 ==
多領域のケースは、組み立てや運用が難しい場合があります。新しいpureZoneMixtureモデルは、熱物性の選択によってのみ領域が異なるセットアップを簡素化するために使用することができます。この場合、ユーザーは単一のメッシュ領域を使用し、セルゾーンごとに熱物性を選択することができるため、プリポスト処理を簡略化し、実行時間を短縮できる可能性があります。
ゾーン間カップリングは、内部面を使用して暗黙的に、または境界条件を使用して明示的に処理されます。内部面のカップリングは柔軟性に欠け、シェル伝導のような抵抗や放射のようなソースを追加することはできません。内部フェースでは、不連続な特性の影響は、例えば、調和補間によって処理されるかもしれません。
=== Zonal mixture ===
これはすべてのセルゾーンに対して混合物の設定を取る。固体領域の典型的な constant/<region>/thermophysicalProperties は次のようなものである。
<code>thermoType
{
    type            heSolidThermo;
    mixture        pureZoneMixture;
    transport      constIso;
    thermo          hConst;
    equationOfState rhoConst;
    specie          specie;
    energy          sensibleEnthalpy;
}
mixture
{
    leftSolid
    {
        specie
        {
            molWeight  50;
        }
        transport
        {
            kappa  80;
        }
        thermodynamics
        {
            Hf      0;
            Cp      450;
        }
        equationOfState
        {
            rho    8000;
        }
    }
    rightSolid
    {
        //- Start off from properties of cellZone leftSolid
        ${leftSolid}
        //- Selectively overwrite properties
        equationOfState
        {
            rho    2800;
        }
    }
}</code>
備考
* noneという名前の「特別な」cellZoneは、ゾーンされていないすべてのセルにマッチします。
* pureZoneMixtureは、pureMixture、すなわち非反応の単一成分混合物を使用することを条件に、流体領域に適用することができる。
* 混合物の特性だけが変化することがあります。
* 同じ領域に流体と固体を存在させることはできません。
* pureZoneMixtureは、セルゾーンが同じ混合物特性を持つ場合、pureMixtureと全く同じ結果を得ることができます。
Source code
* $FOAM_SRC/thermophysicalModels/basic/mixtures/pureZoneMixture
Merge request
* MR!586
== ラグランジュの出力制御の改善 ==
ラグランジュモデルが /constant/*CloudProperties ファイルなどのログに書き込む情報量を減らすために、新しいオプションの logFrequency エントリがクラウドソリューション入力辞書に追加されました(例)。
<code>solution
{
    active          true;
    coupled        false;
    transient      yes;
    cellValueSourceCorrection off;
    maxCo          0.3;
    logFrequency    3; // <--- NEW ENTRY
    ...
}</code>
この値は、ラグランジュ位相統計量を報告する間に実行されるキャリア位相時間ステップの数を制御します。
<code>Solving2-D cloud reactingCloud1
Cloud: reactingCloud1
    Current number of parcels      = 994
    Current mass in system          = 0.009735873844
    Linear momentum                = (0.0001652067978 0.0001039875528 0)
    |Linear momentum|                = 0.0001952093676
    Linear kinetic energy          = 0.0001660812145
    Average particle per parcel    = 19.21387643
    Injector model1:
      - parcels added              = 994
      - mass introduced            = 0.01
    Parcel fate: system (number, mass)
      - escape                      = 0, 0
    Parcel fate: patch (walls|cyc.*) (number, mass)
      - escape                      = 0, 0
      - stick                      = 0, 0
    Parcel fate: patch (inlet|outlet) (number, mass)
      - escape                      = 0, 0
      - stick                      = 0, 0
    Temperature min/max            = 275.039299, 275.4193813
    Mass transfer phase change      = 0.000264126156
    Mass transfer devolatilisation  = 0
    Mass transfer surface reaction  = 0</code>
後方互換性を維持するため、デフォルトでは 1 に設定されている。
== 有限面積の改善 faOptions ==
サーマルシェルなどで使用される有限面積オプションが、複数のパッチを正しく処理するようになりました。
* $FOAM_TUTORIALS/heatTransfer/buoyantPimpleFoam/hotRoomWithThermalShell
externalHeatFluxSourceがFunction1仕様に対応しました。
* $FOAM_TUTORIALS/lagrangian/reactingParcelFoam/splashPanelFilm
== 有限面積フィルム接触角力の向上 ==
有限領域 perturbedTemperatureDependentContactAngleForce は dynamicContactAngle に名称変更され、拡張されました。
* 確率的摂動を用いたフィルム速度依存の接触角力計算;および
* 膜厚が限界膜厚を超えると、接触線移動の動きに逆らう力が加わり、ヒステリシスが発生すること。
このモデルの最小限の例を以下に示します。
<code>dynamicContactAngleForceCoeffs
{
    // Mandatory entries
    distribution    <subDict>;
    // Optional entries
    hCrit          <scalar>;  // Critical film height
    // Conditional entries
        // Option-1
        Utheta          <Function1<scalar>>;  // Contact angle vs film speed
        // Option-2
        Ttheta          <Function1<scalar>>;  // Contact angle vs film temperature
    // Inherited entries
    ...
}</code>
下図は、リブレットパネルフローのケースで、左から順に、臨界膜高さ、接触角対膜速度のエントリーを使用した場合の効果を示しています。新しい実装では、右図のようにリブレットが合体する結果となりました。
Source code
* $FOAM_SRC/regionFaModels/liquidFilm/subModels/kinematic/force/contactAngleForce/dynamicContactAngleForce
References
* Meredith, K. V., Heather, A., De Vries, J., & Xin, Y. (2011). A numerical model for partially-wetted flow of thin liquid films. Computational Methods in Multiphase Flow VI, 70, 239.
* Novák, M., Devaradja, R., Papper, J., & Černý, M. (2020). Efficient CFD methods for assessment of water management. In 20. Internationales Stuttgarter Symposium (pp. 151-170). Springer Vieweg, Wiesbaden.
Merge request
* MR!584
== 新有限領域膜垂れ流しモデル ==
Brun膜の滴下モデルは、有限体積膜ライブラリから有限面積ライブラリに移行されました。インジェクションモデルの U/<filmPatch> velocityFilmShell 定義で適用されています、例.
<code>injectionModels
(
    // curvatureSeparation
    BrunDrippingInjection
);
BrunDrippingInjectionCoeffs
{
    deltaStable    1e-3;
}</code>
Source code
* $FOAM_SRC/regionFaModels/liquidFilm/subModels/kinematic/injectionModel/BrunDrippingInjection
Merge request
* MR!580
== 新有限領域膜高さ制限 ==
limitHeight有限領域オプション(faOption)は、フィルムの最大高さをユーザーが指定した値に制限するために、明示的な補正を適用します。
使用例
<code>limitHeight1
{
    type        limitHeight;
    region      velocityFilmShell;
    h          hf_film;
    selectionMode all;
    max        0.001;
}</code>
Source code
* $FOAM_SRC/faOptions/corrections/limitHeight
Merge request
* MR!580
== 新液体フィルム条件付き飛散 ==
ラグランジュ表面膜モデルは、ラグランジュ区画を有限面積および有限体積の膜モデルに転送する役割を担っています。ユーザは新しい parcelTypes エントリを持ち、表面膜と相互作用する区画タイプ ID のリストを記述します。このエントリを省略すると、すべてのパーセルが参加します。
<code>surfaceFilmModel kinematicSurfaceFilm;
kinematicSurfaceFilmCoeffs
{
    interactionType absorb;
    // Optional list of participating parcel IDs
    parcelTypes    (10);
}</code>
インジェクターごとに区画タイプを設定するには、インジェクターモデルを指定する際にinjectorIDエントリーを使用します。
<code>injectionModels
{
    model1
    {
        type            <injectionModelType>;
        // Optional injector ID
        // - if ommitted, parcels use '-1'
        injectorID      10;
        ...
    }
}</code>
Source code
* $FOAM_SRC/lagrangian/intermediate/submodels/Kinematic/SurfaceFilmModel/KinematicSurfaceFilm
Merge request
* MR!581
== 新しい固体反応速度モデル ==
新しい solidIsothermalReactionRate モデルは、solidArrheniusReactionRate モデルと並んで、固体の等温反応速度を提供します。このモデルの最小限の例を以下に示します。
<code>{
    // Mandatory entries
    C      <scalar>;  // Model constant
    Cp      <scalar>;  // Specific heat of solid material (assumed constant)
    Tpc    <scalar>;  // Phase change temperature
    Elat    <scalar>;  // Latent heat of phase change
    // Elat, the latent energy is defined in the present
    // implementation as a negative value (using the convention
    // endothermic process has negative enthalpy.)
}</code>
Source code
* $FOAM_SRC/thermophysicalModels/solidSpecie/reaction/reactionRate/solidIsothermalReactionRate
References
* W.H. Lee, A pressure iteration scheme for two-phase flow modeling, T.N. Veziroglu (Ed.), Multiphase Transport Fundamentals, Reactor Safety, Applications, vol. 1, Hemisphere Publishing, Washington, DC (1980).
* Kharangate, C. R., & Mudawar, I. (2017). Review of computational studies on boiling and condensation. International Journal of Heat and Mass Transfer, 108, 1164-1196.
Merge request
* <code>MR!579</code>
= v2212: 境界条件の追加と更新 =
== 新しい吸着条件 ==
新しい sorptionWallFunction 壁面境界条件は、乱流および層流のスカラー/濃度勾配を指定するために採用することができます。
この境界条件の最小限の例を以下に示す。
<code><patchName>
{
    // Mandatory entries
    type            sorptionWallFunction;
    Sc              <scalar>;
    Sct            <scalar>;
    kAbs            <PatchFunction1<scalar>>;
    // Optional entries
    laminar        <bool>;
    D              <scalar>;
    kName          <word>;
    nuName          <word>;
    // Inherited entries
    Cmu            <scalar>;
    kappa          <scalar>;
    E              <scalar>;
    blending        <word>;
        // Blending options
        // Stepwise (discontinuous) (Foat (2021) - (Eq. 5.3)​)
        // Exponential (smooth) (Foat et al. (2022) - (Eqs. 1-6)​)
        // Binomial (smooth)​
        // Tanh (smooth)​
        // Max (discontinuous)
    ...
}</code>
Source code
* $FOAM_SRC/thermoTools/derivedFvPatchFields/wallFunctions/sorptionWallFunction
References
* 指数関数的なブレンドの標準モデル。
** Foat, T., Drodge, J., Charleson, A., Whatmore, B., Pownall, S., Glover, P., ... & Marr, A. (2022). Predicting vapour transport from semi-volatile organic compounds concealed within permeable packaging. International Journal of Heat and Mass Transfer, 183, 122012. DOI:10.1016/j.ijheatmasstransfer.2021.122012
* ステップワイズブレンディングの標準モデル。
** Foat, T. (2021). Modelling vapour transport in indoor environments for improved detection of explosives using dogs. Doctoral dissertation. University of Southampton. URI:<nowiki>http://eprints.soton.ac.uk/id/eprint/456709</nowiki>
Merge request
* MR!559
= v2212:ポストプロセッシングの新機能と改良点 =
== 新型EnSightメッシュリーダー ==
EnSight Gold メッシュのインポートが ascii およびバイナリ フォーマットでサポートされるようになりました(ファイルの拡張子は '.geo')。インポータは、foamToEnsight コンバータでサポートされているすべてのセル形状を受け入れることができます。サポートされているキーワードは次のとおりです。
* extents
* node id 'given', 'ignore', 'assign'
* node_ids
* element id 'given', 'ignore', 'assign'
* element_ids
* part
* coordinates
* tetra4
* pyramid5
* penta6
* hexa8
* nfaced
* tria3
* quad4
* nsided
ただし、以下のものはサポート対象外です。
* 2D (finite-area) meshes
* block structured meshes
* quadratic elements, e.g. twenty node hexahedron
* faceZones
* baffles
インポーターはすべての部品を読み込み、すべてのセル(tetra3、hexa8 など)を結合し、外側の面を決定します。すべての点は幾何テスト(下記参照)を使ってマージされ、インポーターはすべての面(tria3など)を使って外側の面をパッチします。パッチ名は元の部品名と同じで、不正な単語記号はアンダースコア('_')に置き換えられます。残った外側の面は defaultFaces パッチに追加され、タイプは空になります。
=== オプション ===
* mergeTol: 異なるパーツのポイント間の対応を得るためのオプションのマージ許容値。デフォルトは、すべての点のバウンディングボックスの1e-10です。0を指定すると、点のマージは一切行われません(したがって、パッチングも行われません)。
* scale: 座標に対するオプションのスケーリング。デフォルトはスケーリングなし。スケーリングは、例えば[mm]から[m]への単位変換に便利です。
* keepHandedness: デフォルトでは、メッシュリーダーは負の体積を持つ(非多面体の)セルを反転させます。これは、'zero or negative pyramid volume' という形式の警告メッセージを表示します。このフラグはこのチェックを無効にし、通常の頂点番号付けを使用します。
Source code
* $FOAM_UTILITIES/mesh/conversion/ensightToFoam
== EnSight出力の改善 ==
ファイル名や変数名の取り扱いをより一貫したものに
* 不正で読みにくい名前を避けるため、例えば出力フィールド名PaSR<psiReactionThermo>:QdotはPaSR_psiReactionThermo_Qdotとしてサニタイズされるようになりました。
EnSightの出力を書き込む際に、アトミックファイルオペレーションを使用するようになりました。
* 出力は、すべての書き込みが完了した後、単一の操作としてディスクにコミットされるようになりました。失敗の場合、不完全なファイルや部分的なファイルを避けることができますが、一般的な場合、シミュレーションによって生成されたままのEnSight出力をロードする際の問題も避けることができます。
並列処理性能の向上
* EnSight書き込みルーチンが、1000以上のランクなど、より大きなプロセッサーカウントでのパフォーマンスを向上させるために作り直されました。この変更はスパース性に大きく関係しているため、プロセッサ数が少ない場合には、改善はあまり顕著ではありません。次のグラフは、4096コアで動作する60Mセルのケースで、130フィールドを書き込む場合の性能比較を示しています。
== ensightWrite、vtkWrite関数オブジェクトを改良しました。 ==
ensightWriteとvtkWrite関数オブジェクトがフィールドとパッチの除外をサポートするようになりました。これにより、特に可視化する必要のない外壁、入口/出口などのパッチがブロックされ、foamToEnsightおよびfoamToVTKスタンドアロンアプリケーションと機能がより一致するようになりました。
== サーフェスライターの改善 ==
=== New options ===
* boundaryData writerの出力にFace領域正規値を含めることができるようになり、抽出したデータの後処理を追加でサポートします。
* すべてのサンプリングされたサーフェスは、任意のデカルト座標変換もサポートするようになりました(例)。
<code>formatOptions
{
    vtk
    {
        scale 1000;  // m -> mm
        transform
        {
            // origin  (0 0 0);
            rotationCentre  (1 0 0);
            rotation axisAngle;
            axis    (0 0 1);
            angle  -45;
        }
    }
}</code>
この例で示すように、rotationCentreを指定して、サーフェスをインプレースで回転させることも可能です。この追加トランスフォームにより、通常異なる座標系位置で記述されるコンポーネントサブアセンブリにシミュレーションデータをマッピングすることができます。rotationCentreはtransformPointsやsurfaceTransformPointsの「-centre」オプションと同様に動作し、点の位置から指定量を削除して回転を適用し、最後に新しく回転した点の位置に指定量を追加し直します。
=== Improved parallel performance ===
マージされたフィールドのプロセス間通信は、MPIスケジュール通信を使用するようになりましたが、ユーザーが選択することが可能です。サーフェスマージ情報はフィールドマージに再利用され、毎回サイズを収集するためのMPIコールが追加されるのを回避できます。これらの変更は、表面サンプリングが非常に頻繁に、例えば、毎反復、大きなコアカウントで実行されない限り、顕著ではありません。
== ノイズユーティリティの改善 ==
ノイズユーティリティによって生成されたテキストファイルは、以前の「グラフ」形式から、表面積平均値のヘッダーなど、追加のケース情報を含むより説明的なテキスト形式へと更新されました。
<code># f [Hz] vs P(f) [Pa]                                                           
# Lower frequency: 2.50000000e+01                                               
# Upper frequency: 5.00000000e+01                                               
# Window model  : Hanning                                                       
# Window number : 7                                                             
# Window samples: 128                                                           
# Window overlap %: 5.00000000e+01                                             
# dBRef        : 2.00000000e-05                                               
# Area average  : true                                                         
# Area sum      : 8.99999982e-02                                               
# Number of faces: 400                                                         
# f                P(f)
...</code>
Tutorial
* $FOAM_TUTORIALS/incompressible/pimpleFoam/LES/vortexShed
Merge request
* MR!562
== 新しい乱流解像度品質評価 ==
陰解法LES/DESのグリッド独立性の検討とグリッド適応は、空間分解能とサブグリッドスケールモデリングの固有の結合のため、非自明で難解である。
LES/DES計算のメッシュ要件を評価できるように、新しいresolutionIndex関数オブジェクトは、以下のサブモデルを提供し、単一メッシュの解像度インデックスを提供します。
* 乱流運動エネルギー変数を用いたPope(2000)の指標。
* を用いたCelikら(2005)、Celikら(2009)の指標を使用。
** 実効コルモゴロフ長尺と
** vv
以下に最小限の例を示す。
<code>resolutionIndex1
{
    // Mandatory entries
    type            resolutionIndex;
    libs            (fieldFunctionObjects);
    model          <word>;
    // Conditional entries
        // Option-1: when model == PopeIndex
        // Option-2: when model == CelikNuIndex
        // Option-3: when model == CelikEtaIndex
    // Inherited entries
    ...
}</code>
下図は、Smagorinskyベースのラージ・エディ・シミュレーションと、粗解像度および微解像度における解像度-インデックス・フィールドを示したものである。
Source code
* $FOAM_SRC/functionObjects/field/resolutionIndex
References
* Pope, S. B. (2000). Turbulent flows. Cambridge, UK: Cambridge Univ. Press
* Celik, I. B., Cehreli Z. N., Yavuz I. (2005). Index of resolution quality for large eddy simulations. Journal of Fluids Engineering. 127:949–958.
* Celik, I., Klein, M., & Janicka, J. (2009). Assessment measures for engineering LES applications. Journal of fluids engineering, 131(3)
Attribution
OpenCFD would like to acknowledge and thank Prof. Ismail Celik for his contributions, elaborate suggestions and help, and critical recommendations.
Merge request
* MR!569
== ヒストグラム生成の改良 ==
ヒストグラム関数オブジェクトがリファクタリングされ、2つの新しいサブモデルを含むように拡張されました。
* equalBinWidth: データを同じ幅のビンにグループ化する(以前の動作)
* unequalBinWidth: データを不均等な幅のビンにグループ化します。
以前のタイムステップごとのファイルに基づく出力は、単一のファイルに置き換えられました。
<code>histogram1
{
    type                    histogram;
    // Option-1
    model                  equalBinWidth;
    // Option-2
    model                  unequalBinWidth;
    ...</code>
Source code
* $FOAM_SRC/functionObjects/field/histogram
Tutorial
* $FOAM_TUTORIALS/incompressible/pisoFoam/RAS/cavity
Merge request
* MR!563
== 熱伝達率向上機能オブジェクト ==
HeatTransferCoeff関数オブジェクトがリファクタリングされ、新しいサブモデルであるfaceZoneReferenceTemperatureが導入されました。このサブモデルは、指定されたフェイスゾーンの面積平均温度を参照温度として、熱伝達率を評価します。以下に最小限の使用例を示します。
<code>heatTransferCoeff1
{
    // Inherited entries
    ...
    // Mandatory entries
    htcModel            faceZoneReferenceTemperature;
    referenceFaceZone  <word>;
    // Optional entries
    referenceRegion    <word>;</code>
Source code
* $FOAM_SRC/functionObjects/field/heatTransferCoeff/heatTransferCoeffModels/faceZoneReferenceTemperature
Merge request
* MR!561
== fvOption出力の改善 ==
以下のfvOptionsがファイルへの書き込みをサポートするようになりました。
* velocityDampingConstraint
* limitTemperature
* limitVelocity
書き込みは、以下のような新しいwriteToFileオプションで制御します。
<code>limitVelocity1
{
    type                    limitVelocity;
    ...
    // writeFile entries
    writeToFile            true;</code>
各オプションで生成される出力ファイルの構造を示す例を以下に示す。
velocityDampingConstraint:
<code><case>/postProcessing/<dictionary_name>/<nowiki><time>/velocityDampingConstraint.dat</nowiki>
# UMax          : 10
# Time              nDamped_[count]    nDamped_[%]</code>
limitTemperature:
<code><case>/postProcessing/<dictionary_name>/<nowiki><time>/limitTemperature.dat</nowiki>
# Tmin          : 280
# Tmax          : 310
# Time              nDampedCellsMin_[count] nDampedCellsMin_[%] nDampedCellsMax_[count] nDampedCellsMax_[%]</code>
limitVelocity:
<code><case>/postProcessing/<dictionary_name>/<nowiki><time>/limitVelocity.dat</nowiki>
# UMax          : 10
# Time            nDampedCells_[count]    nDampedCells_[%]    nDampedFaces_[count]    nDampedFaces_[%]</code>
Source code
* $FOAM_SRC/fvOptions/corrections/limitVelocity
* $FOAM_SRC/fvOptions/corrections/limitTemperature
* $FOAM_SRC/fvOptions/constraints/derived/velocityDampingConstraint
Merge request
* MR!577
== turbulenceFields関数オブジェクトの改良 ==
turbulenceFields 関数オブジェクトは、乱流モデルで作成および/または使用される、以下のフィールドへのアクセスを提供します。
* k: 乱流運動エネルギー
* epsilon: 乱流運動エネルギー散逸率
* ω:比誘電率
* nuTilda: 修正乱流粘性率 (Spalart-Allmaras turbulence model)
* mut, nut: 乱流粘性(動的、運動論的)。
* muEff, nuEff: 有効乱流粘性率(動的、運動論的).
* alphat: 乱流熱拡散率
* αEff: 有効乱流熱拡散率
* R: レイノルズ応力テンソル
* DevRhoReff, DevReff: 有効レイノルズ応力の偏差部分 (圧縮性、非圧縮性)
* L: 積分長/混合長販売
* I: 乱流強度
* LESRegion: DESモデルLES地域表示フィールド
* fd: DESモデル遮蔽機能
ここで、LESregionとfdオプションが最新リリースに追加されました。vortexShedのケースからの使用例を以下に示します。
<code>turbulenceFields1
{
    type            turbulenceFields;
    libs            (fieldFunctionObjects);
    writeControl    writeTime;
    fields          (fd LESRegion);
}</code>
Tutorials
* $FOAM_TUTORIALS/incompressible/pimpleFoam/LES/vortexShed/system/controlDict
Source code
* $FOAM_SRC/functionObjects/field/turbulenceFields
= v2212:並列動作の改善 =
== GAMGアグロメレーションのための新しいマルチマスタープロセッサのサポート ==
GAMG線形ソルバーは、masterCoarsestプロセッサ・アグロメレーター・メソッドを使用した、最も粗いレベルでのプロセッサ・アグロメレーションをサポートしています。これにより、通信がなくなり、暗黙性が高まりますが、最粗レベルのサイズが大きくなるため、コア数が多い場合には性能が低下します。
=== 複数のマスタープロセッサーに対応するmasterCoarsestを拡張。 ===
次の表は、マスター・プロセッサの数を変化させたときのタイミング結果です。ここでは、1728プロセッサを担当するマスター1台からスタートし、36プロセッサを担当するマスターを48台まで増やした場合の結果を示しています。
{| class="wikitable"
!Coarsest level procs
!run1 (s)
!run2 (s)
|-
|1 (1728)
|193
|219
|-
|2 (864)
|141
|156
|-
|-
|4 (432)
|167
|126
|-
|-
|8 (216)
|135
|114
|-
|-
|16 (108)
|140
|126
|-
|-
|48 (36)
|247
| -
|}
Run 2では、複数のマスタープロセッサーを使用した場合に、強い効果が得られることが示されました。結果は、クラスタ構成や、ローカル計算と通信/明示のコストバランスに敏感であることに注意してください。
上記のテストは、複雑な辞書スクリプトを使用して、手動でプロセッサをアグロメレートして実行されていました。v2212では、これは新しいnMastersまたはnProcessorsPerMasterキーワードを使用して、masterCoarsestプロセッサのアグロメレーションに統合されました。
<code>{
    solver          GAMG;
    ..
    processorAgglomerator  masterCoarsest;
    nCellsInCoarsestLevel  1;
    nMasters                2;
}</code>
system/controlDictのデバッグスイッチで
<code>DebugSwitches
{
    // Print number of processors per master
    masterCoarsest      1;
    // Print agglomeration
    GAMGAgglomeration  1;
}</code>
17台のプロセッサに分割した簡単なケースで、プロセッサアグロメレーションを使用した場合の効果を見ることができます。
<code>masterCoarsest : agglomerating
    master  procs
    0      9 (1 2 3 4 5 6 7 8)
    9      8 (10 11 12 13 14 15 16)
GAMGAgglomeration:
    local agglomerator    : faceAreaPair
    processor agglomerator : masterCoarsest
                              nCells      nFaces/nCells        nInterfaces    nIntFaces/nCells    profile
    Level  nProcs        avg    max        avg    max        avg    max        avg    max        avg
    -----  ------        ---    ---        ---    ---        ---    ---        ---    ---        ---
        0      17        719    725      1.922  1.926      3.529      5      0.1093  0.1335  1.797e+04
        1      17        359    362      1.966  2.109      3.529      5      0.1864  0.2632        7291
        2      17        176    181      2.352  2.769      3.529      5      0.272  0.436        2810
        3      17          86      90      2.344  2.593      3.529      5      0.4415  0.7738      930.4
        4      17          42      44      2.291  2.442      3.529      5      0.6747    1.22      320.9
        5      17          20      22      2.094  2.286      3.529      5      0.967  1.895      98.41
        6      17          9      11      1.741      2      3.529      5        1.35  2.444          29
        7      17          4      5      1.149    1.6      3.529      5      2.082    3.5          6
        8      2          15      18      1.585  1.615          1      1      0.5962  0.6923          40
        9      2          8      9      1.417    1.5          1      1      0.7083    0.75          15</code>
Tutorials
* $FOAM_TUTORIALS/compressible/rhoSimpleFoam/squareBendLiq (use of masterCoarsest)
Source code
* $FOAM_SRC/OpenFOAM/matrices/lduMatrix/solvers/GAMG/GAMGProcAgglomerations/masterCoarsestGAMGProcAgglomeration
== 有限領域メッシュ作成の改良 ==
makeFaMeshユーティリティによる有限面積メッシュの並列作成がより堅牢になりました。変更点は以下の通りです。
* 等価な有限領域マッピングを作成する前に、ボリューム faceProcAddressing の存在を確認すること。
* 分散ファイルルートによるフィールドの分解をサポート。
= v2212:使い勝手を改善しました。 =
== makeとコンパイルの改善 ==
ビルドシステムには、以下のような複数のメンテナンスアップデートが適用されています。
* 生産終了アーキテクチャのメイクルール削除
* 富士通ARMのfast-mathとunsafe-mathの最適化の削除、および
* wmake -debug の追加制御
openmpのコンパイルサポートを改善しました。
また、WM_COMPILE_CONTROL変数に対応するエントリーを追加することで、openmpの使用をグローバルに有効/無効にすることができるようになりました。
<code>WM_COMPILE_CONTROL="+openmp" # with openmp enabled
WM_COMPILE_CONTROL="~openmp" # with openmp disabled</code>
両方指定した場合は、~openmp の無効化が優先されます。単発で使用する場合は、対応する wmake オプションで代用できます。
<code>wmake -openmp # with openmp enabled
wmake -no-openmp # with openmp disabled</code>
これは、openmp サポートの有無にかかわらず、コンパイル時に役立ちます。
ccacheのラッピングに対応
ccache コンパイラ・キャッシュを使用すると、再コンパイルを高速化することができます。WM_COMPILE_CONTROL に追加することで、簡単に選択することができます。
<code>WM_COMPILE_CONTROL="+ccache"</code>
同じメカニズムで、コードインスツルメンテーションを追加することもできる。この場合、長い形式は WM_COMPILE_CONTROL で指定される。
<code>WM_COMPILE_CONTROL="ccache='/path/my-tooling --option'"</code>
wmakeの追加コントロール
コントロールの全リストは、以下を使用して入手できます。
<code>wmake -help-full</code>
特に注目すべきは、完全なデバッグチェックによるコンパイル(例:アウトオブバウンド、最適化なし
<code>wmake -debug-O0</code>
これらのオプションは、例えば12コアを使用してコンパイルする場合など、通常のオプションと組み合わせることができます。
<code>wmake -debug-O0 -j 12</code>