OpenFOAM v2406 リリースノート

2024年12月3日 (火) 23:30時点におけるMmer547 (トーク | 投稿記録)による版 (ページの作成:「 OpenCFDは、OpenFOAM® v2406の2024年6月リリースを発表します。 このリリースは、コードの多くの領域にわたってOpenFOAM-v2312の機能を拡張します。 この新機能は、OpenCFDの顧客からのスポンサーによる開発、内部資金による開発、OpenFOAMコミュニティからの機能や変更の統合を表しています。 OpenFOAMはOpenCFDによってGPLライセンスの下で配布されています。…」)
(差分) ← 古い版 | 最新版 (差分) | 新しい版 → (差分)


OpenCFDは、OpenFOAM® v2406の2024年6月リリースを発表します。 このリリースは、コードの多くの領域にわたってOpenFOAM-v2312の機能を拡張します。 この新機能は、OpenCFDの顧客からのスポンサーによる開発、内部資金による開発、OpenFOAMコミュニティからの機能や変更の統合を表しています。

OpenFOAMはOpenCFDによってGPLライセンスの下で配布されています。 様々なLinuxや他のPOSIXシステムでのコンパイルに適したソースコードパッケージに加え、このリリースにはコンパイル済みのバイナリパッケージもあります。

  • Ubuntu Linux: Ubuntu 24.04(LTS)、22.04(LTS)、20.04(LTS)、18.04(LTS)用パッケージインストール
  • openSUSE Linux: Leap 15.6、15.5用パッケージインストール
  • Redhat Linux の亜種: epel 9 用パッケージ・インストール; Fedora 40
  • apptainer イメージ: dockerhub から openfoam-dev:2406-apptainer および openfoam-dev:apptainer として入手可能。

Windowsユーザーには、コンパイル済みパッケージについて3つの選択肢がある(詳細):

  • Linux用Windowsサブシステムの使用(Ubuntu、openSUSEなどベース)
  • クロスコンパイルによるネイティブ実行可能ファイル
  • ドッカーのインストール

OpenFOAMのapptainerサポートは、事前に組み立てられたイメージではなく、記述ファイルによって提供されます:

  • 包装・容器を見る

Mac OSXユーザーには、ソースからコンパイルするか、コンパイル済みパッケージのDockerコンテナを使用するオプションがある(詳細はこちら)。

アップグレード

前処理

新しいcreateViewFactorsアプリケーション

新しいcreateViewFactorsユーティリティは、viewFactor放射モデルのパッチ間のビュー因子を作成します。 これは、現在のviewFactorsGenユーティリティを置き換える可能性があります。 ユーザーは、対面アドレッシングの構築とビューファクターの計算方法の両方に使用するモデルを選択できます。 レイ世代:

  • ボクセル:均一なボクセルに分割された空間
  • ...近い将来、さらなる方法が発表されるだろう

ビューファクターの計算:

  • viewFactorHottel: Hottelの交差弦メソッドに基づく2Dメソッド
  • viewFactor2AI: double 面積積分
  • viewFactor2LI: 二重線積分

すべての面に対してすべての面をテストする、つまりN^2アルゴリズム(viewFactorsGen)を使用する代わりに、ユーザーは面ごとにシードする光線の数を供給します。 これらは、半球全体で一様に発行されます。 したがって、結果は以前のユーティリティよりも近似的ですが、はるかに改善されたパフォーマンスでプロダクションケースに適用できるようになりました。

なお、これは現在ベータレベルであり、近い将来変更される可能性がある。

チュートリアル

  • 未定

ソースコード

  • $FOAM_UTILITIES/preProcessing/createViewFactors

Gitlab

  • Merge request #692

renumberMeshの改良

renumberMeshユーティリティに新しいオプションと機能が追加されました。

  • dry-runを-write-mapsオプションとともに使用すると、変更を加えずにリナンバリングの前後を視覚化できる(VTKファイルが作成される)。
  • フィールドに影響を与えずにメッシュの番号だけを変更するには、-no-fieldsオプションを使用します。 これは、入力フィールドが一様で、-overwriteオプションが指定されている場合に便利で、はるかに高速です。

新しい-renumber-methodオプションと-renumber-coeffsオプションは、別のファイルを編集することなくrenumberMeshを使用できるようにした。

  • renumberMesh -renumber-method CuthillMcKee
  • renumberMesh -renumber-method RCM (すなわち、逆キューシルマッキー)
  • renumberMesh -renumber-method random
  • renumberMesh -renumber-method none (非常に特殊なケースだ!)

係数を必要とするメソッドでは、-renumber-coeffsオプションで指定できる。 逆Cuthill-McKeeを指定する4つの異なる方法を示します:

  • renumberMesh -renumber-method RCM
  • renumberMesh -renumber-method CuthillMcKee -renumber-coeffs 'reverse true;'
  • `renumberMesh -renumber-coeffs 'method CuthillMcKee; reverse true;'
  • `renumberMesh -renumber-coeffs 'method RCM;'

これらの例からわかるように、-renumber-coeffsはOpenFOAM辞書の内容に対応し、比較的複雑な内容を許容します:

renumberMesh \
    renumber-method spring \
    renumber-coeffs 'maxCo 0.1; maxIter 1000; freezeFraction 0.99;'

リナンバリングメソッドに加えて、renumberMeshはリナンバリングの前に適用される-decomposeメソッドをサポートするようになった。 これは並列リナンバリングの代わりとして使用でき、ワークフローを簡素化します。

チュートリアル

  • $FOAM_TUTORIALS/mesh/parallel/cavity

ソースコード

  • $FOAM_UTILITIES/mesh/manipulation/renumberMesh

snappyHexMeshの改良

snappyHexMeshはシリアルとパラレルの両モードで実行したときに同一のメッシュを生成することを目指しています。 このリリースでは2つの同期に対応しました:

  • 2:1より遅い精製を使用する場合、すなわちnCellsBetweenLevels > 1
  • すべての点が境界上にあるセルを検出する場合。 これらの点はプロセッサの境界上にある場合は異なる扱いを受けた。

チュートリアル

  • N/A

ソースコード

  • $FOAM_SRC/dynamicMesh/polyTopoChange/polyTopoChange/hexRef8/hexRef8.C
  • $FOAM_SRC/mesh/snappyHexMesh/meshRefinement/meshRefinementProblemCells.C

Gitlab

  • Commit #690d02f9
  • Commit #e1d45ec2

surfaceInertiaユーティリティの改良

surfaceInertiaユーティリティが平均面積法線に関する情報を出力するようになり、プリ・ポスト処理中のさまざまな方向関連のジオメトリやメッシュ操作に役立つようになりました:

  • cをlinearDirectionと組み合わせることで、より優れた押し出し結果を得ることができます。
  • 変換の向き、ブロックメッシュ、結果の投影、...

ソースコード

  • $FOAM_UTILITIES/surface/surfaceInertia

新しいオーバーラップゾーン

点、面、セルのオーバーラップゾーンをサポートするユーティリティが増えました。 以前のリリースでは、これはdecomposeParと特定のソルバーでのみサポートされていました。

  • redistributePar : フルサポート
  • subsetMesh : フルサポート
  • polyTopoChange : メッシュ要素を単一のゾーンではなく、複数のゾーンに追加/修正するルーチンを拡張。
  • polyMesh : エレメントがあるゾーンをチェックするための追加質問ルーチン

これは、任意のソースを使用してtopoSet内部で直接ゾーンを構築するための既存のサポートに追加される:

name    c0;
type    cellZoneSet;
action  new;
source  boxToCell;
box     (0.04 0 0)(0.06 100 100);

これはメッシュの矩形部分から直接セルゾーンc0を生成する。

ソースコード

  • $FOAM_SRC/meshTools/topoSet/topoSets/topoSet.C

チュートリアル

  • $FOAM_TUTORIALS/mesh/parallel/filter

Gitlab

  • Merge request #670

topoSet : 幾何学的選択のオプション変換

topoSet のジオメトリック選択ソースが、選択が適用される前のセル、面中心、点の位置のオプション変換をサポートするようになりました。 変換は solidBodyMotionFunctions の形式をとります。

name                    c0;
type                    cellSet;
action                  new;
source                  boxToCell;
box                     (0.04 0 0)(0.06 100 100);
solidBodyMotionFunction rotatingMotion;
rotatingMotionCoeffs
{
    // coefficients
}

これは、<constant>/fvOptionsなどで、移動するソースをシミュレートするのに便利です:

selectionMode   geometric;
selection
{
    cyl1
    {
        action  use;
        source  cylinder;

        point1  (0.05 0.03 -1); // beg point on cylinder axis
        point2  (0.05 0.03  1); // end point on cylinder axis
        radius  0.003;

        solidBodyMotionFunction oscillatingLinearMotion;
        oscillatingLinearMotionCoeffs
        {
            // coefficients
            amplitude       (0 0.02 0);
            omega           0.7;            // rad/s
        }
    }
}

ソースコード

  • $FOAM_SRC/meshTools/topoSet/topoSets/topoSet.C

チュートリアル

  • $FOAM_TUTORIALS/basic/scalarTransportFoam/moving_source

Gitlab

  • Merge request #668
  • Merge request #693

トランスフォームの改善

transformPointsとsurfaceTransformPointsユーティリティは、メッシュ(またはサーフェス)ポイントの変換に使用されます。 新しいオプション-cylToCartは、円筒形メッシュ生成を補助するために、円筒形からデカルトへの変換を適用します。 下の例は、新しいチュートリアル$FOAM_TUTORIALS/incompressible/pimpleFoam/RAS/axialTurbine_rotating_oneBladeからのもので、左の画像は、円柱座標で構成されたコンポーネントを示し、右の画像は、デカルト座標に変換した後の断面です。

チュートリアル

  • $FOAM_TUTORIALS/incompressible/pimpleFoam/RAS/axialTurbine_rotating_oneBlade

ソースコード

  • $FOAM_UTILITIES/mesh/manipulation/transformPoints

Gitlab

  • Merge request #688

帰属

  • 変換コードを提供してくれたHåkan Nilssonに感謝する。

数値

圧縮性ケースに対する改良型MRF

エネルギー方程式は、ムービングメッシュ計算を行う際に採用される寄与と同様に、MRFが行った仕事の影響を含むようになった。 この追加項は次のような形になります:

if (MRF.active())
{
    EEqn += fvc::div(MRF.phi(), p);
}

この変更には、<case>/fvSchemesファイルに追加のエントリーが必要です。

div(phiMRF,p)   Gauss limitedLinear 1;

その効果は、コンプレッサーのケースにおける以下の総温度予測で見ることができる。左の画像は以前の挙動(v2312以前)と新しい挙動(右)を示している。

チュートリアル

  • $FOAM_TUTORIALS/compressible/rhoPimpleFoam/RAS/mixerVessel2D/system/fvSchemes

ソースコード

  • $FOAM_SOLVERS/compressible/rhoPimpleFoam/EEqn.H

Gitlab

  • Merge request #689

有限面積の改善

OpenFOAM-v2406では、将来的に複数の有限領域領域をサポートするための重要な第一歩が踏み出されました。 残念ながら、これらの変更は、有限領域を使用するワークフローに若干の調整を必要とする(他のワークフローは影響を受けない)。 OpenCFDではワークフローを中断させないように最善を尽くしていますが、やむを得ない場合もあります。

有限面積ケースのセットアップのアップグレードを支援するために、bin/foamUpgradeFiniteAreaスクリプトが用意されています:

Usage: foamUpgradeFiniteArea [OPTION]
options:
-case=DIR         Specify starting directory, default is cwd
-dry-run | -n     Test without performing actions
-verbose | -v     Additional verbosity
-link-back        Link back from new finite-area/ to old locations
-no-mesh          Do not move system/faMeshDefinition
-git              Use 'git mv' when making changes
-help             Print help and exit

Relocate finite-area files to new sub-directory locations

幸いなことに、これは思ったより複雑なことではなく、有限領域のサブディレクトリが追加されただけである。

old location new location
0/{areafield} 0/finite-area/{areafield}
constant/faMesh/ constant/finite-area/faMesh/
system/faMeshDefinition system/finite-area/faMeshDefinition
system/faSchemes system/finite-area/faSchemes
system/faSolution system/finite-area/faSolution

コード開発者にとっても、大きな変化はない。 エリア・フィールドが正しい位置に登録されていることが重要なだけだ:

// Good, uses area mesh thisDb()

areaScalarField h
(
    IOobject
    (
        "h",
        runTime.timeName(),
        aMesh.thisDb(),
//      ^-- works with v2312, v2406, ...
        IOobject::MUST_READ,
        IOobject::AUTO_WRITE
    ),
    aMesh
);

例によって、より詳しい情報はユーザーアップグレードガイドと開発者アップグレードガイドにあります。

チュートリアル

  • $FOAM_TUTORIALS/compressible/acousticFoam/obliqueAirJet/main
  • $FOAM_TUTORIALS/finiteArea/liquidFilmFoam/cylinder
  • $FOAM_TUTORIALS/finiteArea/sphereSurfactantFoam/sphereTransport
  • $FOAM_TUTORIALS/finiteArea/surfactantFoam/planeTransport
  • $FOAM_TUTORIALS/heatTransfer/buoyantPimpleFoam/hotRoomWithThermalShell
  • $FOAM_TUTORIALS/incompressible/adjointOptimisationFoam/sensitivityMaps/motorBike
  • $FOAM_TUTORIALS/incompressible/pimpleFoam/laminar/contactAngleCavity
  • $FOAM_TUTORIALS/incompressible/pimpleFoam/laminar/contaminatedDroplet2D
  • $FOAM_TUTORIALS/incompressible/pimpleFoam/laminar/filmPanel0
  • $FOAM_TUTORIALS/incompressible/pimpleFoam/laminar/inclinedPlaneFilm
  • $FOAM_TUTORIALS/incompressible/pimpleFoam/laminar/sloshing2D
  • $FOAM_TUTORIALS/incompressible/simpleFoam/motorBike/system/finite-area/faSchemes
  • $FOAM_TUTORIALS/lagrangian/kinematicParcelFoam/drippingChair
  • $FOAM_TUTORIALS/lagrangian/kinematicParcelFoam/pitzDailyWithSprinklers
  • $FOAM_TUTORIALS/lagrangian/reactingParcelFoam/liquidFilmStepWithSprinklers
  • $FOAM_TUTORIALS/lagrangian/reactingParcelFoam/splashPanelFilm

ソルバーと物理モデル

温度依存の放射特性

constantAbsorptionおよびconstantTransmissivity放射サブモデルが更新され、吸収率、放射率、透過率などの時間変化する特性がサポートされました。 チュートリアル

  • TBA

ソースコード

  • $FOAM_SRC/thermophysicalModels/radiation/submodels/wallAbsorptionEmissionModel/constantAbsorption
  • $FOAM_SRC/thermophysicalModels/radiation/submodels/wallTransmissivityModel/constantTransmissivity

Gitlab

  • Merge request #685

新しいFreezeParticlesクラウド機能オブジェクト

新しいFreezeParticlesクラウドファンクションオブジェクトは、パーティクルのアクティブフラグをfalseに設定し、物理モデルを進化させながら空間内でパーティクルをフリーズさせます。 使用例:

cloudFunctions
{
    FreezeParticles
    {
        // Mandatory entries
        type    FreezeParticles;
    }
}

チュートリアル

  • $FOAM_TUTORIALS/lagrangian/kinematicParcelFoam/particleDrag/parcelInBox

ソースコード

  • $FOAM_SRC/lagrangian/intermediate/submodels/CloudFunctionObjects/FreezeParticles

Gitlab

  • Merge request #686

トミヤマ新バブル・ドラッグ・モデル

tomiyamaDragモデルがラグランジュ粒子追跡ライブラリに追加されました。 使用例:

subModels
{
    particleForces
    {
        tomiyamaDrag
        {
            sigma       0.07;
            contamination pure; // pure | slight | full
        }
    }
}


チュートリアル

  • $FOAM_TUTORIALS/lagrangian/kinematicParcelFoam/particleDrag/parcelInBox

ソースコード

  • $FOAM_SRC/lagrangian/intermediate/submodels/Kinematic/ParticleForces/TomiyamaDrag

参考

  • Tomiyama, A., Kataoka, I., Zun, I., Sakaguchi, T. (1998) Drag coefficients of single bubbles under normal and micro gravity conditions JSME International Journal, 41(2), 472-479.

Gitlab

  • Merge request #686

icoReacting...Foamソルバーの改良

icoReactingMultiphaseInterFoamソルバーアプリケーションがインクリメンタルアップデートを受けました:

  • 追加乱流モデルへのアクセス:realizableKE、kOmega、kOmegaSST
  • <case>/fvSolution を使ってフローを凍結させることもできる。
PIMPLE
{
    frozenFlow      yes;
    ...
}

ソースコード

  • $FOAM_SOLVERS/multiphase/icoReactingMultiphaseInterFoam

Gitlab

  • Issue #3128
  • Commit #bb483951

後処理

新しいviewFactorHeatFlux関数オブジェクト

viewFactorHeatFlux関数オブジェクトを使用すると、viewFactor放射モデルを使用した場合のパッチ間の熱交換を簡単に特定することができます。 使用例:

viewFactorHeatFlux1
{
    // Mandatory entries (unmodifiable)
    type        viewFactorHeatFlux;
    libs        (utilityFunctionObjects);

    // Optional entries (runtime modifiable)
    qr          qr;
}

チュートリアル

  • NA

Source code

  • $FOAM_SRC/functionObjects/utilities/viewFactorHeatFlux

新しいEnsightシングル・ファイル・フォーマットの読み込み

過渡的な結果を保存するために複数のファイルを使用する、より馴染み深いEnSightのケースに加えて、EnSightは、より効率的、あるいは単純により便利に使用できる可能性のある、単一のファイル形式での過渡的な結果の保存も可能です。 このリリースでは、このトランジェント・シングル・ファイル・フォーマットが、サポートされるサーフェス・フィールド・フォーマットとして、*MappedFile*関数やsurfaceNoiseユーティリティなどで使用できるようになった。

ソースコード

  • $FOAM_SRC/fileFormats/ensight/file
  • $FOAM_SRC/surfMesh/readers/ensight

Gitlab

  • Merge request #682

新しいEnsightクラウド機能オブジェクト

ensightCloud関数オブジェクトは、ラグランジュデータをEnSight計測フォーマットで書き込みます。 並行して、すべてのデータがマスターから書き込まれます。 ensightCloud関数オブジェクトの設定パラメータと動作は、ストライドに基づく区画選択、フィールドフィルタリングなどをサポートするvtkCloud関数オブジェクトとほぼ同じです。

生成されたEnSightファイルには、メッシュのバウンディングボックスも含まれます。これは、視覚化のためのリファレンスとなります(ParaViewリーダーにも必要です)。

ソースコード

  • $FOAM_SRC/functionObjects/lagrangian/ensightCloud

新しい多面体セル変換

cellDecomposer関数オブジェクトは、mapFieldsユーティリティと同様に、セルを「基本」形状に分解し、選択したフィールドをその上にマッピングします。 主な利点は、多面体形状を扱えないサードパーティ製ツールでOpenFOAMメッシュや結果をポスト処理する場合です。 2つの主要なコントロールがあります:

  • 細胞の選択。 これはどのfvOptionとも同じコントロールを使う。例えばselectionMode allやselectionMode cellSetなど。
  • decomposeTypeによる分解方法:
    • faceCentre : 面の中心とセルの中心を使ってセルをテットに分解する。
    • faceDiagonal : 面対角を使ってセルをテッツに分解。ラグランジュ粒子トラッキングの分解と似ていて、ヘックスが6*2のテッツになる。
    • ピラミッド:面はそのままに、セルの中心を使って(多角形ベースの)ピラミッドを作る。
    • faceDiagonalQuads : faceDiagonalに似ているが、面を[三角形のみ]ではなく、四角形と三角形に分割する。
    • polyhedral : faceDiagonalQuadsのようなものだが、選択された集合内の非hex/prism/tetセルだけを分解する。 多面体メッシュを「単純」メッシュに変換するのに使用。

すべての多面体セルを非多面体セルだけを含むサブリージョンメッシュに変換する典型的な例:

functions
{
    cellDecomposer
    {
        // Mandatory entries
        type            cellDecomposer;
        fields          (p U);
        mapRegion       simpleMesh;

        // Execute when results are written
        writeControl    writeTime;

        // Decompose type
        decomposeType   polyhedral;

        // Which cells to convert
        selectionMode   all;
    }
}

このメッシュと結果は、通常の-regionオプションを使って処理できる:

checkMesh -region simpleMesh
foamToEnsight -region simpleMesh

下の画像はシンプルな3セル厚のブロックメッシュで、コーナーセルの1つが2x2x2リファインメントを使って分割され、多面体セルが作成されている:

左:リファインメントを施した元のメッシュ、右:新しいファンクションオブジェクトを実行した後、残りのセルは六角形、四角錐、角柱、四面体になる。

ある幾何学的領域内のすべてのセルを四面体に変換する別の例:

functions
{
    cellDecomposer
    {
        // Mandatory entries
        type            cellDecomposer;
        fields          (p U);
        mapRegion       tetMesh;
        // Decompose type
        decomposeType   faceCentre;
        // Which cells to convert
        selectionMode   geometric;
        // Generate cellSet c0 using topoSet commands:
        cellSet         c0;
        selection
        {
            a
            {
                action  use;
                source  boxToCell;
                box     (1 1 1)(0 0 0);
            }
            b
            {
                action  invert;
            }

        }
    }
}

制限事項

  • メッシュの移動とトポロジーの変更は現在サポートされていません。
  • 微細化によってセルを分解すると、2つのセルの間に複数の面ができることがある:
    • ヘクスは2つのエッジに分割される。エッジで接続されたセルはリファインされるからだ(このヘクスは多面体セルとなる)。
    • 元の六角形のエッジは2つの隣接する四面体に分割されるが、今度はその間の四角形が2つの三角形に分割され、どちらも同じ2つのセルを共有する:
  • と報告される。
Checking topology...
    ..
  <<Found 2015 neighbouring cells with multiple inbetween faces.
    Upper triangular ordering OK.
  <<Writing 4034 unordered faces to set upperTriangularFace
  • 複雑なセルを分割すると、幾何学的に無効なセルが簡単に生成される。
***High aspect ratio cells found, Max aspect ratio: 1.59875e+96, number of cells 99
  <<Writing 99 cells with high aspect ratio to set highAspectRatioCells
    Minimum face area = 1.34886e-06. Maximum face area = 1.00344.  Face area magnitudes OK.
 ***Zero or negative cell volume detected.  Minimum negative volume: -3.55077e-07, Number of negative volume cells: 99
  <<Writing 99 zero volume cells to set zeroVolumeCells
    Mesh non-orthogonality Max: 158.664 average: 21.4979

ソースコード

  • $FOAM_SRC/src/functionObjects/field/cellDecomposer/cellDecomposer.H

チュートリアル

  • $FOAM_TUTORIALS/lagrangian/kinematicParcelFoam/spinningDisk

パラレル

GAMG : プロセッサ・アグロメレーションを修正する

ローカル・アグロメレーションに加えて、GAMGソルバーは、プロセッサー・アグロメレーションを使用してプロセッサー間で行列を結合することもサポートしている。 これは、以下の理由により、コア数が多い場合に特に効果的であることが示されている:

  • コアの数を減らすことは、最も粗いレベルで作用する。
  • スムージングやプリコンディショニングなど、すべての操作の暗黙性を高める。

以前のリリース(v2312)では、あらゆる種類の結合境界条件を含めることができるようにメカニズムが書き換えられました。 しかし、これは既存の、プロセッサ境界のみの、プロセッサのアグロメレーションを壊しました。 これは今回のリリースで修正されました。

ソースコード

  • $FOAM_SRC/OpenFOAM/matrices/lduMatrix/solvers/GAMG/GAMGSolverAgglomerateMatrix.C

チュートリアル

  • $FOAM_TUTORIALS/basic/laplacianFoam/implicitAMI-nonblocking

Gitlab

  • Merge request #645
  • Issue #3172

cyclicAMI : 大きなコア数の線形ソルバーにおけるcyclicAMIの修正

マージリクエスト#641で導入された、終了したMPIリクエストへの参照を保持するオーバーラップ通信が修正されました。 これはコア数が大きく、インターコネクトが高速で、パイプライン化された線形ソルバーで発生する可能性があります。 ソースコード

  • $FOAM_SRC/finiteVolume/fields/fvPatchFields/constraint/cyclicAMI/cyclicAMIFvPatchField.C
  • $FOAM_SRC/finiteVolume/fields/fvPatchFields/constraint/cyclicACMI/cyclicACMIFvPatchField.C
  • $FOAM_SRC/meshTools/AMIInterpolation/GAMG/interfaceFields/cyclicAMIGAMGInterfaceField/cyclicAMIGAMGInterfaceField.C
  • $FOAM_SRC/meshTools/AMIInterpolation/GAMG/interfaceFields/cyclicACMIGAMGInterfaceField/cyclicACMIGAMGInterfaceField.C

Gitlab

  • Merge request #641

ユーザビリティ

新しいルックアップ機能1

lookup' 関数1

データベース(通常はメッシュ)からUniformDimensionedFieldを検索できる新しいルックアップ関数1が導入されました。 これは、境界条件やシミュレーション設定などの計算値に適用することができます。 次の例は、rotatingMotionモデルで計算された回転速度を使用する方法を示しています:

solidBodyMotionFunction rotatingMotion;
rotatingMotionCoeffs
{
    origin      (0.005 0.005 0.005);
    axis        (0 0 1);
    omega       lookup;
    // Name of UniformDimensionedField to look up
    name        myRotationalVelocity;
}

または拡張構文、例えばすでに名前エントリーが存在する場合:

omega       lookup
lookupCoeffs
{
    name    myRotationalVelocity;
}

変数の中には、UniformDimensionedFieldとしてすでに利用可能なものもある。 その他の変数は、例えばコード化された関数オブジェクトの中など、ユーザーコーディングによって追加することができます:

libs            (utilityFunctionObjects);
type            coded;
name            register_myVar;

codeRead
#{
    const IOobject io
    (
        "myVar",
        mesh().time().constant(),
        mesh()
    );

    auto* ptr =
        const_cast<objectRegistry&>
        (
            io.db().findObject<uniformDimensionedScalarField>(io.name())
        );

    if (!ptr)
    {
        ptr = new uniformDimensionedScalarField
        (
            io,
            dimless,
            0.80
        );
        ptr->store();
    }
#};

'lookup' PatchFunction1

このバリアントはパッチ上で動作し、与えられた名前のボリューム、サーフェス、またはポイントフィールドを検索し、パッチ上の値を抽出する。

movingWall
{
    type            uniformFixedValue;
    uniformValue    lookup;
    name            U.water;    // use patch value of field U.water
    value           $internalField;
}


チュートリアル

  • $FOAM_TUTORIALS/mesh/blockMesh/pipe

ソースコード

  • $FOAM_SRC/finiteVolume/expressions/PatchFunction1

topoSetユーティリティの改善:セットまたはゾーンの選択

topoSet ソース・メソッドで set または sets というキーワードを期待するメソッドは、zone または zones というキーワードも受け付けるようになった。 これは、constant/polyMesh/sets ディレクトリからセットを読み込む代わりに、現在のメッシュゾーンから要素を選択します。 Gitlab

  • Merge request #674

新しい周期的環状AMIチュートリアル

周期的に繰り返されるAMIの症例を組み立てるのは難しい。 OpenFOAMコミュニティのメンバーであるHakan Nilsson氏から提供された回転軸流タービンケースは、メッシュが円筒座標で構築され、後にOpenFOAM v2406の新しい変換オプションを使用してデカルト座標に変換されます。


チュートリアル

  • $FOAM_TUTORIALS/incompressible/pimpleFoam/RAS/axialTurbine_rotating_oneBlade

Gitlab

  • MR!648

Attribution

  • ホーカン・ニルソンに感謝

コミュニティ

新しいサブモジュール: データ駆動モデリングSIGリポジトリ

OpenFOAMガバナンス内のData-Driven Modelling Special Interest Groupから、入れ子になったサブモジュールを含む新しいコミュニティ・サブモジュールが開始されました。 このサブモジュールは、公開されているData-Driven Modelling Special Interest Groupリポジトリでホストされています。 コミュニティ・サブモジュールは、CFDや機械学習モデルに関する学術的・産業的な貢献のホストとして機能し、知識交換の場を作り、コラボレーションを促進する。

BitbucketやGitHubのような、gitベースのソースコードリポジトリホスティングサービスにホストし、このサブモジュールを介してOpenFOAMソフトウェアにリンクすることができます。

今回のリリースでは、以下のサブモジュールを発表する:

  • openfoam-smartsim : SmartRedisとSmartSimによるOpenFOAMと機械学習の結合。
  • NN_Pred : CFDコードに機械学習モデルを導入するためのインターフェイスライブラリ。


ソースコード

  • https://gitlab.com/openfoam/community/sig-data-modelling/data-community

Attribution

  • OpenCFD would like to acknowledge and thank the data-driven modelling special interest group members; Weishuo Liu and their colleagues for their valuable contributions and assistance.

Turbulence TCリポジトリへの新しい投稿

乱流技術委員会リポジトリの傘下に、以下の6つのリポジトリを公開いたします:

  • MachineLearningTurbulenceModels : 機械学習アプローチに基づくいくつかの乱流モデル。
  • KOSSTPDA : プログレッシブデータ拡張k-ωSSTモデル.
  • SpalartAllmarasRCsend : Spalart-Shur曲率補正を用いたSpalart-Allmaras乱流モデル.
  • SST-CND : SST-CNDモデル。
  • dynamicSmagorinsky : ダイナミックスマゴリンスキーモデル。
  • EllipticBlending : k-epsilonラグ楕円ブレンディング乱流モデル.

ソースコード

  • $WM_PROJECT_DIR/plugins/turbulence-community

Attribution

OpenCFDは謝意を表する。

  • the Turbulence Technical Committee
  • Matheus Macedo, Chenyu Wu, Yufei Zhang Michael Alletto, Mario J. Rincón, Alberto Passalacqua, Eleonora Gajetti, and their colleagues for their valuable contributions and assistance.

会社概要

OpenFOAMは、ESI-OpenCFDのコアチームによって制作されています。 アンドリュー・ヘザー

マティス・ヤンセンス

マーク・オレセン

プラシャント・ソナーカル

パワン・ギルディヤル

クタルムシュ・ベルシン

マテイ・フォルマン

キアラ・ペシ

マルティン・リヒトメス

ジリ・ポランスキー

アン・ロンチェッティ

フレッド・メンドンサ

スワプニル・サロケ

ヴェンカタ・ラマナ・イーガ

グローバルESIチームからの幅広いサポート

ESIグループ

ESIグループ(ESIソフトウェア(インド)プライベート・リミテッド)

ESIグループ(北米)

ESIグループ(日本ESI)

ESIウェブチーム

そして、以下からの貢献

OpenFOAMコミュニティ