OpenFOAM v6.0 リリースノート

提供:オープンCAEWiki OpenCAE Wiki
2019年7月14日 (日) 22:31時点におけるMmer547 (トーク | 投稿記録)による版
ナビゲーションに移動 検索に移動

OpenFOAM 6 Released OpenFOAM Foundationは、OpenFOAMオープンソースCFDツールボックスのバージョン6のリリースを発表しました。バージョン6は、持続可能な開発を通じて常に解放可能なOpenFOAM開発バージョンのスナップショットです。ユーザビリティ、堅牢性、および拡張性に対する厳しい要求を伴い、既存のコードに新しい機能と大きな改善をもたらします。


OpenFOAM 6には次の重要な開発が含まれています。


  • 共役熱伝達(CHT):使い易さが向上し、設定と運転が簡単になりました。
  • 回転/スライディングジオメトリ:より強固なAMI、定期的なケースのサポート
  • パーティクルトラッキング:最適化された計算と堅牢性の向上。
  • 多相モデルの反応:相変化、反応、抗力、分裂、合体など
  • 反応/燃焼:速く、完全な代数的ヤコビ行列、重要なコード再設計
  • その他のモデル:水波とフィルム、乱気流、熱物性、大気の流れ
  • 一般:新しい境界条件、関数オブジェクト、改良されたコードコンパイルなど
  • OpenFOAMを使用したより生産的なCFDのためのツール。
  • 約750件のコードコミット、350件以上の解決済みの問題
  • ISO / IEC 14882:2011(C ++ 11):GCC v4.8 +、Clang v3.7 +、Intel ICC v17.0.4 +でテスト済み。


OpenFOAM 6は、次のプラットフォーム用にパッケージ化されています。


  • Ubuntu Linux:Ubuntu 14.04、16.04、および18.04のパッケージインストール。
  • その他のLinux:Dockerコンテナによるインストール。またはソースコードからのコンパイル。
  • Windows 10:UbuntuパッケージのLinux用Windowsサブシステムを使用したインストール。
  • macOS:Dockerコンテナを使ったインストール。


OpenFOAM 6ソースパックは、適切なLinuxプラットフォームでコンパイルできます。


Heat Transfer

  • Solvers: chtMultiRegionFoam共役熱伝達(CHT)ソルバは、定常状態と一過性の両方の解を実行します(chtMultiRegionSimpleFoamを非推奨)[コミット283f8b]。chtMultiRegionFoam [コミット7c237a]に反応と燃焼のオプションを追加しました。
    • [コミット283f8b]chtMultiRegionFoam:簡単な操作と遷音速スイッチマルチリージョンPIMPLEコントロールがchtMultiRegionFoamに適用されました
    • ソリバー、遷音速オプションが実装されています。新しいPIMPLEコントロールは、ソルバーがSIMPLEモードで動作するようにします。ザ
    • ライブラリソリューションの利用とコンバージェンス制御機能
    • ソルバー内のコード量を大幅に削減しました。ザ
    • chtMultiRegionSimpleFoamソルバも廃止され、
    • したがって削除されました。いくつかの変更は、既存の
    • chtMultiRegionSimpleFoamの場合はchtMultiRegionFoamになります。すべてのSIMPLE
    • system/<regions>/fvSolution のサブディクショナリは、
    • 名前がPIMPLEに変更されました。 system / fvSolutionファイルにも空が必要です
    • PIMPLEサブディクショナリ。さらに、追加の "<variable> Final"ソルバ
    • リラクゼーション・エントリーが必要になります。安定したケースでは、
    • ワイルドカードで終わる "。*"は、変数名に十分なはずです。安定した場合に適切な解パラメータを以下に示します。
    solvers
    {
        "p_rgh.*"
        {
            solver           GAMG;
            tolerance        1e-7;
            relTol           0.01;
            smoother         DIC;
            maxIter          10;
        }

        "(U|h|e|k|epsilon).*"
        {
            solver           PBiCGStab;
            preconditioner   DILU;
            tolerance        1e-7;
            relTol           0.1;
        }
    }

    PIMPLE
    {
        // ...
    }

    relaxationFactors
    {
        fields
        {
            "p_rgh.*"       0.7;
        }
        equations
        {
            "U.*"           0.5;
            "(h|e).*"       0.3;
            "(k|epsilon).*" 0.2;
        }
    } 
    • [コミット7c237a]chtMultiRegionFoam:反応のサポートを追加しましたchtMultiRegionFoamは、流体中での反応/燃焼モデリングをサポートするようになりました
    • reactingFoamと同じ方法で領域を分割します。
  • Case Setup: foamSetupCHTユーティリティを使用してCHTケースのケースファイルを生成する[コミット5eb746]; singleFluidCHTテンプレートケースで、CHTシミュレーションの作成を簡素化し、冷却用のチュートリアル[コミットa86333]を添付します。 メッシュを使った加熱教師練習はsnappyHexMesh [コミット719d56]を使って生成されました。
    • [コミット5eb746]
      • foamSetupCHT:共役熱伝達ケースのセットアップアプリケーション
      • coolingSphereのチュートリアルの例を添付してください。
    • [コミットa86333]
      • singleFluidCHT:共役熱伝達のテンプレートケース


このテンプレートは、新しいfoamSetupCHTユーティリティで動作するように設計されています。 これは、単一の流体領域(および複数の流体領域 固体領域); 複数の流体を使用する場合にも適用できます 地域。 詳細は、付属のREADMEファイルを参照してください。 [コミット719d56] chtMultiRegionFoam:heatedDuctチュートリアルを追加


これは、snappyHexMeshを使用するCHTケースです。 チュートリアルです 教育目的のために設計されている点で、従来の意味で使用されていました。 それは、ディクショナリ、サーフェスユーティリティ、または広範なものに依存しません スクリプティング Data Processing: 複数領域シミュレーションにおける個々の領域の関数オブジェクト[コミットa5a034]; 壁の熱伝達係数を計算するwallHeatTransferCoeff関数オブジェクト[コミット99841e]; wallHeatFluxでは、熱流束計算[コミット6584fa]の改善された効率と放射熱流束の修正された寄与[コミット396259]。 [コミットa5a034] functionObjectList :: findDict:リージョン固有のfunctionObject指定のサポートが追加されました。例えば

postProcess -func sample -region bottomWater

検索する前にsystem / bottomWater / sample辞書を検索します システム/サンプルの場合は、サンプリングのフィールドとタイプをオプションで指定できます 特定の地域に対して異なって指定されています。

[コミット99841e] wallHeatTransferCoeff:壁の熱伝達係数を計算するための新しいfunctionObjectsimpleFoam、pimpleFoam、またはpisoFoamを使用してシミュレートされる非圧縮フローの場合。説明 推定された非圧縮性の流れ伝熱を計算して書き出します。 volScalarFieldフィールドとしてのウォールパッチの係数 'wallHeatTransferCoeff'すべてのウォールパッチがデフォルトで含まれています。 計算を制限する 特定のパッチは、オプションの 'patches'エントリを使用します。

関数オブジェクト指定の例:

    wallHeatTransferCoeff1
    {
        type        wallHeatTransferCoeff;
        libs        ("libfieldFunctionObjects.so");
        ...
        region      fluid;
        patches     (".*Wall");
        rho         1.225;
        Cp          1005;
        Prl         0.707;
        Prt         0.9;
    }

Usage

    Property | Description                   | Required | Default value
    type     | Type name: wallHeatTransferCoeff | yes   |
    patches  | List of patches to process    | no       | all wall patches
    region   | Region to be evaluated        | no       | default region
    rho      | Fluid density                 | yes      |
    Cp       | Fluid heat capacity           | yes      |
    Prl      | Fluid laminar Prandtl number  | yes      |
    Prt      | Fluid turbulent Prandtl number| yes      |

注意 フィールド 'wallHeatTransferCoeff'の書き込みはデフォルトで行われますが、 空の\ cオブジェクトリストを定義することでオーバーライドされます。 詳細は writeLocalObjects。

[コミット6584fa] functionObjects :: wallHeatFlux:熱流束のより効率的な評価フィールド補間とsnGrad仕様の必要性を回避し、 評価。 [コミット396259] wallHeatFlux:放射熱流の寄与の変化の兆候このフラックスの一貫性のない定義を補償する Multi-Region: マルチリージョンソルバのソリューションコントロール[コミット4c8122]。 transformPoints [コミット0c4562]に-allRegionsオプションを追加しました。 [コミット4c8122] solutionControl:マルチリージョンおよびPIMPLEタイムループコントロールソリューションコントロールは、マルチリージョンで使用するために書き直されました ソルバ、およびPIMPLE流体/固溶体制御が実装されています この枠組みの中で。PIMPLEには、タイムループコンバージェンス制御機能が備わっています。 一定の初期残差に達するとシミュレーションを終了する。 この PIMPLEソルバは、同等のコンバージェンス制御で実行できます。 簡単なソルバー。 コレクタループコンバージェンス制御は引き続き利用可能ですが、 タイムループ制御と同時に使用することができます。PIMPLEの「residualControl」サブディクショナリには、 シミュレーションのタイムステップの最初の解決に必要な値 終わり。 この動作はSIMPLEと同じです。 ザ "outerCorrectorResidualControl"サブ辞書には許容誤差が含まれています 補正ループが終了するために必要とされる。と例の仕様 両方のタイプのコントロールが以下に示されています。

PIMPLE
{
    // ...

    residualControl
    {
        p               1e-3;
        U               1e-4;
        "(k|epsilon|omega)" 1e-3;
    }

    outerCorrectorResidualControl
    {
        U
        {
            tolerance       1e-4;
            relTol          0.1;
        }
        "(k|epsilon|omega)"
        {
            tolerance       1e-3;
            relTol          0.1;
        }
    }
}


既存のPIMPLE "residualControl"エントリは、 「outerCorrectorResidualControl」という名前に変更されました。

ソルバ内のアプリケーションもやや変更されています。 持っている 時間ループ全体の収束制御、 solutionControl :: loop(Time&)メソッド(または同等の実行メソッド)は 利用される; すなわち、

    while (simple.loop(runTime))
    {
        Info<< "Time = " << runTime.timeName() << nl << endl;

        // solve ...
    }

もしくは、

    while (pimple.run(runTime))
    {
        // pre-time-increment operations ...

        runTime ++;
        Info<< "Time = " << runTime.timeName() << nl << endl;

        // solve ...
    }

[コミット0c4562] transformPoints:-allRegionsオプションを追加しました-allRegionsオプションを使用すると、 constant / regionPropertiesが変換されます。 Parallel Running: decomposeParは、マルチリージョンのケースで新しい分解のために改良された[コミット6a417d]; decomposeParおよびreconstructPar [コミットd0dfb1]およびrecontructParMesh [コミット35326b]の合理化された-allRegionsオプション。 [コミット6a417d] decomposePar:-allRegionsオプションを指定して-forceオプションのサポートを追加する [コミットd0dfb1] decomposePar:-allRegionsオプションを指定して-forceオプションのサポートを追加する [コミット35326b] reconstructParMesh:-allRegionsオプションを追加


Thermal Radiation: T^4を平均化することによってビューファクター放射の一貫した熱流束を作った[コミット337176]。 blackBodyEmissionモデル[コミットbf74d1]の修正された非結合境界値。 externalWallHeatFluxTemperature BC [コミット6c5607]での輻射伝熱の補正された表面放射率。 [コミット337176] viewFactor:一定の熱流束のためにTではなく平均T ^ 4 [コミットbf74d1] blackBodyEmission:連結されていない境界値を修正する [コミット6c5607] externalWallHeatFluxTemperature:放出と吸収の両方に表面放射率を使用する Arbitrary Mesh Interface Performance/Numerics: スペースを完全に埋め込む新しいsweptFaceAreaWeightAMIprojectionメソッド[コミット889329]; オーバーラップ領域と正規化領域が一貫していた[コミットdb8751]。 [コミット 889329] AMI:AMMethodをpolyPatch辞書から選択できるようにしました。


結合されたAMIパッチ間の領域の重なりを計算する方法 実行時にpolyPatch辞書から選択できるようになりました。 この 主に新しい掃引AMIの選択を容易にするために行われた 方法。 選択は、定数/ポリメッシュ/境界内で行うことができます

ファイルを次のようにします。

   AMI1
    {
        type            cyclicAMI;
        inGroups        2(cyclicAMI rotating);
        nFaces          524;
        startFace       37176;
        matchTolerance  0.0001;
        transform       unknown;
        neighbourPatch  AMI2;
        method          sweptFaceAreaWeightAMI; // <-- new entry
    }
    AMI2
    {
        type            cyclicAMI;
        inGroups        2(cyclicAMI rotating);
        nFaces          524;
        startFace       37700;
        matchTolerance  0.0001;
        transform       unknown;
        neighbourPatch  AMI1;
        method          sweptFaceAreaWeightAMI; // <-- new entry
    }

これは、パッチの仕様セクション内で行うこともできます。 blockMeshDict内、またはcreateBafflesDict内にあります。


デフォルトはfaceAreaWeightAMIメソッドのままです。 [コミットdb8751] AMI:重複/正規化領域間の一貫性


パッチのmagSf計算が変更され、同じものを使用する オーバーラップアルゴリズムとしての三角測量。 これにより、一貫性と パッチを正確に適合させるために(通常はメッシュの前に モーション)、ウェイトは正規化を必要としません。 Other:cyclicRepeatAMIは、周期的なジオメトリを有する回転/移動セクションを有するシミュレーションを可能にする。 ミキサー、タービンなどのセクターメッシュの場合[コミット785a7d]。 [コミット785a7d] cyclicRepeatAMI:新しい制約パッチの種類


AMI結合を可能にする新しい制約パッチが追加されました。 サイクリックジオメトリ。カップリングは、異なる倍数の 完全な対応を達成するための循環変換。 これにより、例えば、円柱状のAMIインタフェースを 回転ジオメトリのセクタ。


このパッチは、cyclicAMIと同様の方法で使用されますが、 追加エントリ "transformPatch"。このエントリは、 パッチ。 AMI結合を繰り返すために使用される変換は、 このパッチ。たとえば、system / blockMeshDictの場合は次のようになります。

boundary
(
    cyclic1
    {
        type cyclic;
        neighbourPatch cyclic2;
        faces ( ... );
    }

    cyclic2
    {
        type cyclic;
        neighbourPatch cyclic1;
        faces ( ... );
    }

    cyclicRepeatAMI1
    {
        type cyclicRepeatAMI;
        neighbourPatch cyclicRepeatAM2;
        transformPatch cyclic1;
        faces ( ... );
    }

    cyclicRepeatAMI2
    {
        type cyclicRepeatAMI;
        neighbourPatch cyclicRepeatAMI1;
        transformPatch cyclic1;
        faces ( ... );
    }

    // other patches ...
);

この例では、cyclic1とcyclic2の間の変換が使用されています 2つのcyclicRepeatAMIパッチが使用する繰り返しを定義します。 cyclic1とcyclic2のどちらが変換パッチとしてリストされているかは、 重要。


チュートリアル、非圧縮性/ピンプルフォーム/ RAS /インペラーが追加されました 機能性を実証する。これには2つの繰り返しAMIペアが含まれます。 1つは円筒形で1つは平面状です。


相当量のメンテナンスがAMIで実施されており、 この作業の一環としてACMIパッチを適用します。 AMIメソッドが戻る デフォルトでは無次元の重み付けを使用しているため、 建設中の重量フィールドの単位。大量の 重複したコードは、ACMIクラスを 彼らのAMIの同等物。 AMIウェイトの報告と作成にも 統一されました。 General Multiphase Performance/Numerics: 制限がフィールドとして指定できるように拡張されたMULESアルゴリズム[コミットf2cc03]; PhaseLimitStabilization fvOptionは、位相トランスポート方程式を安定化します[コミット38e33e]。 [コミットf2cc03] MULES:不均一な制限と追加の制限の合計


MULESとCMULESが拡張され、制限を提供できるようになりました フィールドとして。 これらの引数は、zeroField、oneFieldまたは UniformField <スカラー>はスカラー値の代わりに使用できます。 追加のオーバーヘッド。 フラックス引数は、 無制限のCMULESはこのテンプレート化を行うために関数を修正します 可能。


MULESには追加の制限合計も追加されています。 この 相分率に比例して設定することによって磁束和を制限し、 フラックスの大きさを同じ符号で減らすのではなく 不均衡として 新しい手順は、フラックスを制限することを可能にする 制約の存在下での ゼロ。 [コミット38e33e] fvOptions :: PhaseLimitStabilization:位相トランスポート方程式を安定化する新しいfvOption


相分率の限界で -> 0


マクスウェル非ニュートン層流応力モデルを使用する場合に使用できます 多相ソルバ。 Compressible: compressibleInterDyMFoamのメッシュを移動するための改善された保存[コミット852726]; compressibleInterFoam [コミット1d38e1]の圧力作業エラーの蓄積を回避します。 補正された遷音速フローオプション[コミット862fa9]; 混合乱流における修正された熱拡散率[コミット332f94]; 2相モーメントストレスモデリング[コミット4b5a10]を追加しました。 [コミット852726] compressibleInterDyMFoam:モーフィングメッシュケースの保存の改善 [コミット1d38e1] compressibleInterFoam:改善された圧力作業期間


連続性誤差による圧力作業誤差の蓄積を回避する。 PIMPLEループ中に修正されます。 [コミット862fa9] compressibleInterFoamファミリ:遷音速オプションの修正 [コミット332f94] compressibleInterFoam:混合乱流モデルによる熱拡散率の補正 [コミット4b5a10] compressibleInterPhaseTransportFoamからの2相モーメントストレスモデリングを統合


新しい運動量ストレスモデルセレクタークラス compressibleInterPhaseTransportModelはオプション間の選択に使用されるようになりました:


説明     compressibleInterFoamファミリーのトランスポートモデル選択クラス     ソルバー。


    デフォルトでは、標準的な混合物輸送モデリング手法が     単一モーメントストレスモデル(層流、非ニュートン、LESまたはRAS)が     混合物のために構築される。しかし、\ c simulationTypeが     constant / turbulencePropertiesが\ c twoPhaseTransportに設定されています     オイラー・オイラーの2相輸送モデリング手法が使用されています。     ストレスモデル(層流、非ニュートン、LESまたはRAS)は、それぞれについてインスタンス化されます     位相の異なるモデリングを可能にする。


混合物および2相モーメントストレスモデリングは、 compressibleInterFoam、compressibleInterDyMFoam、およびcompressibleInterFilmFoamです。 プロトタイプのcompressibleInterPhaseTransportFoamソルバは不要になりました。 削除されました。 Marine/Waves: 新しいStokes5と孤立波モデル[コミット079c4c]; wavevelocityと[コミットb6af3a] waveの精度の向上境界での逆流の場合の圧力境界条件[コミットd9fc7e]; 波境界条件計算のための追加制御[コミット8144cf]; 滑らかなスタートアップ[コミットa80da1]のために、境界内および内部での速度ランピング。 波の垂直方向の減衰を徐々に増加させる空間的な傾斜[コミットd2175f8]; 波形シミュレーションの[vertical commit]には、verticalDamping fvOptionが記録されています[コミット94465b]。 [コミット079c4c] waves:Stokes5と孤立波モデルを追加 [コミットb6af3a] waveVelocity:逆流処理の改善 [コミットd9fc7e] waves:圧力 - 速度境界配合


wavePressure境界条件が追加され、Airyタイプの波 非定常圧力場を生成するためにモデルが拡張されました。 この 境界で波動を指定するための別のオプションを提供します。


waveVelocity条件が単独で使用される場合、任意の出口フロー 要求される流速に合うように外挿してスケーリングする。 これは flowRateOutletVelocity条件がどのように機能するかと同様です。

0/U:

    <patchName>
    {
        type        waveVelocity;
        // wave parameters ...
    }

0/p_rgh:

    <patchName>
    {
        type        fixedFluxPressure;
    }

waveVelocityが新しいwavePressureと一緒に使用される場合 条件を設定すると、値を設定し、もう一方は勾配を設定します。 流れの方向に適している。

0/U:

    <patchName>
    {
        type        waveVelocity;
        // wave parameters ...
        p           p_rgh;
    }

0/p_rgh:

    <patchName>
    {
        type        wavePressure;
    }

この新しい圧力速度配合物は、より安定性が低いが、 ベロシティが逆転するパッチ上のより正確な波形。 それは 速度を周囲に固定するサブサーフェイスの場合にも必要です ドメイン全体が連続性エラーを生成します。

[コミット8144cf] waves:コントロールの追加


"inletOutlet"スイッチが波速度境界に追加されました 可能な限り境界を固定するための条件 対応するアルファ条件。


波重畳に「heightAboveWave」オプションが追加されました 波より上の高さに基づいて速度を計算するクラス 原点よりも高い。 これは初期化を改善するかもしれないが、 初期速度場で発散を発生させる。


アルファ条件も完了しているため、 流れが指摘されたときのモデル化された勾配と波圧条件 使用中です。 [コミットa80da1] マルチフェーズシミュレーションのためのランピング機能を追加


outletPhaseMeanVelocityとwaveVelocityの境界条件が変更されました 機能を提供できる「ランプ」キーワードをサポートする 徐々に入力速度を上げてください。 以下はその例です コンセントパッチの仕様:

    outlet
    {
        type            outletPhaseMeanVelocity;
        Umean           2;
        ramp
        {
            type            quarterSineRamp;
            start           0;
            duration        5;
        }
        alpha           alpha.water;
    }

新しいvelocityRamping関数オブジェクトもあります。 ドメインのボリューム内で力を一致させるので、全体の流れ 動作状態までスムーズに加速される。 例 仕様は次のとおりです。

    velocityRamping
    {
        type        velocityRamping;
        active      on;
        selectionMode all;
        U           U;
        velocity    (-2 0 0);
        ramp
        {
            type        quarterSineRamp;
            start       0;
            duration    5;
        }
    }

これらの追加は、よりスムーズな起動を容易にするように設計されています。 スラミング・トランジェントを避けることで 均一速度場を初期化する。

[コミットd2175f8] fvOptions:verticalDamping:空間ランピングが追加されました垂直方向の減衰の開始は、今度は遠隔で卒業することができます。 ザ ユーザは、目盛りの原点と方向を指定する 目盛りの形態を指定するためのランプ関数とを含む。 アン fvOptionの仕様の例は次のとおりです。

    verticalDamping1
    {
        type            verticalDamping;

        selectionMode   all;

        origin          (1200 0 0);
        direction       (1 0 0);
        ramp
        {
            type        halfCosineRamp;
            start       0;
            duration    600;
        }

        lambda          [0 0 -1 0 0 0 0] 1; // Damping coefficient

        timeStart       0;
        duration        1e6;
    }

原点、方向、またはランプ入力が省略されている場合、fvOption 以前と同じように機能する。 ダンピングをボリューム全体に適用するか、または 指定されたセルセット。

[コミット94465b]  verticalDamping:展開されたドキュメント Film Modelling: ワックス/溶剤をフィルムモデリングに添加し、溶媒蒸発をサポートする[コミット7f6687]; reactingParcelFilmFoam [コミット9d928c]にローカルタイムステッピングオプションを追加し、ソルバーをreactingParcelFoamにマージしました[コミット82675f]; 更新されたsprayFoam [コミット125a4]。 [コミット7f6687]  surfaceFilmModels :: waxSolventEvaporation、waxSolventViscosity:新しいワックス/溶媒フィルムモデルワックスフィルムからの溶媒の蒸発を支持し、 溶媒含量の減少によって引き起こされる粘度である。 [コミット9d928c]  reactingParcelFilmFoam:LTSサポートを追加しました [コミット82675f] reactingParcelFilmFoamをreactingParcelFoamに結合しました


統合されたソルバには、最も高度で一般的な機能が含まれています。 各ソルバは、

    Continuous phase
    Lagrangian multiphase parcels
    Optional film
    Continuous and Lagrangian phase reactions
    Radiation
    Strong buoyancy force support by solving for p_rgh

reactingParcelFoamチュートリアルとreactingParcelFilmFoamチュートリアルが結合されました 更新されました。 [コミット125a4]  sprayFoam:reactingParcelFoamの次の変更が更新されました Reacting Multiphase ドラッグ結合と改善された問題の改善[コミットba8438]; reactingTwoPhaseEulerFoam [コミット799861]からのスタッガリング(「リンギング」)を除去しました。 [コミットba8438]  reactingEulerFoam:多相部分削除と再編成


多相オイラー・オイラーの部分的な除去が実装されました ソルバー。これは、計算時にドラッグシステムの線形解を行います 圧力の解の後の流束および速度補正 方程式。これにより、イベントにおけるソリューションの動作が改善されます ドラッグ結合が高いことを示す。それは、 PIMPLE制御辞書内の "partialElimination"スイッチを fvSolution。


暴露を取り除くために再組織化も行われている トップレベルソルバーからのサブモデリング。ループするのではなく ドラッグ、バーチャルマス、リフトなど...、モデルを直接、ソルバーが呼び出す 異なる力の項をグループ化するフェーズシステムの方法のセット。 これらの新しいメソッドは、MomentumTransferPhaseSystem.Hに記載されています。たくさんの このグループ化の結果、他のアクセサが削除されました。


フェイスベースのアルゴリズムではないバグも修正されました 与えられた界面質量に関連する運動量を伝達する 転送。 [コミット799861]  reactingTwoPhaseEulerFoam:仮想質量時間微分にddtCorrを追加しました


これにより、磁束速度デカップリング(「スタッガリング」)のクラスが削除されます。 仮想質量、揚力および乱流分散力間の相互作用。 reactingMultiphaseEulerFoamの定常位相モデル[コミットe35282]; 別の相と同じ流体の異なる液滴サイズを扱うために追加された相間移動構造[コミット85a9e1]; 分散された液滴相をフィルム相に転写するための堆積モデル[コミット1fd4ec]。 [コミットe35282]  reactingMultiphaseEulerFoam:固定相選択可能なオプションとして2つの新しいフェーズモデルが追加されました reactingMultiphaseEulerFoam; pureStationaryPhaseModelおよび pureStationaryその他のモデルモデル。これらのフェーズでは、 速度およびそれらの位相分率は、 シミュレーション。これらは、静的粒子床のモデリングに使用することを意図しています および既存のオイラー・オイラーによる他の形態の多孔質媒体 伝達モデル(ドラッグ、熱伝達など)。この機能は以下に拡張されていないことに注意してください。 reactingTwoPhaseEulerFoam、または反応しない* EulerFoamソルバを使用します。位相モデルの追加メンテナンス作業が実施されました 位相システム構造。システムは、以下のサブセットをループすることができます。 特定の機能を持つフェーズ(移動、マルチコンポーネントなど) 方程式や変数の存在をテストするのを避けるために トップレベルソルバ物質移動の取り扱いとその効果 位相ごとのソース・タームは、重複を減らすためにリファクタリングされています。 Const phaseプロパティへの非constアクセスは、名前の変更によって形式化されています "Ref"という接尾辞を持つ非constアクセサは、他のものと一貫しています 最近のtmpやGeometricFieldなどのクラスへの展開 その他。より詳細なサブモデリングの詳細は、 インタフェースのサイズを縮小し、抽象化を改善する。 [コミット85a9e1]  reactingEulerFoam:フェーズ転送構造の追加フェーズシステム階層に追加のレイヤーが追加されました。 相転移モデリングの適用を容易にする。これらは 熱結合なしで相間で質量を交換するモデル 相変化を表すために必要とされる。彼らは考えることができる 表現が変わると、例えば、 同じ物理的流体の異なる液滴サイズ。これを容易にするために、熱伝達相システムが改変されている 名前が変更され、現在は両方とも一括転送をサポートしています。両面版 相変化をサポートする導出にのみ必要です。ケース設定の変更点は次のとおりです。- 最も簡単なインスタンス化されたフェーズシステムは、 basicTwoPhaseSystemとbasicMultiphaseSystemです。ザ heatAndMomentumTransfer *定数/ phasePropertiesファイルのシステムエントリ それに応じて更新する必要があります。

- phaseTransferサブモデルのエントリは、 定数/ phasePropertiesファイル。これは空のリストにすることができます。

- 熱相変化の場合のmassTransferスイッチの名前が変更されました phase transfer、物質移動モデルと混同しないように インタフェース構成のケースで使用されます。

[コミット1fd4ec]  phaseTransferModels:デポジットモデルの追加


このモデルは、分散された液滴相を膜相に速度 第3の相との交点に対して相対的に小さい。 第3段階は 「表面」と呼ばれる。 定数/フェーズプロパティで有効にすることができます。 以下:

    phaseTransfer
    (
        (droplets and film)
        {
            type            deposition;
            droplet         droplets;
            surface         solid;
            efficiency      0.1;
        }
    );

効率は経験的因子であり、これは 液滴が表面相の周りを流れる結果としての衝突、および 影響を合体させない。 With HZDR: Laakkonenら(2006)分裂モデル[コミット9de5f9]; CoulaloglouとTavlarides(1977)の合体モデル[コミットec9ca0]; Prince and Blanch(1990)合体モデル[コミット018da5]; Sauter平均直径計算の安定性の改善[コミットee6216]; phaseForces関数オブジェクトは、特定のフェーズに作用するブレンド界面力を計算します[コミットe6c224]。 [コミット9de5f9] reactingEulerFoam:Laakkonenら(2006)分裂モデルを追加


Helmholtz-Zentrumの流体力学研究所が提供したパッチ ドレスデン - ロッセンドルフ(HZDR) [コミットec9ca0] reactingEulerFoam:CoulaloglouとTavlarides(1977)合体モデルを追加しました


Helmholtz-Zentrumの流体力学研究所が提供したパッチ [コミット018da5] populationBalanceModel:PrinceとBlanch(1990)合体モデルの追加


Helmholtz-Zentrumの流体力学研究所が提供したパッチ ドレスデン - ロッセンドルフ(HZDR) [コミットee6216] reactingEulerFoam:改良されたSauter平均直径計算


Sauterの平均直径計算はより安定するように修正されました 消滅相分の限界内にある。 全体の計算 母集団のSauter平均直径二つ以上を含むBalance velocityGroupが削除されました。 この計算は、位相 画分がゼロになると安定しません。 全般的に Sauterの平均直径は後処理にのみ使用され、依然として使用可能です 関係する個々の直径の畑から回収された velocityGroups。


人口バランスモデリングのいくつかの部分も改名され、 リファクタリング。


Helmholtz-Zentrumの流体力学研究所が提供したパッチ ドレスデン - ロッセンドルフ(HZDR) [コミットe6c224] reactingEulerFoam:phaseForcesを追加しましたfunctionObject


反応するオイラー・オイラーソルバの関数オブジェクトを追加しました。 混合された界面力を評価し、書き出します。 与えられた相(抗力、仮想質量、揚力、壁潤滑および乱流 分散)。


Helmholtz-Zentrumの流体力学研究所が提供したパッチ ドレスデン - ロッセンドルフ(HZDR) With VTT Finland: TDAC化学[コミット62f64f]で多相のサポートが追加されました。 [コミット62f64f]  TDACChemistryModel:マルチフェーズのサポートが追加されました


Timo Niemi、VTTによるパッチ。 With HZDR and VTT Finland: 壁沸騰および相変化能力[コミット6e143e]; 統合された顔ベースの運動量方程式[コミット986a87]; 熱相変化と複数物質移動機構のサポート[コミットd3a23]; 集団収支方程式のためのクラス法を用いて気泡サイズ分布を有する分散相を有する流れ[コミット3e577]。 [コミット6e143e] reactingEulerFoam:populationBalance機能にウォールボイリングと位相変更機能を追加


thermalPhaseChangePopulationBalanceTwo-およびMultiphaseSystemを次のように導入しました。 実際に複数の質量を使用する最初のユーザー選択可能なフェーズシステム によって可能にされた転送メカニズム


コミットd3a237f。


機能は、reactingTwoPhaseEulerFoamを使用して示されています wallBoilingPolydisperseチュートリアル。


フィンランドのVTT技術研究センターと研究所が提供したパッチ Helmholtz-Zentrumドレスデン - ロッセンドルフ(HZDR)。 [コミット986a87] reactingMultiphaseEulerFoam:面ベースの運動量方程式のサポートを追加しました


faceベースの運動量方程式はtwoPhaseEulerFoamに コミット16f03f8は特に価値があると証明されています 気泡流シミュレーション用。 処方はまた、 reactingTwoPhaseEulerFoamとこのパッチは、同じ機能を reactingMultiphaseEulerFoam。


これは、オプションのfaceMomentumエントリをPIMPLEに設定することで有効になります fvSolutionのサブ辞書:

PIMPLE
{
    nOuterCorrectors 3;
    nCorrectors      1;
    nNonOrthogonalCorrectors 0;
    faceMomentum     yes;
}

液体動力学研究所、ヘルムホルツ・ツェントラムドレスデン - ロッセンドルフの寄稿 (HZDR)およびフィンランドのVTT技術研究センター [コミットd3a23] reactingEulerFoam:多相熱相変化と複数物質移動機構のサポート


- 熱相変化および壁沸騰機能が一般化されている    2フェーズおよびマルチフェーズのシミュレーションをサポートします。 - サーマル・フェーズの変更により、purePhaseModelも可能になり、ケースの設定が簡単になりました。 - phaseSystemテンプレートは、複数の準備のために再構成されました    同時質量伝達機構。 例えば、熱相    不均質な人口バランスモデル。


フィンランドのVTT技術研究センターと研究所が提供したパッチ Helmholtz-Zentrumドレスデン - ロッセンドルフ(HZDR)。 [コミット3e577]  reactingEulerFoam:人口バランスモデリング機能の追加


このパッチは、reactingEulerFoamソルバーが多分散フローをシミュレートできるようにします 状況、すなわち、分散相がサイズに曝される流れ 分布。


新たに追加されたpopulationBalanceModelクラスは、integro-partial クラス法による微分母集団平衡方程式(PBE)、また、 いわゆる離散または断面法である。このアプローチは、 PBEの内部座標、粒子体積を超えます。これにより、 クラス内の粒子数濃度の輸送方程式 異なる代表サイズ。これらは、ソース用語と 分離された方法で解決される。実装はある方法で行われます。 合体、分裂およびドリフトのために全粒子数および質量が保存される (すなわち、等温成長プロセスまたは相変化プロセス)、選択された 内部座標に対する離散化。


人口バランスは、複数の速度(温度)フィールドにわたって分割することができ、 多項式EulerFoamを反応させてnの勢いを解く能力を使用する (エネルギー)方程式である。ある程度までは、これは依存性を考慮に入れます 分散相径に対する熱および運動量の伝達また可能です 複数の人口バランスを定義する。気泡と液滴を同時に発生させる。


機能は、適切なphaseSystemを選択することによってオンにすることができます タイプ。 populationBalanceMultiphaseSystemと新たに追加されたdiameterModel velocityGroupと呼ばれるクラスです。この機能の使用方法を説明するために、 bubbleColumnPolydisperseチュートリアルがreactingTwoPhaseEulerFoamに追加されました。 reactingMultiphaseEulerFoam。


さらに、sizeDistributionというreactingEulerFoam固有のfunctionObject サイズ分布の後処理を可能にするために加えられた。を取得する 特定の領域における数密度関数。


液体動力学研究所、ヘルムホルツ・ツェントラムドレスデン - ロッセンドルフの寄稿 (HZDR)およびフィンランドのVTT技術研究センター Supported by Evonik: AttouとFerschneiderパックされたベッドを通るフィルムフローのモデルをドラッグする[コミットa59781] [コミットa59781] dragModels:トリクルベッド用のAttouFerschneiderモデルを追加


また、使用方法を示すチュートリアルケースも追加されました。 新しいドラッグ モデルは対称であり、ブレンドなしで使用する必要があります。 Examples: 単成分および多成分液滴蒸発のためのテストケース[コミット48c79c]。 [コミット48c79c] reactingTwoPhaseEulerFoam:蒸発テストケースを追加


2つのシングルセルテストケースが追加されました.TwoPhaseEulerFoam 界面組成相系を有する。 これらは液滴である 蒸発症; 1つの単一コンポーネントと1つのマルチコンポーネント。 ケースが実行される 可能性のあるすべての不活性種について、 ランは広く似ています。


マルチコンポーネントのケースでは、開始時に若干の非物理的な変化が見られる 最初の過渡状態の間に、ピンプル反復の非収束に至る。 これは、時間ステップを短縮することで軽減できます。 Particles and Tracking Tracking: 重心追跡を40%高速化するトラッキングコールの数を減らしました[コミット6832a4]。 パーティクルトラッキングのキネマティックレイヤでメモリ使用量を30%削減[コミット795bc4]。 並列実行[コミットa0fcab]のトラッキングの堅牢性の向上。 粒子運動学における改良された計算シーケンス[コミットe7fc53]; ACMIパッチ[コミットadffa0]を使って粒子追跡を可能にしました。 [コミット6832a4] ラグランジアン:最適化された次元削減制約


4.xトラッキングは、パーセルの次元数を 各トラックの開始時にそれらをメッシュの中心に移動させ、 トポロジーを考慮することなく。 これは、その外に小包を残すことができます 関連四面体。


重心アルゴリズムは不正確なトポロジーには耐性がないため、 位置を変更する代わりに、メッシュに追従するように書かれています センター。 これは効果的でしたが、トラッキングの回数が効果的に2倍になりました コール。 この追加費用は、 既存のモーショントラックへの拘束変位 以前と同様にトラッキングステップの回数が実行されます。 [コミット795bc4] KinematicParcel:連続フェーズデータが削除されました


補間された連続位相データは、トラックおよび したがって、小包に保管すべきではありません。 連続速度、 密度と粘性がキネマティックパーセルから キネマティックパーセル追跡データ。 これにより、 キネマティック層を約3分の1にする。 熱および反応層は依然として 同じ治療が必要です。 [コミットa0fcab] lagrangian:常にswitchProcessorフラグを設定する


TrackData :: switchProcessorフラグがいくつかの より複雑な小包によって行われる追跡ステップ。 また、 パーセルはすでにプロセッサ境界上にステップを開始します。 パーティクルが無期限に前後に転送されるようになります。 ザ フラグはすべての場合に明示的に設定されるようになりました。 [コミットe7fc53] KinematicParcel:顔を打つ前にセル内の更新を適用する


KinematicParcelの進化は3つの段階で起こります。 (1)追跡 (2)顔またはパッチとの相互作用 ヒット、および(3)パーセルおよび細胞特性の計算および更新。 KinematicParcelはステップ1と2がこの順番で進化していました 同じ低レベルメソッドの一部。 これは、更新ステージ 顔とのやり取り後に行われた。つまり、小包は 追跡されたばかりのセル、またはパッチによって それがもはや代表ではないように変更された トラックをセルに通します。


基本クラスのステージ1とステージ2の分離により、今は 顔と対話する前に更新段階を行うことが可能である(すなわち、 1、3、2の順に進む)。 これにより、 アップデートを行い、説明されている問題を回避します。


Timo Niemi、VTTによるパッチ。 [コミットadffa0] Lagrangian:ACMIパッチとマイナーコードの改善によるトラッキングが可能


ACMIパッチとのパーティクルの衝突が処理されるようになりました。 ヒットが検出する 位置がオーバーラップまたは結合領域内にあるかどうか、および その地域に適した命中ルーチンを呼び出す。


低レベルの追跡方法は、より一貫して命名されました。 がある 今は顔を追跡して打つこととは区別されます。 関数 オブジェクトの副作用がベースレイヤーから 意味のある小包。 Optimisation: (VTTを用いて)粒子への力と熱伝達は保全を保証し[コミットa58062]、結合された寄与と非結合寄与の計算を分割してより正確にする[コミット9ee3bb]。 パーティクルのペア衝突モデル内の不要な計算を削除[コミット937dba]。 粒子熱力学における熱伝達の数値安定性の向上[コミット631bd4] [コミットa58062] lagrangian:統合スキームと転送条件の書き換え


粒子への力および熱伝達の統合は、 実行時に選択可能な統合スキームによって容易になります。これらのスキーム イントロレーションステップの終わりに値を生成するように書かれていた また、全移動量からのステップにわたる平均値 計算された。


オイラー方式の平均値は正しく実装されていませんでした。 勢いと熱伝達過程が生じた 非保守的。しかし、平均を正しく実装すると、 多くの先進的な機能を備えています 安く安定した選択肢としてオイラー計画の目的を否定した。


このスキームは、ステップの変更を生成するように書き直されています。 最終的な価値よりむしろ。この変更を使用して、 移転。スキームに関係なく、この配合は 控えめで、オイラー方式は計算上のままです 安価な。


この変更は、Timo Niemi、VTT [コミット9ee3bb] integrationSchemes:連結/非連結力分割の修正


コミットa580620で実装された統合分割が表示されています 場合によっては正しくないことがあります。 新しい手順が実装されました 暗黙的明示的積分を正確に数に分割することができる それぞれの貢献度を計算するために、 これは 結合したおよび結合していない粒子の運動量を統合することを意図している。 熱伝達。


しかし、現時点では、 これらの移転(暗黙の非結合貢献はない)。 ザ したがって、統合のみを行うための評価は短期間で行われています 結合された貢献に関して。 分割機能 追加の別個の暗黙の係数が 将来必要となる。


この変更は、Timo Niemi、VTT [コミット937dba] PairCollision:不要な操作を削除 [コミット631bd4]  ThermoParcel:熱伝達項の数値安定性の向上


Timo Niemi、VTTによるパッチ。 Injection: 並列に粒子注入の位置を設定する同期乱数呼び出し[コミット11a3b3]。 新しいRandomクラス実装[コミット002e7d]で乱数生成の速度を向上させました。 [コミット11a3b3]  ConeInjection、ConeNozzleInjection:同期された乱数


コーン注入内での位置決めのための乱数の使用 モデルはすべてのコアで一貫しています。 いくつかの呼び出しは globalSampleメソッドを使用して同期されますが、他の ランダム化されていないアルゴリズムに置き換えられました。 [コミット002e7d]  ランダム:drand48をクラス内の実装に置き換えました


これは、それが置き換えられるライブラリの機能よりも速い コンパイラはインライン展開を実行できます。 また、静的なものを利用しない 発電機は互いに干渉しないようにしてください。 それはまたより速い cachedRandomの配列検索よりも cachedRandomクラス したがってランダムよりも有利ではなく、削除されています。 Data Processing: パッチのパーセル衝突のためのpatchCollisionDensity関数オブジェクト[コミットa44e95]; nearWallFields関数オブジェクト[コミットaa24a9]の厄介な粒子の古い追跡のための特別な処理を削除しました。 icoUncoupledKinematicCloudfunctionオブジェクトを使用すると、任意のシミュレーションに粒子を追加できます[コミット db6495]。 [コミットa44e95] ParticleFunctionObjects:PatchCollisionDensityオブジェクトが追加されました。この関数オブジェクトは、 すべてのパッチ面でパーセル衝突の面積密度。 また、 各パッチ面に衝突する衝突の割合は、 最後の出力から経過した時間に等しい間隔。 それは 最小入射速度を指定するオプションの入力。 衝突はカウントされません。 次のように、クラウドプロパティファイルで有効にすることができます。

    cloudFunctions
    {
        patchCollisionDensity1
        {
            type        patchCollisionDensity;
            minSpeed    1e-3; // (optional)
        }
    }

[コミットaa24a9] functionObjects:nearWallFields:固定パーティクルが見つかりませんでしたエラー


扱いにくいパーティクルの特別な処理をすべて削除しました。 nearWallFields関数オブジェクト。 バージョン5以上のトラッキングが既に処理されています これはより堅牢です。 [コミット db6495]  追加されたicoUncoupledKinematicCloudパッケージ化された関数オブジェクト Chemistry and Reactions Full algebraic Jacobian (with Francesco Contino): 化学反応の解を高速化するために、第3体および圧力依存の導関数を含む新しい完全代数ヤコビ行列、および温度項の導関数を実装する。 反応速度表現とヤコビの項の拡張を容易にするためにコードを再設計しました。 安定性を改善するために温かいクリッピングが加えられました[コミット4dc35c]。 [コミット4dc35c]  thermophysicalModels:完全代数ヤコビ行列の実装


第3者および圧力依存のデリバティブを含む 温度の項。完全ヤコビアンは不完全なヤコビアンよりも頑強であり、 部分的に近似した形式を使用して、 ヤコビアンに依存する硬いODEソルバー。


反応速度の評価は、化学モデルからスペシ 代替の反応速度式および関連する反応速度式の簡潔なサポート ヤコビの言葉。


Reactionクラスに含まれる温度クリッピング。これはデフォルトでは無効です しかし、ほとんどの場合、温度制限を設けることをお勧めします 低い)。これらは、foamChemistryFileにキーワードThighと トロー。 chemkinToFoamを使用する場合、これらの値はJanafの限界値に設定されます 熱力学的データ。新しいヤコビアンでこの温度クリッピングが証明されました 安定性のために、そして場合によっては非常に有益である。


TDAC MRUリストの改善は、追加機能および拡張機能の方がよりよく統合されています。


この重要な開発を最大限に活用するには、再調整することが重要です ODE統合の公差、特にodeCoeffsのabsTol 化学辞書のサブ辞書:

odeCoeffs
{
    solver          seulex;
    absTol          1e-12;
    relTol          0.01;
}

典型的にはabsTolを1e-8に設定し、relTolを点火を除いて0.1に設定できるようになりました これらの設定では、統合は依然として堅牢ですが、 多くの場合、以前よりもはるかに高速です。 Reaction:燃焼および化学モデル[コミット61cab8]の選択を簡素化した。 初期ODE統合のタイムステップ[コミット08d5fc]を指定するオプション。 拡張(long double)精度スカラーのサポート[コミットd82cc3]; 燃焼、熱物性および乱流モデル間の依存関係を取り除くための再設計[コミット0ea0b7]; (BURNリサーチグループで)エンジン計算用に選択可能なピストン運動モデル[コミット04d5f8]; ChemFoam [コミット85e249]における液体反応のサポートを用いた酵素反応[コミット19fb48]のミカエリス - メンテン反応速度を加えた。 [コミット61cab8] combustionModel、chemistryModel:モデル選択の簡略化


燃焼および化学モデルの選択は単純化されているので ユーザが熱力学の形式を指定する必要がないことを意味する。


新しい燃焼および化学物質の例は、以下の通りである。

    In constant/combustionProperties:

        combustionModel PaSR;

        combustionModel FSD;

    In constant/chemistryProperties:

        chemistryType
        {
            solver          ode;
            method          TDAC;
        }

モデル名のすべての角括弧(例えば、 <psiThermoCombustion、gasHhermoPhysics>)が削除されました。 chemistryThermoエントリー。


変更はほとんど後方互換性があります。 サポートのみ 化学ソルバーの名前の角括弧型は削除されました。 警告 古いエントリのいくつかが使用されている場合、 熱力学は現在無視されている。 [コミット08d5fc] chemistryModel:最初のODE統合のタイムステップを指定するための新しいオプションが追加されました


定数/化学特性では、初期の仕様に加えて 実行の開始時に使用されるODE統合時間ステップ:


     initialChemicalTimeStep 1e-12;


この時間ステップは、ここで、 オプションのエントリmaxChemicalTimeStepを設定します。


     maxChemicalTimeStep 1e-12; [コミットd82cc3]  OpenFOAM:拡張精度スカラーのサポートが追加されました


OpenFOAMは、以下のようにして、single、double、またはlongのスカラーでコンパイルできるようになりました。 WM_PRECISION_OPTION環境変数をSP、DPまたはLPに設定する それぞれ、


ほとんどの64ビットシステムではlong doubleは128ビットとして保存されますが、 浮動小数点ハードウェアを80ビットに変換します。 これと比較してストレージが増えたため 倍精度キャッシュとメモリアクセスにはかなりの時間がかかります 浮動小数点集約演算の速度を2倍に低下させます 3。 [コミット0ea0b7] combustionModels:工事順序を変更しました


燃焼および化学モデルは、もはや 熱力学的モデル;彼らは代わりに参照を保持します。の建設 燃焼および化学モデルが変更され、 メッシュとフェーズ名ではなく、サーモダイナミックスへの参照。


ソルバーレベルでは、サーモ、乱気流、燃焼モデルが現在 順番に選択されます。 3つのモデル間の循環依存性は、 解決されました。そして、rawポインタベースのpost-constructionステップは、 燃焼モデルが削除されました。


古いソルバーレベルの構築シーケンス(通常はcreateFields.H内)は、 以下の通りです:

    autoPtr<combustionModels::psiCombustionModel> combustion
    (
        combustionModels::psiCombustionModel::New(mesh)
    );

    psiReactionThermo& thermo = combustion->thermo();

    // Create rho, U, phi, etc...

    autoPtr<compressible::turbulenceModel> turbulence
    (
        compressible::turbulenceModel::New(rho, U, phi, thermo)
    );

    combustion->setTurbulence(*turbulence);

新しいシーケンスは次のとおりです。

    autoPtr<psiReactionThermo> thermo(psiReactionThermo::New(mesh));

    // Create rho, U, phi, etc...

    autoPtr<compressible::turbulenceModel> turbulence
    (
        compressible::turbulenceModel::New(rho, U, phi, *thermo)
    );

    autoPtr<combustionModels::psiCombustionModel> combustion
    (
        combustionModels::psiCombustionModel::New(*thermo, *turbulence)
    );

[コミット04d5f8]  engineTime:ピストン運動の実行時選択を提供するために一般化される


標準的なクランクコネクティングロッドと新しいフリーピストンキネマティックス運動オプション 他のものを簡単に追加することができます。


Francesco ContinoとBURN Research GroupのNicolas Bourgeoisによる寄稿。 [コミット85e249] MichaelisMentenReactionRate:酵素反応のミカエリス - メンテン反応速度


液体反応をサポートするために更新されたchemFoam [コミット19fb48]  chemFoam:液体反応と気体反応の両方をサポートするためにpsiからrho thermoに変更 Other Modelling Turbulence: 乱気流強度フィールドを書き出すturbulenceIntensity関数オブジェクト[コミットe08128]; オメガの壁機能改善治療(比散逸率)[コミット4331b9]。 [コミットe08128]  functionObjects :: turbulenceIntensity:turbulenceIntensityフィールドを書き込む新しいfunctionObject


説明     乱気流強度フィールド 'I'を評価して書き込みます。


    乱気流強度フィールド「I」は、乱流の二乗平均平方根である     局所速度振幅で正規化された速度変動:

    \f[
        I \equiv \frac{\sqrt{\frac{2}{3}\, k}}{U}
    \f]

    偽の極値と0による除算を避けるために、私は1に制限されています。     速度の大きさは乱流速度の変動よりも小さい。


    関数オブジェクト指定の例:

    functions
    {
        .
        .
        .
        turbulenceIntensity
        {
            type        turbulenceIntensity;
            libs        ("libfieldFunctionObjects.so");
        }
        .
        .
        .
    }

    または標準の構成ファイルを使用します。

    functions
    {
        .
        .
        .
        #includeFunc turbulenceIntensity
        .
        .
        .
    }

[コミット4331b9]  omegaWallFunction:幾何平均から壁距離までのブレンドを変更するレイノルズ数ベース


アドホックな幾何平均ブレンディングをより物理的な壁距離に置き換えました レイノルズ数混合関数。


さらに、y + <11.6の積極的な生産期間の部分は、 復活した Thermophysical Modelling: 非反応性混合物は、反応ソルバーで選択して、事例を段階的に設定するのを助けることができます[コミット233d8d]。 [コミット233d8d]  reactionThermo:singleComponentMixtureをpureMixtureとして選択します。


反応するソルバーでpureMixtureを指定できるようになりました。 これはさらに 非反応型ソルバと反応型ソルバとの互換性が向上します。


これを達成するために、混合物は同じフォームのtypeName関数を持つようになりました 下部の熱中症モデルとして。 さらに、名前の衝突を避けるために、 反応しているサーモメークのマクロは、 複数選択テーブルのエントリ、および 反応温度表。 Atmosphere: 地形のための気孔率と乱流モデルを含む新しいatmosphericModelsライブラリ[コミットa5d677] [コミットa5d677] 大気モデル:Lopes da Costaの気孔率と乱流モデルを追加しました。電力法気孔率とkε乱流モデルの特殊な変形 森林と非森林の複合体上の大気の流れをシミュレートするために開発された 地形。クラス フォーム:: powerLawLopesdaCosta 説明 空間的に変化するパワー・ロウ・ポロシティ・モデルの変形 抵抗係数によって与えられた:

        \f[
            S = -\rho C_d \Sigma |U|^{(C_1 - 1)} U
        \f]

どこで

    \vartable
        \Sigma | Porosity surface area per unit volume
        C_d    | Model linear coefficient
        C_1    | Model exponent coefficient
    \endvartable

参照:

    \verbatim
        Costa, J. C. P. L. D. (2007).
        Atmospheric flow over forested and non-forested complex terrain.
    \endverbatim

クラス Foam::RASModels::kEpsilonLopesdaCosta

Description 追加の供給源を有する標準的なk-イプシロン乱流モデルの変形 によって表される多孔質領域における乱流の変化を取り扱うための用語 ポロシティモデルpowerLawLopesdaCosta。

参照:

    \verbatim
        Costa, J. C. P. L. D. (2007).
        Atmospheric flow over forested and non-forested complex terrain.
    \endverbatim

デフォルトのモデル係数は以下のとおりです。

    \verbatim
        kEpsilonLopesdaCostaCoeffs
        {
            Cmu         0.09;
            C1          1.44;
            C2          1.92;
            sigmak      1.0;
            sigmaEps    1.3;
        }
    \endverbatim

チュートリアルのケースに従う。

Rigid Body Dynamics: 0-DoFジョイント[コミット59be3e]とトリプル振り子の例[コミット ae5a31]; sixDoFRigidBodyState関数オブジェクトは後処理のために剛体の状態を書き込みます[コミット7dc618]。 [コミット59be3e] 今回のバージョンアップでの特記事項はなし(dev版でのアップデート) [コミット ae5a31] rigidBodyDynamics:一般的なボディのテストアプリケーションを追加 [コミット7dc618]  sixDoFRigidBodyState:剛体状態を書き込む新しいfunctionObject Meshes blockMesh: NACA0012エアロフォイルチュートリアル、Cグリッドメッシュ付き[コミット0059f3] [コミット0059f3]  rhoSimpleFoamとrhoPimpleFoamのaerofoilNACA0012チュートリアルこのチュートリアルでは、blockMeshを使用してCグリッドメッシュを生成する方法を示します この幾何形状は、NACA0012翼の表面メッシュ(OBJファイル)によって提供されます ケースは、フリーストリーム流速がMa = 0.72デューク大学のカイ・バストス(Kai Bastos)氏に幾何学と役に立つ入力をお礼してくれました。 foamyHexMesh: 一般的なレビュー[コミットf18ffe]; 産業のジオメトリの選択により効果的に実行するための改善[コミット3260ae]。 ローカルサーフェスへの近さに基づいたセルサイジングが含まれています[コミット3e761d]。 [コミットf18ffe] 今回のバージョンアップでの特記事項はなし(dev版でのアップデート) [コミット3260ae] 今回のバージョンアップでの特記事項はなし(dev版でのアップデート) [コミット3e761d]  foamyHexMesh:ローカルサーフェスの近さに基づいてセルのサイジングを追加まず、 "closeeness"オプションを有効にしてsurfaceFeatureExtractを実行します。 surfaceFeatureExtractDict:表面近接点のフィールドを抽出する

    // Out put the closeness of surface elements to other surface elements.
    closeness               yes;

次に、ローカルサーフェスの近さに基づいてセルのサイジングを有効にします。 foamyHexMeshDictの "internalCloseess"オプション

motionControl
{
    defaultCellSize             4;

    minimumCellSizeCoeff        0.1;
    maxSmoothingIterations      100;
    maxRefinementIterations     2;

    shapeControlFunctions
    {
        geometry
        {
            type                        searchableSurfaceControl;
            priority                    1;
            mode                        inside;

            surfaceCellSizeFunction     nonUniformField;

            cellSizeCalculationType     automatic;

            curvature                   false;
            curvatureFile               dummy;
            featureProximity            false;
            featureProximityFile        dummy;
            internalCloseness           true;
            internalClosenessFile       geometry.internalPointCloseness;
            internalClosenessCellSizeCoeff 25;
            curvatureCellSizeCoeff      0;
            maximumCellSizeCoeff        1;
            cellSizeFunction            uniform;
        }
    }
}

Utilities: surfaceFeaturesは、1つの構成で複数のサーフェスからフィーチャを抽出し、surfaceFeatureExtract [コミットaaed62]を置き換えます。 フィールドはcreateBafflesを実行しても影響を受けませんが、オプションのfieldsswitch [コミットd66059]を設定することによって変更されます。 [コミットaaed62] surfaceFeatures:シンプルなコントロールを持つsurfaceFeatureExtractの新バージョンサーフェスはリストとして指定され、コントロールはそれぞれに適用されます。の中に rhoPimpleFoam / RAS / annularThermalMixerチュートリアル:

    surfaces
    (
        "AMI.obj"
        "shaft.obj"
        "wall.obj"
        "statorBlades.obj"
        "rotorBlades.obj"
    );

    includedAngle   150;  // Identifes a feature when angle
                      // between faces < includedAngle
    trimFeatures
    {
        minElem         10;   // minimum edges within a feature
    }

    writeObj        yes;  // writes out _edgeMesh.obj files to view features

異なるサーフェスに複数のコントロールが必要な場合 サブディクショナリを使用できます。

    AMIsurfaces
    {
        surfaces
        (
            "AMI.obj"
        );

        includedAngle   140;  // Identifes a feature when angle
                          // between faces < includedAngle
        trimFeatures
        {
            minElem         8;   // minimum edges within a feature
        }

        writeObj        yes;  // writes out _edgeMesh.obj files to view features
    }

    otherSurfaces
    {
        surfaces
        (
            "shaft.obj"
            "wall.obj"
            "statorBlades.obj"
            "rotorBlades.obj"
        );

        includedAngle   150;  // Identifes a feature when angle
                          // between faces < includedAngle
        trimFeatures
        {
            minElem         10;   // minimum edges within a feature
        }

        writeObj        yes;  // writes out _edgeMesh.obj files to view features
    }

特定のサーフェスに対応する既存のフィーチャエッジファイルは、 "ファイル"関連リスト:

    surfaces
    (
        "AMI.obj"
        "shaft.obj"
        "wall.obj"
        "statorBlades.obj"
        "rotorBlades.obj"
    );

    files
    (
        "AMI.obj" "constant/triSurface/AMI.obj.eMesh";
    );

    includedAngle   150;  // Identifes a feature when angle
                      // between faces < includedAngle
    trimFeatures
    {
        minElem         10;   // minimum edges within a feature
    }

    writeObj        yes;  // writes out _edgeMesh.obj files to view features

[コミットd66059]  createBaffles: "noFields" createBafflesDictスイッチを "fields"に変更しました。ここで、メッシュ変更に対応してフィールドが更新されるのは、オプションの "fields"スイッチがtrueに設定されています。 Mesh Motion: pimpleFoam [コミットd1fa9b] interFoam [コミット46704f]と他のマルチフェーズソルバー[コミット4cfb2e]を含む動的ソルバーの機能を標準ソルバにマージすることで廃止予定のDyMソルバ。 メッシュリファインメント/アンレファンションのサポートとMRFへのトポロジ変更を追加[コミットc57fe2b]; メッシュの線形拡張と収縮を伴う単純なリニアモーションソルバー[コミットc00e28] [コミットd1fa9b]  pimpleFoam:pimpleDyMFoamの動的メッシュ機能をpimpleFoamに統合しました。pimpleDyMFoamをこの変更を報告するスクリプトに置き換えました。pimpleDyMFoamチュートリアルはpimpleFoamディレクトリに移動されました。この変更は、ダイナミックメッシュをマージする一連の開発のうちの最初のものです 機能を標準ソルバに組み込んで、一貫性、ユーザビリティ、 これらのソルバーの柔軟性と保守性を向上させます。 [コミット46704f]  interFoam:interDoMFoamのダイナミックメッシュ機能をinterFoamに統合interDyMFoamをこの変更を報告するスクリプトに置き換えました。interDyMFoamチュートリアルは、interFoamディレクトリに移動されました。この変更は、動的メッシュ機能をマージする一連の開発の1つです 一貫性、ユーザビリティ、柔軟性を向上させるために標準的なソルバーに これらのソルバーの保守性。 [コミット4cfb2e] multiphaseInterFoam:multiphaseInterDyMFoamの動的メッシュ機能をmultiphaseInterFoamに統合しましたこの変更を報告するスクリプトでmultiphaseInterDyMFoamを置き換えました。multiphaseInterDyMFoamチュートリアルは、multiphaseInterFoamディレクトリに移動されました。この変更は、動的メッシュ機能をマージする一連の開発の1つです 一貫性、ユーザビリティ、柔軟性を向上させるために標準的なソルバーに これらのソルバーの保守性。  [コミットc57fe2b]  MRF:メッシュリファインメント/アンブランチおよびその他のトポロジー変更のサポートが追加されました。 [コミットc00e28]  displacementLinearMotionMotionSolver:新しい単純なリニアモーションソルバーメッシュモーションソルバーメッシュの単純な線形伸縮 領域はモーション軸とモーションの範囲で定義されます。例:

    dynamicFvMesh   dynamicMotionSolverFvMesh;

    motionSolver    displacementLinearMotion;

    axis            (0 1 0);
    xFixed          0.8;
    xMoving         0;
    displacement    table
    (
        (0 0)
        (4 0.7)
    );

このメッシュは\ c xFixedと\ c xの間で圧縮されています 時間0と4の間に\ c軸を持ち、最大変位は0.7です。 \ c xFixedを越えるメッシュは固定され、\ c xを超えて移動します。 変位。

Productivity and Usability Data Visualisation: streamline関数オブジェクトの両方向を追跡するオプション[コミット8dcfc9]; グラフ、流線などのサンプリング場所を指定するための一貫した命名法を拡張、維持、導入した[コミット3ef4c8]; paraFoamの起動時に、ユーザは[コミット10b289]フィールドとメッシュとパッチコンポーネント[コミット4ece2c]をデフォルトでロードするように設定できます。 [コミット8dcfc9]  streamLine:両方向にトラッキングするオプションが追加されましたストリームラインは、一連のストリームから両方向にトラッキングできるようになりました。 初期の場所。 この動作を制御するキーワードは "forward"、 "backward"、 "both"のいずれかに設定することができます。この新しいキーワードは "trackForward"エントリよりも優れています 下位互換性のために保持されます。 [コミット3ef4c8]  sampledSet:一貫した名前の変更、文書化、およびコードのメンテナンスサンプリングされたセットは、より明示的で一貫性のある名前に変更されました 2つの新しいものも追加されています。使用可能なセットは、 以下:arcUniform:円弧に沿った均一なサンプル。 「円」を置き換えます。 サークルの一部だけに沿ってサンプリングする機能を追加しました 周。例:

        {
            type        arcUniform;
            centre      (0.95 0 0.25);
            normal      (1 0 0);
            radial      (0 0 0.25);
            startAngle  -1.57079633;
            endAngle    0.52359878;
            nPoints     200;
            axis        x;
        }

boundaryPoints:サブセットに関連付けられた指定点サンプル 境界。 "patchCloud"を置き換えます。例:

        {
            type        boundaryPoints;
            patches     (inlet1 inlet2);
            points      ((0 -0.05 0.05) (0 -0.05 0.1) (0 -0.05 0.15));
            maxDistance 0.01;
            axis        x;
        }

boundaryRandom:境界のサブセット内のランダムサンプル。 "patchSeed"を置き換えますが、動作を完全に変更します ランダム。境界面の中心を最初に設定しません。例:

        {
            type        boundaryRandom;
            patches     (inlet1 inlet2);
            nPoints     1000;
            axis        x;
        }

boxUniform:軸に合わせたボックス内の標本の均一なグリッド。 "array"を置き換えます。例:

        {
            type    boxUniform;
            box     (0.95 0 0.25) (1.2 0.25 0.5);
            nPoints (2 4 6);
            axis    x;
        }

circleRandom:円内のランダムサンプル。新しい。例:

        {
            type        circleRandom;
            centre      (0.95 0 0.25);
            normal      (1 0 0);
            radius      0.25;
            nPoints     200;
            axis        x;
        }

lineFace:線に沿った面交差。 「顔」を置き換えます。例:

        {
            type        lineFace;
            start       (0.6 0.6 0.5);
            end         (0.6 -0.3 -0.1);
            axis        x;
        }

lineCell:中間の中間点で線に沿ってセルサンプル 顔の交差点。 "midPoint"を置き換えます。例:

        {
            type        lineCell;
            start       (0.5 0.6 0.5);
            end         (0.5 -0.3 -0.1);
            axis        x;
        }

lineCellFace: "lineFace"と "lineCell"の組み合わせ。置換 "midPointAndFace"。例:

        {
            type        lineCellFace;
            start       (0.55 0.6 0.5);
            end         (0.55 -0.3 -0.1);
            axis        x;
        }

lineUniform:線に沿った均一なサンプル。 "uniform"を置き換えます。 例:

        {
            type        lineUniform;
            start       (0.65 0.3 0.3);
            end         (0.65 -0.3 -0.1);
            nPoints     200;
            axis        x;
        }

points:指定されたポイント。順序付きフラグが "雲"の場合 false、および順序付けられたフラグがtrueの場合は「polyLine」です。例:

        {
            type        points;
            points      ((0 -0.05 0.05) (0 -0.05 0.1) (0 -0.05 0.15));
            ordered     yes;
            axis        x;
        }

sphereRandom:球内のランダムサンプル。新しい。例:

        {
            type        sphereRandom;
            centre      (0.95 0 0.25);
            radius      0.25;
            nPoints     200;
            axis        x;
        }

Mesh:triSurfaceMeshのすべての点からのサンプル。

"triSurfaceMeshPointSet"を置き換えます。例:

        {
            type        triSurfaceMesh;
            surface     "surface.stl";
            axis        x;
        }

ヘッダーにもドキュメントが追加されています。使用例と使用例 制御パラメータの説明がすべてのセットに存在するようになりました。

さらに、セットを生成する多くのアルゴリズムが、 リファクタリングまたは書き換えられました。これは、 最近の乱数生成の変更、またはアドホックの削除 重心追跡アルゴリズムによって不要になった修正。

[コミット10b289]  paraFoam:起動時にロードされるデフォルトフィールドを設定する設定ファイルを追加しました。新しいデフォルトのparaFoam設定はOpenFOAM-dev / etc / paraFoamファイルにあります エントリーを含む

    defaultFields (U p p_rgh T alpha.water alpha.air);


使用可能な場合にデフォルトでロードされるフィールドのセットを指定します。 この 追加のparaFoam設定ファイルを 検索されたOpenFOAMなどのディレクトリのいずれか

    foamEtcFile -list

例えば

    ~/.OpenFOAM/dev
    ~/.OpenFOAM
    ~/OpenFOAM/site/dev
    ~/OpenFOAM/site
    ~/OpenFOAM/OpenFOAM-dev/etc

設定可能なデフォルトフィールドの新しいセットは、元のハードコードされたデフォルトの "p"と "U"であり、現在のOpenFOAMの使用にははるかに便利です。

[コミット4ece2c] paraFoam:デフォルトで読み込まれるパッチの種類を指定するためのサポートを追加する新しいdefaultPatchTypesエントリで指定されているデフォルトのパッチタイプ etc paraFoam設定辞書:

    defaultPatchTypes (patch wall);

ワイルドカードはサポートされています。たとえば、ロードされたすべてのパッチを単純に設定する defaultPatchTypesから

    defaultPatchTypes (".*");

Case Initialisation: 拡張子が ".orig"のオリジナルファイルはコピーする必要はなく、代わりに自動的に読み込まれます[コミットdf6e2d]; 無効なchangeDictionaryutilityをfoamDictionaryに置き換えた[コミット1c62b8]; 一般的な大文字辞書ファイルの有用な例を追加しました。 decomposeParDict [コミット351020]; ユーティリティから未使用のオプションを削除しました。 表面ユーティリティからのケース[コミット2e1825]; 設定ファイルをコピーするためのfoamGetスクリプト。 decomposeParDict、残差をケースに素早く入れます[コミット097e15]。 [コミットdf6e2d]  OpenFOAMフィールドの読み込み:<field> .origファイルの処理を自動化現在、<field>ファイルが存在しない場合、圧縮された<field> .gzファイルは 検索され、存在しない場合は<field> .origファイルが検索されます ために。これにより、大文字と小文字の設定が簡単になり、setFieldのようにスクリプトを実行できるようになりました。たとえば、 <field> .origファイルを直接生成し、そこから<field>ファイルを生成します。 次にソルバによって読み込まれます。 さらに、によって使用されるcleanCase関数 foamCleanCaseとAllcleanスクリプトが<field>ファイルを自動的に削除した場合 対応する<field> .origファイルがあります。 だから今、 <field> .origファイルを<field>またはAllcleanにコピーするAllrunスクリプト それらを明示的に削除するスクリプト。 [コミット1c62b8]  チュートリアル:foamDictionary呼び出しからのrunApplicationの削除runApplicationは、ログに記録されないため、foamDictionaryには必要ありません 結果の何か。 runApplicationを使用すると、未確認のfalseになります foamDictionaryが生成しないので、テストループの完了警告 終わりのステートメント [コミット351020] etc / caseDicts:一般的な辞書ファイルの有用な例を追加decomposeParDict、mapFieldsDict、setFieldsDict、surfaceFeaturesDict、 createBafflesDict、createPatchDict、snappyHexMeshDict、extrudeMeshDictおよび collapseDict [コミット2e1825]  ユーティリティ:未使用のケース関連のオプションを削除する [コミット097e15]  foamGet:設定ファイルをケースにすばやくコピーする新しいスクリプト$ FOAM_ETC / caseDictsのサンプル設定ファイルを使用します。 ユーティリティー構成ファイルとパッケージ化された関数オブジェクトがあります。 ために 例:

  foamGet decomposeParDict
  foamGet extrudeMeshDict
  foamGet createPatchDict
  foamGet surfaces

ファイルはデフォルトでシステムディレクトリにコピーされます。 -target | -tオプションを使用して異なるターゲットディレクトリを指定することができます。

クリスグリーンシールド、CFDダイレクト

Case Management: 実行時間、CPUおよびクロック時間を監視するための時間関数オブジェクト[コミットd008fe]; jobInfoはジョブ情報を小さな便利なファイルに書き出します[コミット0309a2]; foamInfoスクリプトは、モデル(境界条件やパッケージ化された関数オブジェクトを含む)、アプリケーション、スクリプトに関する迅速かつ関連性の高い情報を提供します[コミット930f02]。 foamHelp [コミットb4dfbd]に基づいて効果のない膨大な "ヘルプ"システムを削除しました。 [コミットd008fe] timeFunctionObject:実行、CPU、および時計の時間を書き込む新しいfunctionObjectオプションで時間ステップ当たりのCPUとクロック時間。関数オブジェクト指定の例:

time
{
    type            time;

    libs            ("libutilityFunctionObjects.so");

    writeControl    timeStep;
    writeInterval   1;

    perTimeStep     no;
}

追加する

    #includeFunc time


コントロールの関数リストに移動します。

0               1.190000e+00    1
1               1.640000e+00    1
2               1.940000e+00    2

時間ステップごとのCPUとクロック時間のオプションの書き込みを有効にすると、 まっすぐ進む:

    #includeFunc time(perTimeStep=yes)

[コミット0309a2] jobInfo:jobInfo。<pid>ファイルをcaseディレクトリに書き込むwriteJobInfoコントロールを変更しましたetc / controlDict :: writeJobInfoが1のjobInfoに設定されていると、<pid>ファイルが書き込まれます。 caseディレクトリに、ジョブの実行の要約を含む

startDate
startTime
userName
foamVersion
code
argList
currentDir
PPID
PGID
foamBuild
root
case
nProcs

ジョブが完了すると、次の追加エントリが書き込まれます。

cpuTime
endDate
endTime
termination

元のetc / controlDict :: writeJobInfoコントロールは、writeJobControlという名前に変更されました。 〜1はジョブ制御の〜/ OpenFOAM / jobControl / runningJobsとfinishedJobsファイルを書き込みます。

[コミット930f02] foamInfo:指定されたサブジェクトに関する情報を提供する新しいスクリプト対象は、モデル(境界条件および パッケージ化された関数オブジェクト)、アプリケーションおよびスクリプト。 例えば:

  foamInfo simpleFoam
  foamInfo kEpsilon
  foamInfo turbulentIntensityKineticEnergyInlet
  foamInfo fixedTemperatureConstraint
  foamInfo surfaces
  foamInfo foamNewBC

出力には以下が含まれます。 - File:関連するソースコードヘッダーファイルの場所。 - ヘッダーファイルの説明の詳細。 - ヘッダファイルからの使用詳細。 - 例:tutorialsディレクトリの関連するケースのリスト。

foamInfoには、-web | -wおよび-browser | -bオプションが含まれています。 HTMLソースコードのドキュメント(https://cpp.openfoam.org)

クリスグリーンシールド、CFDダイレクト

[コミットb4dfbd]  今回のバージョンアップでの特記事項はなし(dev版でのアップデート) Boundary Conditions (BCs): 新しいfreestreamVelocityとfreestreamPressure BC [コミットfb15be]; 新しいfixedMeanOutletInletFvPatchFieldアウトレット平均値を確定するBC [コミットa0399d]; 定圧静水圧分布に対応するp_rghの境界値を設定する新しいprghUniformDensityHydrostaticPressure BC [コミット52a2ba]。 freestreamPressureFvPatchScalarField BCの超音速フローのサポート[コミット26ec6f]; semiPermeableBaffle BCは半透過性バッフルをモデル化する[コミット305558]。 あるケースから別のケースへの境界にデータをマップするtimeVaryingMapped BCのユーザビリティを向上させました[コミットf6a311]。

[コミットfb15be]  freestreamPressure、freestreamVelocity:フリーストリームの新しいブレンド境界条件


これらのBCは、標準的な流入条件と流出条件との間で 速度の向き。


airFoil2Dチュートリアルが更新され、これらの新しいBCが紹介されました。 [コミットa0399d]  fixedMeanOutletInletFvPatchField:アウトレット平均値を修正する新しいアウトレット/インレット境界条件


説明     この境界条件は、近接セルを用いてパッチをフィールドに外挿する     指定された、オプションで一致するように分布を調整します     時変の平均値。この外挿されたフィールドは、     アウトフロー面のfixedValueではなく、ゼログラデーションが流入面に適用されます。


    この境界条件は、inletOutletが     速度に適用され、ゼロ勾配条件が     速度が指定されている流入面の圧力は、     境界条件のセットの非物理的な過剰仕様。


使用法

Property Description Required Default value meanValue mean value Function1 yes

phi Flux field name no phi  境界条件指定の例:

   <patchName>
   {
       type            fixedMeanOutletInlet;
       meanValue       1.0;
   }

参照してください

   Foam::fixedMeanFvPatchField
   Foam::outletInletFvPatchField
   Foam::Function1Types

[コミット52a2ba] prghUniformDensityHydrostaticPressureFvPatchScalarField:p_rghの新しい境界条件


定密度静水圧に対応するp_rghの境界値を設定します。 圧力分布。


説明     この境界条件は、p_rghの静水圧条件を提供し、     次のように計算される:


       \f[
           p_{rgh} = p_{ref} - (\rho - \rho_0) g (h - h_{ref})
       \f]


    どこで

p_ {rgh} 擬静水圧[Pa] p_ {ref} hRefにおける静圧[Pa] h 重力と反対方向の高さ h_ {ref} 重力と反対方向の基準高さ \ rho 密度フィールド \ rho_ {ref} 境界における均一な基準密度 g 重力による加速度[m / s ^ 2]

使用法

プロパティ 説明 必須 デフォルト値 pRef 基準静圧 はい

rhoRef 参照密度 はい

ρ 密度フィールド名 いいえ rho     境界条件指定の例:

   <patchName>
   {
       type            prghUniformDensityHydrostaticPressure;
       rhoRef          1000;
       p               0;
       value           uniform 0; // optional initial value
   }

[コミット26ec6f] freestreamPressureFvPatchScalarField:超音速フリーストリームのサポートを追加しました


フリーストリームのフローがtrueの場合は、新しいオプションのスイッチ "supersonic"をtrueに設定します。 超音速。 [コミット305558] semPermeableBaffle:2つの新しい境界条件とチュートリアルが追加されました


半透過性バッフルのモデリングのための2つの境界条件は、 追加されました。これらのバッフルは、内部の多数の種に対して透過性である 流れ、そして他人に不浸透性である。与えられた種のフラックスは、 質量分率の低下を乗じた定数として計算される バッフル。


種の質量分率条件は、移動定数および バッフルの反対側のパッチの名前:


boundaryField {

   // ...
   membraneA
   {
       type            semiPermeableBaffleMassFraction;
       samplePatch     membranePipe;
       c               0.1;
       value           uniform 0;
   }
   membraneB
   {
       type            semiPermeableBaffleMassFraction;
       samplePatch     membraneSleeve;
       c               0.1;
       value           uniform 1;
   }

} cの値が省略された場合、または0に設定されている場合、パッチは次のようになります。 問題の種に不浸透性であると考えられる。 samplePatchエントリ この場合には省略することもできる。


速度条件は特別な入力を必要としません:


boundaryField {

   // ...
   membraneA
   {
       type            semiPermeableBaffleVelocity;
       value           uniform (0 0 0);
   }
   membraneB
   {
       type            semiPermeableBaffleVelocity;
       value           uniform (0 0 0);
   }


これらの2つの境界条件を組み合わせて使用​​する必要があります。 質量分率条件は、すべての種に適用する必要があります シミュレーション。いずれかの場合、エラーメッセージとともに計算が失敗します。 孤立して使用される。


燃焼/反応フォーム/ RAS /膜のチュートリアルが追加されました。 この転送プロセスを示しています。


この作業はBASFのStefan Lippの支援を受けて行われました。 [コミットf6a311] timeVaryingMappedFixedValueFvPatchField:別のケースからポイントとフィールドのデータを直接読み込む機能が追加されました


説明     この境界条件は、供給されたセットから値を補間する     時空間のポイント。


    デフォルトでは、データファイルは     定数/ boundaryData / \ <パッチ名\> /ディレクトリ:        - ポイント:ポイント場所のフィールド        - \ <時刻\> / \ <フィールド\>:時刻\ <時刻\>の値のフィールド


    あるいは、ポイントおよびフィールドファイルの名前および位置は、     オプションの辞書エントリを介して明示的に指定されます。        - dataDir \ <ポイントおよびフィールドデータのオプションの最上位ディレクトリ>;        - points \ <ポイントファイルの名前を含むオプションのパス                  dataDir \>;        - sample \ <時間ディレクトリ内のサブディレクトリのオプション名                 \>フィールドを含む。     これは、別のケースのデータをマッピングする場合に特に便利です。     \ c sample \ c functionObjectは、パッチフィールドのデータを取得するために使用されます。     マッピング。


たとえば、ポイントとフィールドのデータを <source case name>パッチの境界条件が書き込まれる


   <patch name>
   {
       type            timeVaryingMappedFixedValue;
       dataDir         "../<source case name>/postProcessing/sample";
       points          "0/<sample name>/faceCentres";
       sample          <sample name>;
   }

上記では、ソースケースのディレクトリは、現在の ファイルとディレクトリの名前が展開されるため、環境変数 使用することができる。 Compilation: GCC 8.1コンパイラで新しいメモリアクセスと例外の一貫性チェックを満たす[コミット3682e7]; wmakeでは、オープンファイルが多すぎないように依存関係を単純化したファイルスキャン[コミット9ffc02]、文字列パス置換[コミット60b81b]の追加によるパフォーマンスの向上、lnIncludeディレクトリ[コミット3c000d]のオンデマンド生成の追加、ファイル 削除されます[コミット61f1fe]。 [コミット3682e7] gcc-8.1のサポートが追加されました [コミット9ffc02] wmkdep:開いているファイルが多すぎることを避ける依存関係のファイルスキャンの簡略化


この変更により、一度に1つのインクルードファイルのみを開くことができます。 ツリーをスキャンして 開いているバッファのリスト この新しいアプローチは少し速く、「あまりにも ファイル数の制限が少ないマシンでは、多くのオープンファイル "エラーが発生する ユーザに割り当てられた記述子。 [コミット60b81b] wmkdep:追加されたパス文字列置換のサポート


出力をsed'ingする必要性を回避します。 これにより、 追加のコマンドを呼び出して一時ファイルを生成する必要があります。 [コミット3c000d] wmake、wmakeLnIncludeAll:依存関係に基づいてlnIncludeディレクトリの作成を自動化


今度は、必要に応じてINCLUDEがEXE_INC内のエントリの存在によって作成されます Make / optionsファイルの変数。 これにより、 さまざまなAllwmakeファイルにwmakeLnIncludeを入れて ln依存ライブラリをコンパイルする前にディレクトリをインクルードします。 [コミット61f1fe] wmake:ファイルが削除されたときの依存関係の処理の改善 Parallel I/O: Matthew Janssens [コミットa4de83]からの、HPCでの効率的なI / OのためのfileHandlerと照合されたフォーマットの新しいオプション。 collge形式[コミット5bea9a]でpurgeWriteオプションを維持しました。 [コミットa4de83] fileHandlerと照合されたIOの改善


既存の機能の向上


   - MPIはスレッドサポートなしで初期化されます。コレーションされていない    - ネイティブのC ++ 11スレッディングを使用する。静的な破壊命令の問題を回避します。    - etc / cellModelsは、必要な場合にのみ読み込まれるようになりました。    - etc / controlDictを環境変数FOAM_CONTROLDICTから読み込むことができるようになりました    - 統一されたファイル(例えば、 '0 / uniform / time')は、マスターのみで1回だけ読み取られる     (masterUncollat​​edまたはcollat​​edファイルハンドラを使用)    - collat​​edフォーマットは 'processors'の代わりに 'processorsNNN'に書き込まれます。ファイル     フォーマットは変更されません。    - スレッドバッファとファイルバッファのサイズは、もはや2Gbに制限されていません。


グローバルなcontrolDictファイルには、ファイル操作のためのパラメータが含まれています。いくつかの下で 例えば、 NFSを使用しないシステムで並列に実行すると、ユーザーは いくつかのパラメータを設定する必要があります。 fileHandler、グローバルcontrolDictの前 ファイルはファイルから読み込まれます。これをサポートするために、OpenFOAMではグローバル FOAM_CONTROLDICT環境に設定された文字列として読み込まれるcontrolDict 変数。


FOAM_CONTROLDICT環境変数はグローバルなコンテンツに設定できます controlDictファイル(例: sh / bashシェルから:


   export FOAM_CONTROLDICT=$(foamDictionary $FOAM_ETC/controlDict)


FOAM_CONTROLDICTは、-xオプションを使用してmpirunに渡すことができます。


   mpirun -np 2 -x FOAM_CONTROLDICT simpleFoam -parallel


これにより、NFSがOpenFOAM構成を読み取る必要がなくなります 実行可能ファイルは共有ライブラリをロードする必要があります。共有ライブラリはコピーする必要があります ローカルまたはNFSまたは同等のものを介して入手できます。


新機能:複数のIOランク


masterUncollat​​edと照合されたfileHandlerは、複数のランクを使用できるようになりました。 例えば:


   mpirun -np 6 simpleFoam -parallel -ioRanks '(0 3)'


この例では、ランク0( 'processor0')と3( 'processor3')はすべての I / O。ランク0は0,1,2を処理し、ランク3は3,4,5を処理します。 IOランクのセットは常に 第1の要素として0を含み、昇順にソートされる。


照合されたfileHandlerは、ディレクトリネーミングプロセッサNNN_XXX-YYYを使用します。 NNNはプロセッサーの総数で、XXXとYYYは最初と最後です プロセッサはランク内にあります。上記の例では、ディレクトリは


   processors6_0-2
   processors6_3-5


これらの照合された各ファイルには、ローカルランクのデータが含まれています のみ。同じ命名は、例えば、実行中のdecomposePar:


decomposePar -fileHandler collated -ioRanks '(0 3)'


新規:分散データ



個々のルートディレクトリは、異なるホスト 必要に応じてパスを入力します。現在のフレームワークでは、 スレーブプロセスごとに1つのルートを指定できますが、 -hostRootsコマンドラインオプションでホストごとのルート:


   mpirun -np 6 simpleFoam -parallel -ioRanks '(0 3)' \
       -hostRoots '("machineA" "/tmp/" "machineB" "/tmp")'


hostRootsオプションの後には、マシン名+ルートディレクトリのリストが続きます。 マシン名は正規表現を含むことができます。


新規:hostCollat​​ed



新しいhostCollat​​ed fileHandlerは自動的に 'ioRanks'を設定します。 最下位ランクのホスト名。 6つのプロセッサでsimpleFoamを実行する machineA上で0-2をランク付けし、machineBで指定されたマシンで3-5をランク付けします。 ホストファイル:


   mpirun -np 6 --hostfile hostfile simpleFoam -parallel -fileHandler hostCollated


これは


   mpirun -np 6 --hostfile hostfile simpleFoam -parallel -fileHandler collated -ioRanks '(0 3)'


この例では、ディレクトリを書きます:


   processors6_0-2/
   processors6_3-5/


典型的な例は、分散データを使用する。 2つのノード、machineAおよび machineB、それぞれ3つのプロセス:


   decomposePar -fileHandler collated -case cavity
   # Copy case (constant/*, system/*, processors6/) to master:
   rsync -a cavity machineA:/tmp/
   # Create root on slave:
   ssh machineB mkdir -p /tmp/cavity
   # Run
   mpirun --hostfile hostfile icoFoam \
       -case /tmp/cavity -parallel -fileHandler hostCollated \
       -hostRoots '("machineA" "/tmp" "machineB" "/tmp")'


Mattijs Janssensによる寄稿 [コミット5bea9a] Time :: purgeWrite:照合されたプロセッサディレクトリの処理を修正しました Other Function Objects: forceCoeffs関数オブジェクトの正規化された軸の方向[コミット828254]; フィールドの時間派生を計算するddtfunctionObject(Tobias Holzmannによる)[コミットc2835a]; 所与のフィールドにスケーリングファクタを乗算するためのスケールファンクションオブジェクトである。 単位変換のため[コミット7f49d6]; writeVTK関数オブジェクトをパッケージ化して、VTK形式のケースデータの書き込みを自動化しました[コミットb012e1]。 [コミット828254] functionObjects :: forceCoeffs:normalize liftDir、dragDirおよびpitchAxis


これらの方向を正規化しないように指定すると便利です 力を計算する前にそれらを正規化するために必要です 係数。 [コミットc2835a] functionObjects :: ddt:フィールドのオイラー時間導関数を計算して書き込む新しいfunctionObject


Tobias Holzmannが寄稿したパッチに基づいて [コミット7f49d6] scale:フィールドに倍率を掛ける関数オブジェクト [コミットb012e1] foamToVTK :: writeVTK:標準のfunctionObject設定ファイルを追加しました Other Numerics: cubic [コミット103733]を含むcellLimitedグラジエント計算の新しいリミッタ。 時間微分磁束補正の安定性/精度の改善(ddtPhiCorr)[コミットda7872]; 登録されたsolutionControlデータベース(PIMPLEなど)[コミットdfd09a]のコントロールへの便利なアクセスを提供します。 [コミット103733] cellLimitedGrad gradientLimiters:実行時に選択可能なグラデーションリミッタ機能のサポートが追加されました


Minmodはデフォルトのリミッタ関数であり、明示的な名前(例:


   gradSchemes
   {
       default Gauss linear;
       limited cellLimited Gauss linear 1;
   }


Venkatakrishnan関数とcubic limiter関数も用意されています。 明示的に指定された例:


   gradSchemes
   {
       default Gauss linear;
       limited cellLimited<Venkatakrishnan> Gauss linear 1;
   }


または


   gradSchemes
   {
       default Gauss linear;
       limited cellLimited<cubic> 1.5 Gauss linear 1;
   }


標準のminmod関数は、ほとんどのアプリケーションで推奨されますが、 コンバージェンスまたは安定性の問題が発生すると、 勾配制限を平滑化する代替物。 Venkatakrishnanはそうではありません リミッタが1を超えることができますが、立方体のリミッタは1を超えます リミッタ機能のすべての値と勾配の制約に従うように設計されているため、 見る


   Michalak, K., & Ollivier-Gooch, C. (2008).
   Limiters for unstructured higher-order accurate solutions
   of the Euler equations.
   In 46th AIAA Aerospace Sciences Meeting and Exhibit (p. 776).


キュービックリミッタ機能には、リミッタ 関数が1に達する関数は入力パラメータであり、その間にある値に設定する必要があります 1より大きい値は物理的であるが、 スキームの精度を低下させる。 [コミットda7872] ddtScheme :: fvcDdtPhiCoeff:安定性と精度のバランスが改善された配合の改善


非常にクーラントで走っているときに圧力が「驚異的」になる問題を解決する 数。 [コミットdfd09a] solutionControl:合理化、簡略化、データベースへの登録

Further Information: “Productive CFD with OpenFOAM”.


Credits

OpenFOAM 6 was produced by:

Core Team (CFD Direct): Henry Weller (co-founder & lead developer); Chris Greenshields (co-founder), Will Bainbridge Developers/Maintainers: Bruno Santos, Francesco Contino, Mattijs Janssens (co-founder), Juho Peltola, Fabian Schlegel, Ronald Oertel, Timo Niemi Patch Contributors: Tobias Holzmann, Kevin Nordin-Bates, Lorenzo Trevisan, Federico Piscaglia, Björn Pfeiffelmann, Jakub Benda, Nicolas Bourgeois, SeongMo Yeon, Stefan Hildenbrand

Licence

OpenFOAM 6 is distributed under the General Public Licence v3 by the OpenFOAM Foundation.