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

提供:オープンCAEWiki OpenCAE Wiki
ナビゲーションに移動 検索に移動
(ページの作成:「OpenFOAM Foundationは、OpenFOAMオープンソースCFDツールボックスのバージョン7のリリースを発表しました。 バージョン7はOpenFOAM開発...」)
 
(相違点なし)

2019年7月15日 (月) 00:18時点における最新版

OpenFOAM Foundationは、OpenFOAMオープンソースCFDツールボックスのバージョン7のリリースを発表しました。 バージョン7はOpenFOAM開発バージョンのスナップショットで、持続可能な開発を通じて常にリリース可能です。 これは、使いやすさ、堅牢性、および拡張性に対する厳しい要求と共に、既存のコードに対する新機能と大幅な改善を提供します。 OpenFOAM 7には、次の主要開発が含まれています。

  • 熱伝達:ソルバーを統合し、収束性と堅牢性を改善しました。
  • 粒子追跡:ロバスト性の改善と計算の最適化
  • 多相:波の減衰、設定可能な入口位相特性、より優れた整定数値
  • 多相モデルの反応:熱伝達、個体群収支、崩壊、合体など
  • 反応/燃焼簡単なケース設定
  • 乱流:壁機能の一貫性と安定性の向上、情報源の追加。
  • 熱物理:熱力学関数、温度ひずみ依存粘度。
  • 他のモデル:大気、剛体力学、境界条件、発生源。
  • メッシュ:標準化された動的メッシュ機能、改良されたモーションソルバー。
  • ケース構成:データの視覚化、設定ツール、機能オブジェクトの改善。
  • 計算:コンテナ、フィールド、並列実行などの改善
  • 約550コードコミット、250+解決済みの問題
  • ISO / IEC 14882:2011(C ++ 11):GCC v4.8以降、Clang v7.0以降、Intel ICC v18.0以降でテスト済み。

OpenFOAM 7は以下のプラットフォーム用にパッケージされています。PlaView5.6.0では、(サポートされている)グラフィックスカードを持たないシステム用のLLVM / Galliumアクセラレーションを備えたMesaを含みます。

Ubuntu Linux:Ubuntu 16.04、18.04、および19.04のパッケージインストール。 その他のLinux:Dockerコンテナを使ったインストール。 またはソースコードからのコンパイル Windows 10:Linux用のWindows SubsystemとUbuntuパックを使用したインストール。 macOS:Dockerコンテナを使ったインストール。

OpenFOAM 7 Source Packは適切なLinuxプラットフォームでコンパイルできます。


熱伝達

ソルバー:Boussinesqの状態方程式はどんな浮力ソルバーにも適用でき、特殊化されたbuoyantBoussinesq [SP] implementsFoamソルバーは非推奨になりました。

buoyinesBoussinesq [SP] implements Foam:より一般的な浮力[SP] implements Foamソルバーに置き換えBoussinesq状態方程式を選択すると、特殊なBoussinesqソルバーの代わりに一般的な浮力ソルバーbuoyantSimpleFoamとbuoyantPimpleFoamを使用できます。 Boussinesqソルバーでは実行不可能または実用的ではなかったであろう、圧力境界条件と放射およびfvOptionsのサポートを提供します。 他の非圧縮状態方程式もサポートされています。 ほとんどの気体問題に対して、incompressiblePerfectGasの状態方程式はBoussinesqの状態方程式よりも正確である可能性があります。 buoyantBoussinesq [SP] implementsFoamチュートリアルが更新され、対応するbuoyant [SP] implementsフォームディレクトリに移動しました。

その他:エンタルピーを用いた層流の補正熱拡散

thermophysicalModels:エネルギーの層流熱拡散率、alphaheを追加

heの層流輸送に必要(hまたはe)

バグ報告https://bugs.openfoam.org/view.php?id=3025を解決しました

ケース設定:エンタルピーではなく内部エネルギーを解決するためにコードと設定を更新することによって、いくつかのチュートリアルの収束と安定性を改善しました。

thermophysicalModels :: eRefConstThermo:内部エネルギーで優先的に使用される新しい熱力学hRefConstThermo。

逆熱伝達と燃焼を含むreverseBurnerチュートリアルの数値、化学、一般的な設定を改善

chtMultiRegionFoam:reverseBurnerチュートリアルの改善

チュートリアルは2次元からくさび形に変換され、流れは旋回安定化されました。 乱流パラメータは物理的になりました。 輸送計画は2次に増加しました。 反応メカニズムは、公的にアクセス可能な参照からのものに変更されました。 気体熱力学は非圧縮性になり、圧力はゼロ付近で相殺され、圧力解の挙動が改善されます。

そして輻射。

chtMultiRegionFoam:reverseBurnerチュートリアルに輻射を追加しました

シェルアンドチューブ式熱交換器の共役熱伝達例を追加。

chtMultiRegionFoam:シェルアンドチューブ熱交換器のチュートリアルを追加しました

このチュートリアルは、レイヤを追加してマルチリージョンメッシュを作成する方法のリファレンスとして役立ちます。

multiRegionHeaterチュートリアルとその派生形は、ジオメトリが意味を成さず、機能が他の場所に表示されるようになったため削除されました。

データ処理:反応ケースでのみ使用され、一般的なCHTの使用は反応をシミュレートしないため、chtMultiRegionFoamからQdotを削除しました。

chtMultiRegionFoam:トップレベルソルバーからQdotを削除

Qdotは事件を反応させるためだけに関係があり、それでもそれは
後処理の目的で書き出されています。 から削除されました
このソルバーの典型的な使用方法としてのchtMultiRegionFoamは、反応しないためのものです。
シミュレーション

chtMultiRegionFoamシミュレーションからQdotを取得したい場合は、
それならもっと良い方法は関数オブジェクトを実装して
反応モデルとそれを書き出します。

数値:rhoPimpleFoamでより良い圧力と密度の制限を持つ、過渡的な熱/圧縮性流れのロバスト性が向上しました。

rhoPimpleFoam:改善された圧力と密度の制限

エネルギー温度の反復が失敗した場合、失敗の診断に役立つように、温度、エネルギー、および比熱が各ステップで書き出されるようになりました。

specie :: thermo:エネルギー - >温度反復法にもっと良い診断法を追加

繰り返しが失敗した場合、温度を表示しながら繰り返しを再実行します。
各反復のエネルギー、熱容量および更新された温度は助けるために
どのプロパティが収束の失敗を引き起こしているかを診断します。

熱輻射:輻射プロパティから余分な輻射スイッチを削除しました。 輻射はradiationModel noneによってオフにされます。

radiation:radiationPropertiesから冗長な "radi off"スイッチを削除しました

輻射を止めるにはsetradiationModel none;

データまたは係数を読み込まず、フィールドを評価しない「null」モデルをインスタンス化するradiationProperties内。


粒子と追跡

トラッキング:AMIインターフェース間でトラッキングするための投影方向を修正しました。 回転ジオメトリ内の粒子用

パーティクル:AMI間のトラッキングの改善

メッシュの動きの影響を含むように投影方向が修正されました。 ソース面とレシーブ面の向きが異なり、粒子の変位が両方に向いている場合が検出され、処理されます。

パーティクルの誤った除去を修正しました。

パーティクル:変換のための固定AMI変位チェック

バグ報告https://bugs.openfoam.org/view.php?id=3212を解決しました

閉ループによるハングから粒子シミュレーションを防止しました。

particle:閉ループを破るロジックを追加

四面体分解の一部が逆になると、直線に沿って追跡すると閉ループになることがありますが、終了することはありません。

この変更により、既に達成された最大距離の前または最大距離で終了するトラック数に制限が追加されます。 これはこれらの閉ループを壊し、シミュレーションがハングするのを防ぎます。 しかしながら、ステップの中間点で追跡が放棄される結果として、粒子は誤った位置になってしまう。 いつこれが発生しているのかを示す警告が表示されます。

これはバグ報告https://bugs.openfoam.org/view.php?id=3056を解決します。

パーティクルドラッグが壁のリバウンドと競合したときにハングを解消するための補間方法が追加されました。

interpolationCellPointWallModified:復元された補間方法

この内挿法は、以前にfbf0020コミットによって削除されました。

この方法の目的は、ラグランジュ要素の位置に内挿したときの速度にすべりのような壁境界条件を与えることです。 壁を通過する速度によって抗力モデルと反発壁の相互作用が「闘う」可能性があるため、これは困難です。 すなわち、抗力が粒子を壁に押し付け、壁がそれを跳ね返す。 これにより、プログラムがハングアップする可能性があります。

この方法は、ベクトル場を壁の点に外挿してから、壁を通過しないように結果を修正します。 ベクトルを(逆の)点法線に向かって回転させることによってこれを行います。 必要な回転が90度を超えると、結果もゼロになるように調整されます。

これはバグ報告に対する代替解決策を提供します。
https://bugs.openfoam.org/view.php?id=2826

セルエッジに沿ったパーティクル追跡の堅牢性が向上しました。

パーティクル:エッジに沿ったトラッキングの堅牢性を向上

丸め誤差よりも小さい局所変位のために粒子が四面体から出ないように、トラッキングヒット基準がわずかに変更されました。 これは、パーティクルがエッジに沿ってすべてのtetを離れているとパーティクルが判断した場合の、エッジに沿った解決できない相互作用を防ぎます。

大域垂直関数を持つ乱数を使った垂直ベクトル計算の置き換え。

Lagrangian:乱数ベースの垂直ベクトル計算の例を削除

垂直ベクトルは大域的な「垂直」関数を使用して生成されるべきであり、それは乱数発生器とループなしでゼロでない結果を保証する。

最適化:静止メッシュを使用した場合の粒子追跡の効率が向上しました。

ポリメッシュ/パーティクル:オプションで旧セル中心を格納

移動メッシュ追跡アルゴリズムは、前の時間ステップでセル中心を必要とします。 これらはもともとpolyMeshによって保存されていなかったので、それらはオンザフライで生成されていました。 いくつかの追跡が支配的なケースでは、これは容認できないオーバーヘッドを引き起こしました。

polyMeshは、昔のセルセンターをオンデマンドで保存します。 それらはデフォルトでは保存されません(昔のポイントのように)、それでそれらが必要とされるならアクセッサはどんなメッシュモーションの前に呼ばれるべきです。 通常これはどんな機能がそれを必要とするものでも構築中です。
例についてはCloud.Cを参照してください。

メッシュモーションが終了する可能性を考慮して、昔のポイントの保存と更新のロジックも改善されました。

インジェクション:coneInjection内のパーティクルに対する統合されたコーンインジェクション。ランダムな分布を修正して中心線への偏りを取り除きます。

coneInjection:コーンとコーンノズルの組み合わせによる注入

coneInjectionはconeNozzleInjectionの機能を含むように拡張され、後者は削除されました。

一部のパラメーターは名前が変更されています。 coneInjectionの「positionAxis」エントリは、coneNozzleInjectionの単一の「position」および「direction」エントリを排除して削除されました。これは、1つのモデルにつき1つの注入サイトのみが可能であることを意味します(辞書置換は、同じパラメーターを持つ追加の注入サイトを追加するために最小限の追加のみが必要であることを意味します)。速度の大きさの名前は "Umag"として標準化され、 "innerDiameter"と "outerDiamater"は、内側と外側の祈りの角度との一貫性のために "dInner"と "dOuter"に改名されました。

速度の大きさと直径は、必要でないときはもう読みません。

無作為化は、注入が注入方向に垂直な断面上に均一な分布を生成するように変更されています。以前は、中心線に向かって説明できない偏りがありました。

パラメータの全リストを含む指定例を以下に示します。

injectionModels
{
model1
{
type coneInjection;

// Times
SOI 0;
duration 1;

// Quantities
massTotal 0; // <-- not used with these settings
parcelBasisType fixed;
parcelsPerSecond 1000000;
flowRateProfile constant 1;
nParticle 1;

// Sizes
sizeDistribution
{
type fixedValue;
fixedValueDistribution
{
value 0.0025;
}
}

// Geometry
positions (-0.15 -0.1 0);
directions (1 0 0);
thetaInner 0;
thetaOuter 45;
// - Inject at a point
injectionMethod point;
// - Or, inject over a disc:
/*
injectionMethod disc;
dInner 0;
dOuter 0.05;
*/

// Velocity
// - Inject with constant velocity
flowType constantVelocity;
Umag 1;
// - Or, inject with flow rate and discharge coefficient
// This also requires massTotal, dInner and dOuter
/*
flowType flowRateAndDischarge;
Cd 0.9;
*/
// - Or, inject at a pressure
/*
flowType pressureDrivenVelocity;
Pinj 10e5;
*/
}

model2
{
// The same as model1, but at a different position
$model1;
position (-0.15 0.1 0);
}
}

粒子のコーンインジェクションの位置と方向は時変になります。

ConeInjection:時変位置と方向のサポートを追加

円錐注入部位の位置と方向は、注入開始に対して時間的に変化するようにFunction1を使用して指定できるようになりました。

関連エントリの指定例を以下に示します。

injectionModels
{
injection1
{
type coneInjection;
position table
(
(0 (-0.1 -0.1 0))
(0.25 (0.1 -0.1 0))
(0.5 (0.1 0.1 0))
(0.75 (-0.1 0.1 0))
(1 (-0.1 -0.1 0))
);
direction table
(
(0 (-1 -1 0))
(0.25 (1 -1 0))
(0.5 (1 1 0))
(0.75 (-1 1 0))
(1 (-1 -1 0))
);
outOfBounds repeat;

// etc ...
}
}

2つの関数のパラメータのキーワードが衝突する場合、サブ辞書も使用できます。

injectionModels
{
injection1
{
type coneInjection;
position tableFile;
positionCoeffs
{
file "constant/injection1.positions";
outOfBounds clamp;
}
direction tableFile;
directionCoeffs
{
file "constant/injection1.directions";
outOfBounds repeat;
}

// etc ...
}
}

同じ位置を繰り返し探索することを防ぎ、したがって単純な場合には前の実施形態の効率をほぼ維持するために、定常関数で定数関数が使用されているかどうかを判断するためのチェックも行われる。

モデリング:ドラッグモデルを一般化し、SchillerNaumannモデルを追加しました

lagrangian:drag:さまざまな改良

高密度ドラッグモデル(WenYu、ErgunWenYu、PlessisMasliyah)は拡張されているため、他の方法では利用できない場合に独自のボイド率フィールドを作成できます。

ドラッグモデルの重複機能は一般化され、現在は複数のモデルで利用されています。

それらが見つかる可能性があるすべてのモデルについての参照が追加されました。
さらに、追加のドラッグモデルSchillerNaumannが追加されました。
これはsphereDragと同じ形式で、同じシナリオ用に設計されています。 まばらに分布した球状粒子。 SchillerNaumann形式はより広く参照されており、現在は標準と見なされるべきです。

すべてのフォースモデルがすべてのパーセルタイプで使用できるようになったため、サーモパーセル固有のフォースインスタンシエーションマクロは削除されました。

バグレポートhttps://bugs.openfoam.org/view.php?id=3191を解決しました


一般的なマルチフェーズ

モデリング:多相流の単相でのスカラー輸送用の新しいphaseScalarTransport関数オブジェクト。

functionObjects:phaseScalarTransport関数を追加しました

これはscalarTrasport関数に似ていますが、輸送されるスカラーが多相シミュレーションの単一フェーズに限定されている点が異なります。 scalarTransport関数に対する通常の指定(すなわち、場、スキームおよび解のパラメータ)に加えて、ユーザはそれを生成するために使用することができる位相フラックスまたは圧力場を指定する必要がある。

interFoamの使用例

phaseScalarTransport1
{
type phaseScalarTransport;
libs ("libsolverFunctionObjects.so");

field s.water;
p p_rgh;
}

reactTwoPhaseEulerFoamの使用例

phaseScalarTransport1
{
type phaseScalarTransport;
libs ("libsolverFunctionObjects.so");

field s.water;
alphaPhi alphaRhoPhi.water;
rho thermo:rho.water;
}

この関数は、解決される単位位相あたりのフィールド(上記の例ではs.water)と、混合処理の合計フィールド(alphaS.water)の両方を書き出します。これは、後処理に適しています。

dynamicAlphaContactAngle境界条件は、接触角について異なる規則をサポートするようになりました

dynamicAlphaContactAngleFvPatchScalarField:代替方向規則のサポートを追加しました

Description

動的alphaContactAngleスカラー境界条件

使用法
標準プロパティ
\table
Property | Description | Required | Default value
theta0 | Equilibrium contact angle | yes |
uTheta | Velocity scale | yes |
\endtable

前進および後退接触角は、次のいずれかで指定できます。
インターフェースの法線方向に関して:
\table
Property | Description | Required | Default value
thetaA | Limiting advancing contact angle | yes |
thetaR | Limiting receding contact angle | yes |
\endtable

あるいは位相の外側方向に関して:\table
Property | Description | Required | Default value
thetaAdv | Limiting advancing contact angle | yes |
thetaRec | Limiting receding contact angle | yes |
\endtable

インタフェース法線方向規約を使用した境界条件指定の例:

\verbatim
<patchName>
{
type dynamicAlphaContactAngle;
uTheta 1;
theta0 90;
thetaA 70;
thetaR 110;
limit gradient;
value uniform 0;
}
\endverbatim

位相外向きの規則(法線方向の反対)を使用した境界条件指定の例:

\verbatim
<patchName>
{
type dynamicAlphaContactAngle;
uTheta 1;
theta0 90;
thetaAdv 110;
thetaRec 70;
limit gradient;
value uniform 0;
}
\endverbatim

Resolves feature request https://bugs.openfoam.org/view.php?id=2864

性能/数値:セトリング問題の解決法を改善するためにMULESアルゴリズムにオプションの境界極値係数を追加

MULES:オプションのboundaryExtremaCoeffを追加

これにより、許容される内部および境界の極値を指定する際の柔軟性が高まります。

driftFluxFoamやその他のセトリング問題では、boundaryExtremaCoeffを1に設定して(以前のデフォルトの動作であった)底壁へのパーシャルの高速累積を可能にすることは有益ですが、これは一様な問題がある多くのオイラーオイラーケースには適していません 係数は、0または小さい値であることが好ましい。

デフォルトでは、boundaryExtremaCoeffはextremaCoeffに設定されており、デフォルトは0で、以前の動作を提供します。

OpenFOAM-devコミットcb2bc60

そしてdriftFluxFoamチュートリアルが更新されています

boundaryExtremaCoeff 1;

fvSolutionのMULESコントロールに、以前の動作を再現します。

driftFluxFoamのBinghamPlasticモデルに、VTTフィンランドで、高位相分数の浮動小数点誤差を回避するためのリミッターを追加しました

driftFluxFoam :: BinghamPlastic:高位相分数に対する浮動小数点例外を回避するためのリミッターが追加されました

VTTのJuho Peltolaによるパッチの提供。

Marine / Waves:表面波によるシミュレーションでは、新しいwavePropertiesファイルを使用して、平均流が波の摂動から分離されました。

波動:波動摂動モデリングからの平均流の分割

ウェーブライブラリの柔軟性を高めるために、waveSuperpositionクラスから平均フロー処理が削除されました。 これにより、waveSuperpositionは純粋に平均バックグラウンドフローへの摂動という点で機能します。

入力も分割され、waveはconstant / wavePropertiesでリージョン全体の設定として定義されるようになりました。 平均流量パラメータは、境界条件によってさらに規定される。

速度境界の新しいフォーマットははるかに簡単です。 平均流速のみが必要です。

0 / Uの場合:

boundaryField
{
inlet
{
type waveVelocity;
UMean (2 0 0);
}
// etc ...
}

他の波境界条件は変わっていません。

constant / wavePropertiesファイルには、ウェーブモデルの選択と、それに関連する座標系とスケーリング関数を定義するための設定が含まれています。

constant / wavePropertiesの場合:

origin (0 0 0);
direction (1 0 0);
waves
(
Airy
{
length 300;
amplitude 2.5;
phase 0;
angle 0;
}
);
scale table ((1200 1) (1800 0));
crossScale constant 1;

0 / Uの場合:setWavesは、コマンドライン引数に頼るのではなく、system / setWavesDictファイルを使用するように変更されました。 また、複数のインレットパッチに関連するあいまいさを防ぐために、平均速度を指定する必要があります。 例を以下に示します。

system / setWavesDictの場合:

alpha alpha.water;
U U;
liquid true;
UMean (1 0 0);

新しい等方性減衰fvOptionは、指定された均一な流速に向かって波を減衰させます

fvOptions :: isotropicDamping:新しい波を減衰させるfvOption

この暗黙の等方性減衰関数は、流れが必要ない場合は速度場を(0 0 0)に設定できる特定の一様な値に向かって緩和します。
これは、平均的な流れがない閉じた波のタンクで波を減衰させるのに特に適しています。

interFoam波のテストは、均一な平均流を伴うこの単純なケースでは、新しいisotropicDamping fvOptionが元のverticalDampingよりも迅速で完全な減衰を提供することを示しました。

表面波モデリングで大気境界層を大気に追加できるようになりました

波:大気境界層モデリングをガスに追加

波動モデリングのガス側に大気境界層の速度を追加できます。 波重ね合わせクラスには実行時選択メカニズムが与えられており、ガス大気境界層モデリングを含む導出が追加されています。 したがって、このモデリングは、波境界条件とsetWaveの両方で利用できます。

この機能は、 "type"エントリと境界層を制御する多数のパラメータを指定することによって、constant / wavePropertiesファイルで選択できます。 例えば:

constant / wavePropertiesの場合:

waveAtmBoundaryLayerタイプ。

// properties specifying the wave modelling ...

UGasRef (10 0 0);
hRef 20;
hWaveMin -2;
hWaveMax 3;

UGasRefは、波モデルの原点を基準とした、高さhRefにおける液体に対する気体の速度です。 hWaveMinとhWaveMaxは波の仰角の範囲を表します。 波動モデル自体からこれを計算することは自明ではないので、入力として必要です。

基本波重ね合わせクラスは "type wave;"で選択できますが、 "type"エントリが省略されている場合はデフォルトで選択されるため、変更は後方互換性があります。

新しいwaveInletOutlet境界条件は、フィールドのさまざまな入口値を設定します。 界面の上下における温度、乱流特性

waves:waveInletOutlet条件を追加しました

これは、入口値が波の境界の上下で異なる入口 - 出口条件です。 次のように使用できます。

inlet
{
type waveInletOutlet;
inletValueAbove 0.01;
inletValueBelow 0.1;
}


多相反応

一般:相界面での物質移動の修正を追加しました

InterfaceCompositionPhaseChangePhaseSystem:両面物質移動修正

この変更により、インターフェースの反対側で物質移動モデルが検索されていた問題が修正されました。 これはまた、インタフェースの片側だけで大量転送を指定することが、エラーを生成することなく可能になったことを意味します。

一般化サブサイクリングの追加による多相ソルバー反応のロバスト性の向上

reactMultiphaseEulerFoam :: multiphaseSystem:新しい一般化サブサイクルを適用しました。

これは今フィールドのリストを処理します。 これはサブサイクリングと外部反復との間の相互作用に関する問題を回避する。

VTTフィンランドの場合:reactEulerFoamに、液体の過冷却の線形関数としての気泡の直径のlinearTsubモデルを追加しました

reactEulerFoam:追加されたlinearTsub直径モデル

これは蒸気泡の直径のモデルです。 直径を液体の過冷却の一次関数として計算します。

また、diameterModelから正しいメソッドが削除されました。これは、直径フィールドの書き出しを容易にすること以外は何もしていなかったためです。 派生サブモデルは、基本インターフェースを汚染することなくこれをローカルに制御できます。

VTTのJuho Peltolaによるパッチに基づいています。

reactEulerFoamに、定常状態シミュレーションの計算コストを削減するために、人口バランスのソースを更新するための間隔を追加しました。

reactEulerFoam:母集団バランスの元の用語の更新間隔を追加しました。

これは、数回の反復ごとに1回だけ元項を更新することによって定常状態に収束するシミュレーションを高速化するために使用できます。 各更新間の反復回数は、fvSolutionで次のように設定されます。

solvers
{
bubbles
{
sourceUpdateInterval 10;
}

// etc ...
}

デフォルトでは間隔は1なので、ソースは毎回更新されます。

VTTのJuho Peltolaによるパッチに基づいています。

Nusselt数が一定の伝熱モデルを追加

reactEulerFoam:heatTransferModel:追加されたconstantNuモデル

これは、Nusselt数に対して一定の固定値を持つ熱伝達モデルです。 単一の "Nu"エントリを指定する必要があります。

VTTのJuho Peltolaによるパッチの提供

特に高い物質移動速度の場合の安定性と安定性の向上

TwoResistanceHeatTransferPhaseSystem:安定化条件を変更しました

界面温度による熱伝達の安定化項は、両方の相にわたる効果的な熱伝達ではなく、相における局所的な熱伝達を反映するように変更されました。 これにより、安定化項が実際の温度に基づく伝達項とより正確に一致するようになります。 物質移動速度が高いときにこの差は特に顕著であり、この種の場合は結果としてこの変化から著しい安定性の利益を得る。

VTTのJuho Peltolaによるパッチの提供。

ポピュレーションバランス相変化ドリフトモデルの改善

populationBalanceModel:phaseChange:改善点

ポピュレーションバランスフェーズチェンジドリフトモデルには、いくつかの改良が加えられています。

- モデルは位相ペアの順序をチェックし、それに応じてドリフトレートの符号を変更します。

- 相変化質量フラックスとウェイトは各速度グループに対して計算されるため、ドリフトレートと相変化質量フラックスは各速度グループに対して一致している必要があります。

- デフォルトでは、相変化質量流束は各グループの界面面積に基づいてサイズグループ間で分配されます。 後方互換性のために、新しい "numberWeighted"オプションで数の重み付けを有効にすることができます。

このモデルでは、名前を使用するのではなく、ユーザーは通常の括弧付きの形式でフェーズペアのリストを指定する必要があります。 例えば:

phaseChange
{
pairs ((gas and liquid));
}

VTTのJuho Peltolaによるパッチの提供。

HZDRと:新しいLehrMilliesMewesとLuoSvendsenの分割と合体モデル
[https://github.com/OpenFOAM/OpenFOAM-dev/commits/756d10c37c91697708784c8104be2ed480bb4a10 https://github.com/OpenFOAM/OpenFOAM-dev/commits/756d10c37c91697708784c8104be2ed480bb4a10]


化学と反応

燃焼:燃焼による熱発生率フィールドを書き出すQdot関数オブジェクトを追加しました

ustionのモデル:Qdot関数オブジェクトを追加しました

この関数オブジェクトは、燃焼モデルの熱発生率フィールドを書き出します。 これは、燃焼が任意であり、したがってデフォルトで熱発生率を書き出さないソルバーに役立ちます。 たとえば、chtMultiRegionFoamとreactTwoPhaseEulerFoamです。

burningPropertiesから冗長なアクティブスイッチを削除しました。 burningModel noneによって燃焼がオフになります。

ustionのモデル:廃止予定の "active"スイッチを削除しました。

燃焼をオフにするには、ustionのファイルで "none"という名前で選択された "noCombustion"モデルを選択します。

combustionModel none;

反応:任意のペアの反応種に対する訂正、合理化、および一般化されたLangmuirHinshelwoodReactionRateモデル

LangmuirHinshelwoodReactionRate:反応種の任意のペアに修正、合理化、一般化されました。

Description
Langmuir-Hinshelwood reaction rate for gaseous reactions on surfaces.

Reference:
\verbatim
Hinshelwood, C.N. (1940).
The Kinetics of Chemical Change.
Oxford Clarendon Press
\endverbatim

アレニウス式にT ^ betaプレ因子を追加

LangmuirHinshelwoodReactionRate:アレニウス式にT ^ betaプレファクタを追加

反応のための動的適応化学(TDAC)の作表の簡単な設定、VUBrussel

etc / caseDicts / solvers / chemistry / TDAC:反応するケースセットアップを単純化するためのTDAC用の新しい設定ファイル。

Tutorials
tutorials/combustion/chemFoam/ic8h18_TDAC
tutorials/combustion/reactingFoam/RAS/SandiaD_LTS
tutorials/combustion/reactingFoam/laminar/counterFlowFlame2DLTS_GRI_TDAC
tutorials/combustion/reactingFoam/laminar/counterFlowFlame2D_GRI_TDAC

新しい設定ファイルの恩恵を受けるために更新されました。

パッチはFrancesco Continoによって提供されました

例:リアクションのあるチュートリアルの設定を改善

チュートリアル:反応するケース設定の改善

paraviewの警告を防ぐためにすべての反応ファイルにヘッダを追加しました。
既知のメカニズムに関する参照を追加しました。 未使用の反応および熱物理特性ファイルを削除しました。


乱流

壁関数:複雑で矛盾する係数を避けるための合理化された壁関数の実装

複雑で矛盾する係数を避けるための合理化された壁関数の実装

すべての壁関数は協調的に動作し、nutWallFunction基本クラスからCmu、kappa、Eの各係数とyPlusLamを取得します。 ここで、これらのオプションの入力は、k、ε、ω、v 2、およびfの壁関数を使用してそこからこれらの値を取得し、ナット境界条件で指定するだけで済みます。 これは指定するのがはるかに簡単で、異なる乱流場に対する壁関数の演算の矛盾を避けます。

コードも合理化され単純化され、不要なコードや重複を避けています。

安定性と適用範囲を改善するためのnutkRoughWallFunctionの再導出

nutkRoughWallFunction:安定性と適用範囲を改善するために再導出および実装されました

この壁関数は、壁の近くのセルの中心距離が粗さの高さよりも小さくても安定していますが、この方法で使用すると非常に正確になるとは考えられません。

急激な変化限界の安定化は、壁に近い粘度が物理的な意味を持たない層状粘度の半分に低く制限されるのを避けるために再実行されました。

nutkRoughWallFunctionとの一貫した入力のためのnutURoughWallFunctionの追加と更新

nutURoughWallFunction:nutkRoughWallFunctionとの入力の一貫性のために更新されました

これで、nutkRoughWallFunctionとnutURoughWallFunctionの両方が、不均一な表面粗さをサポートするために同じフィールドベースのKsおよびCs入力を使用します。

特に、nearURoughWallFunctionが現在不正確である層状サブレイヤ内にある場合、nutURoughWallFunctionは、ラフネス高さ= 0の範囲でnutUWallFunctionと厳密には一致せず、また、nutkRoughWallFunctionとも一致しません。

それをnutUWallFunction BCとnutkRoughWallFunction BCの両方と一致させるためには、nutURoughWallFunctionにさらに多くの作業が必要です。

モデリング:kOmegaモデルからkおよびω方程式にソースを追加して、そこからモデルを導出しやすくしました

kOmega:派生モデルにおけるkおよびオメガソースのサポートを追加しました

内部フィールドを使用するようにソースを更新しました。

データ処理:乱流場関数オブジェクトに圧縮性モデルのサポートを追加

functionObject :: turbulenceFields:熱伝達をサポートしない基本的な圧縮性乱流モデルのサポートを追加しました


熱物理モデリング

熱力学:Boussinesq、PengRobinson、およびicoの状態状態方程式に対する理想的な気体の振る舞いから逸脱するための欠けている熱力学関数を追加しました。

EquationOfState :: Boussinesq、PengRobinsonGas、icoPolynomialに欠けている出発関数が追加されました

完璧な流体

EquationOfState :: perfectFluid:Cp出発関数を追加した

そして他の状態方程式.

[https://github.com/OpenFOAM/OpenFOAM-dev/commits/f9971f80d72a5318cdc81120a925ab9817b3ec62 https://github.com/OpenFOAM/OpenFOAM-dev/commits/f9971f80d72a5318cdc81120a925ab9817b3ec62]

輸送:温度依存輸送特性のためのNew Williams-Landel-Ferryモデル.

thermophysicalModels / specie / transport:WLFトランスポートモデルを追加

説明
Williams-Landel-Ferryモデルを使った輸送パッケージ。

所定の熱力学パッケージにテンプレート化されています
導電率)。

Dynamic viscosity [kg/m.s]
\f[
\mu = \mu_0 \exp \left(\frac{-C_1 ( T - T_r )}{C_2 + T - T_r}\right)
\f]

References:
\verbatim
Williams, M. L., Landel, R. F., & Ferry, J. D. (1955).
The temperature dependence of relaxation mechanisms
in amorphous polymers and other glass-forming liquids.
Journal of the American Chemical society, 77(14), 3701-3707.
\endverbatim

一般化されたニュートン層流輸送のための新しい構造は、ひずみ依存の粘度関数を温度依存の粘度と組み合わせることを可能にする。 ポリマー流動のCross-WLFモデル.

TurbulenceModels :: generalizedNewtonian:一般化ニュートン層流輸送をサポートするための新しい構造

この構造の中では、BirdCarreau、Casson、CrossPowerLaw、HerschelBulkley、powerLaw、およびstrainRateFunctionのひずみ依存粘度ベースの非ニュートン流体モデルを非圧縮性または圧縮性の流れに対して選択できます。

圧縮性流れの場合、ひずみ依存性粘度関数は温度依存性粘度に適用されるので、WLF粘度モデルがCrossPowerLawと組み合わせて選択される場合、有効モデルはポリマー流動に一般的に使用されるCross-WLFである。

これらのモデルは、constant / turbulencePropertiesファイルで選択されています。

simulationType laminar;

laminar
{
laminarModel generalizedNewtonian;

viscosityModel CrossPowerLaw;

nuInf 10;
m 0.4;
n 3;
}

この新しい実装は、constant / transportPropertiesファイルで選択されていた、以前の非圧縮性の非ニュートン粘性モデルよりも一般的で柔軟性があります。 この実装は現在推奨されておらず、段階的に廃止される予定です。

Maxwellからの導出とソースの追加を可能にするフレームワークに粘弾性のためのGiesekusモデルを追加.

turbulenceModels /層流/ Giesekus:粘弾性のGiesekusモデル

粘弾性のためのGiesekusモデルの実装。これは、追加の情報源をサポートするMaxwellモデルの新しい一般化形式から派生したものです。

Giesekus, H., 1982.
A simple constitutive equation for polymer fluids based on the
concept of deformation-dependent tensional mobility.
J. Non-Newton. Fluid. 11, 69–109.

この実装は、非圧縮性、圧縮性、およびVoFの2相フローに対してインスタンス化されます。

その他のモデリング

雰囲気:atmBoundaryLayerにオフセット境界層のオプションを追加.

atmBoundaryLayer:ドキュメントを追加しました

リジッドボディダイナミクス:新しいsixDoFRigidBodyControl functionObjectは、ボディモーションが収束したときに実行を停止します.

interpolationlatingSolidBodyMotionSolver:モーションを補間する新しいソリッドボディメッシュモーションソルバー

説明
実行時に選択可能なモーション関数によって指定されたメッシュのソリッドボディモーション。 メッシュポイントを移動するために、オブジェクト表面までの距離の関数としてSLERP補間移動を適用します。

SeongMo Yeonによるpatchからの剛体の状態を報告するrigidBodyState関数オブジェクト.

rigidBodyState:剛体モデルの状態を記述する新しいfunctionObject

これは、sixDoFRigidBodyState関数オブジェクトと等価のrigidBodyです。

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

rigidBodyState
{
type rigidBodyState;
libs ("librigidBodyState.so");
angleFormat degrees;
}

SeongMoによって提供されたパッチに基づくYeonパッチの要求https://bugs.openfoam.org/view.php?id=3180を解決します

境界条件(BC):semiPermeableBaffle境界条件で、モルまたは質量分率の差、または分圧に基づいて質量流束を計算できるようになりました.

semiPermeableBaffle:追加されたモル分率と分圧の入力オプション

semiPermeableBaffleMassFraction境界条件は、モル分率または分圧の差に比例して質量流束を計算できるようになりました。 質量分率差駆動型移送も依然として可能である。 追加のキーワード "input"が追加されました。これは、転送の計算に使用される変数を選択するために使用されます。 指定例は次のとおりです。

baffle
{
type semiPermeableBaffleMassFraction;
samplePatch membranePipe;
c 0.1;
input massFraction;
value uniform 0;
}

これを容易にするために、パッチ上のモル質量を得るための「W」法が熱力学に加えられた。 名前の衝突を避けるために、種ごとのモル質量を生成するメソッドは "Wi"と名前が変更されました。

この作品は、EvonikのGeorg Skillasによってサポートされました。

hydrostaticDisplacementFvPatchVectorFieldは、流体リザーバからの圧力に基づくsolidDisplacementFoamの新しい牽引境界条件です。

hydrostaticDisplacementFvPatchVectorField:solidDisplacementFoamの新しい実験的トラクション境界条件

説明
牽引力が外部液体貯留層の静水圧によって生じる標準線形弾性固定係数変位方程式に対する固定牽引力境界条件

DanielJasiński氏による、パッチを通る体積流量の関数として指定された圧力ジャンプを伴うfanPressureJump境界条件が追加されました。

fanFvPatchField - > fanPressureJumpFvPatchScalarField:fanPressureFvPatchScalarFieldとの一貫性のため

説明
この境界条件は、を使用して圧力ジャンプ条件を提供します。
基底としての\ c循環条件。

ジャンプは\ c Function1型として指定され、以下のものを使用できるようにします。 定数、多項式、テーブル値 この境界条件は、標準と下位互換の2つのモードで動作します。
標準モードでは、ジャンプはパッチを通る総体積流量の関数として指定されます。 下位互換モードでは、境界条件はfanFvPatchFieldの直接の置き換えとして機能します。ここで、jumpはローカル速度の関数として定義されます。

使用法

\table
Property | Description | Required | Default value
patchType | underlying patch type should be \c cyclic| yes |
fanCurve | fan curve, e.g. \c csvFile | yes |
jumpTable | jump data (backward compatibility mode) | no |
reverse | reverse jump direction | no | false
phi | flux field name | no | phi
rho | density field name | no | rho
\endtable

境界条件指定の例

\verbatim
<patchName>
{
type fan;
patchType cyclic;
fanCurve csvFile;
csvFileCoeffs
{
hasHeaderLine 1;
refColumn 0;
componentColumns 1(1);
separator ",";
file "$FOAM_CASE/constant/pressureVsQ";
}
value uniform 0;
}
\endverbatim

上記の例は、ジャンプ条件を指定するためのコンマ区切り(CSV)ファイルの使用を示しています。

Daniel Jasinskiによる寄稿
バグ報告https://bugs.openfoam.org/view.php?id=3102#c10159を解決しました

起動時の自由流速と圧力境界条件を安定させました。

freestreamVelocity/圧力BC:mag(Up)= 0の範囲で安定させる

時空間の供給された点のセットのデータをパッチにマッピングするための再利用可能なtimeVaryingMappedFvPatchField境界条件を一般化しました。

timeVaryingMappedFixedValueFvPatchField:基礎となるマッピング関数が他のBCで使用できるようにリファクタリングされました

新しいパッチフィールドマッピングクラスtimeVaryingMappedFvPatchFieldは、timeVaryingMappedFixedValueFvPatchField BCから除外されているため、データを他のBC内に格納されているフィールドにマッピングするために使用できます。

その過程でwriteEntryIfDifferent関数は、まだtimeVaryingMappedFvPatchFieldクラスで使用できるようにfvPatchFieldからdictionaryに移動する必要があり、パッチフィールドの書き込み関数を単純化するために非条件付きバリアントwriteEntryを作成するのが賢明です。
この合理化は他のすべてのパッチフィールドにも反映されています。

出典:ローター出力の出力を追加

rotorDiskSource:回転子力の出力を追加

Robert Leeによるパッチ提供
パッチリクエストを解決します。https://bugs.openfoam.org/view.php?id=3262

Robert Leeの寄稿による、rotorDisk fvOptionへの逆スピンを有効にしました。

rotorDiskSource:固定推力方向に対して、rotorDiskで反対方向の回転を有効にします。

Robert Leeによるパッチ提供
パッチリクエストを解決しますhttps://bugs.openfoam.org/view.php?id=3285

ソルバー:sonicFoam、sonicDyMFoam、およびsonicLiquidFoamは、それらの機能が遷音速オプションを実行するrhoPimpleFoamソルバーに統合されたため、推奨されません。

sonicFoam、sonicDyMFoam、sonicLiquidFoam:機能はrhoPimpleFoamにマージされました

sonicFoam、sonicDyMFoam、およびsonicLiquidFoam機能は最新のrhoPimpleFoamソルバーの遷音速オプションにマージされ、対応するチュートリアルはrhoPimpleFoamチュートリアルディレクトリに移動されました。

遷音速モードでrhoPimpleFoamを実行するには、fvSolutionのPIMPLEサブ辞書で遷音速オプションを設定します。

PIMPLE
{
.
.
.
transonic yes;
}

pimpleFoamにLTS機能を追加し、定常状態への解決を加速するオプションを提供

pimpleFoam:デモンストレーションおよびテスト用のLTS機能を追加しました

ほとんどの場合、simpleFoamはLimでpimpleFoamより速く収束する可能性がありますが、SIMPLEが安定せず、代わりにLTSが提供されているより複雑なソルバーでメッシュ、BCなどをテストするのに役立ちます。
マスターバージョン7

…
20190427


メッシュ

snappyHexMesh:マルチリージョンメッシュでレイヤーを挿入できるようにパッチ面のマージをオプションにしました。 共役熱伝達

addLayersControls
{
mergeFaces true; // <-- Merge faces on all patches, not just those
// associated with geometry

layers
{
wall1
{
nSurfaceLayers 2;
}
wall2
{
nSurfaceLayers 2;
mergeFaces false; // <-- Do not merge faces on this patch
}
}
}

さらに、パッチの関連付けが修正され、面がノーズになりません。
マージしないように設定されているパッチとマージされていますが、そうであるパッチとはセル接続されています。

この変更により、サーフェスメッシュがレイヤ追加の前後で同じジオメトリを保持することを保証でき、したがって、結合インタフェースにレイヤを追加できます。

Mesh Motion:Slerpを使ってモーションを補間する新しいソリッドボディメッシュモーションソルバー。

interpolationlatingSolidBodyMotionSolver:モーションを補間する新しいソリッドボディメッシュモーションソルバー

説明
実行時に選択可能なモーション関数によって指定されたメッシュのソリッドボディモーション。 メッシュポイントを移動するために、オブジェクト表面までの距離の関数としてSLERP補間移動を適用します。

ソルバーアプリケーションはデフォルトで動的メッシュ機能を含み、ソルバーのすべての「DyM」バージョンを非推奨にします。

マージブランチ 'mergeDyM'

複数のモーションソルバーをサポート 所定の境界運動を伴う固体の回転と変形。

motionSolvers :: motionSolverList:メッシュのモーションがモーションソルバーのリストとして指定された新しいモーションソルバー

モーションソルバーが順番に実行され、結果として得られた変位が全体の変位に累積され、変位した点の位置が返されます。

この機能はdynamicMotionSolverListFvMeshクラスをdynamicMeshDictの "solver"エントリではなく、 "solvers"リストの同等の指定に置き換えます。

dynamicFvMesh dynamicMotionSolverFvMesh;

solvers
(
Rotor
{
solver solidBody;

solidBodyCoeffs
{
cellZone region1;

solidBodyMotionFunction rotatingMotion;

rotatingMotionCoeffs
{
origin (0 0 0);
axis (0 0 1);
omega 100; // rad/s
}
}
}

Piston
{
solver velocityComponentLaplacian;

motionSolverLibs ("libfvMotionSolvers.so");

velocityComponentLaplacianCoeffs
{
component z;
diffusivity inverseDistance 1(wall1);
}
}
);

dynamicMeshDictconfigurationファイルの処理を合理化しました。

dynamicFvMesh:dynamicMeshDictの処理とキャッシュを合理化しました

ベースのdynamicFvMeshはdynamicMeshDictを読み込んで保存し、モーションソルバーはそれをコンストラクタの引数として受け取ります。

また、faceDiffusivityフィールドを格納しても利点が得られないmotionSolver拡散係数クラスも合理化されました。 今では作成され、要求に応じて返されます。

後方差分を使用してシームレスなケース再起動のために昔のセルボリュームが書き出されるようにします。

fvMesh:後方差分の再開のためにV00が存在する場合、V0が書き込まれるようにする

動的メッシュ用のmotionSolverを使用して、メッシュと共にモーション状態を書き込むためのサポートが追加されました。

dynamicMotionSolverFvMesh、motionSolver:メッシュの書き込み時にモーション状態を書き込むためのサポートが追加されました

メッシュ運動を伴う場合の速度場境界条件に対する一般化された更新

dynamicFvMesh:ハードコーディングされた "U"境界補正をオプションのリストに置き換えました

ファイを修正するためにUfを使用してメッシュモーションをサポートする最新世代のソルバーでは、メッシュモーションの直後の速度場境界条件を修正する必要はもうないので、dynamicMeshDictの「velocityFields」入力リストはオプションであり、レガシーをサポートするためだけに提供される msgstr "" "ソルバーを実行し、デフォルトは空のリストになります。

その他:メッシュユーティリティで、フィールド処理コードを合理化し、-noFieldsオプションを追加しました。

メッシュ操作ユーティリティ:合理化されたフィールド処理と追加された-noFieldsオプション

subsetMeshを含む。

subsetMesh:-noFieldsオプションを追加しました

-noFieldsオプションを使用すると、メッシュはサブセットになりますが、フィールドは変更されません。
これは、メッシュサブセットの後のメッシュに対応するようにフィールドフィールドが作成されている場合に便利です。

surfaceFindは、ポイントから最も近いサーフェスジオメトリ(OBJ、STLなど)までの実際の距離をレポートするようになりました。

surfaceFind:面までの真の距離を報告する


ケース構成

データの視覚化:パッケージ化された流線形関数オブジェクトにすべてのポイントシード方法の例を追加しました。

合理化:新しいシーディングメソッド用に更新されたパッケージ関数オブジェクト

ASCII形式のグラフを端末にプロットするfoamMonitorに-asciiオプションを追加しました。これはリモートマシンへの端末のみの接続に便利です。

foamMonitor:-asciiと-sizeオプションを追加

これらのオプションは、端末にプロットを表示する機能を任意のサイズで追加します。 これは、X11アプリケーションの起動が便利ではない、または不可能な場合があるリモートマシンでの監視を容易にすることを目的としています。

機能要求を解決しますhttps://bugs.openfoam.org/view.php?id=3080

Mattijs Janssensにより提供された、最大4倍小さい滑らかなサーフェスとファイルを生成する新しいiso-surfaceメソッドが実装されました。

isoSurface:改良された等値面アルゴリズム

位相点の生成と、メッシュエッジから始まっていないすべての点(および三角形)のオプションの削除を含みます。 これは、三角形ではなく多角形を生成し、より滑らかなサーフェスと非常に小さなファイルを提供します(3〜4倍小さい)。

Mattijs Janssensによる寄稿

SampleSurfaceの合理化されたコード。視覚化の後処理機能を維持します。

samplesSurface:samplesSurfaceクラスのsamplesSurfaces名前空間を作成しました。

混乱を招くaddNamedToRunTimeSelectionTableの必要性を回避するために構造およびクラス名を合理化し、代わりに標準のaddToRunTimeSelectionTableを使用して実行時選択テーブルを生成します。

平行に走っているときのplaneとcell zoneの間の交差におけるcuttingPlaneの後処理を修正しました。これはFederico Piscagliaによるものです。

cuttingPlane:平面とセルゾーンの交差部分の平行処理を修正しました

パッチはFederico Piscagliaによって提供されました
バグレポートhttps://bugs.openfoam.org/view.php?id=3283を解決しました

ケース初期化:辞書変数の負を生成するための新しい#neg関数。

dictionary :: functionEntries :: negEntry:辞書変数を否定する新しい関数

例えば。 速度場ファイルで:

Umean 5.75;
.
.
.
inlet
{
type uniformFixedValue;
uniformValue (#neg $Umean 0 0);
}

OpenFOAM入力ファイルにおける新しい#ifおよび#ifeq条件付き処理。MattijsJanssensによって提供されました。

dictionary :: functionEntries :: if(eq)エントリ:辞書における新しい条件文の取り扱い

Class
Foam::functionEntries::if

説明
辞書項目の条件付き解析

E.g.
\verbatim
U_inlet 15;

#if #calc "${U_inlet} < 10"
..
#else
..
#endif
\endverbatim

注意:
- 単一行のみをサポートし、 '\'はサポートされません
- 条件は\ cスイッチとして読めるはずです
(0、1、true、falseなどをサポート)

Class
Foam::functionEntries::ifeqEntry

説明
辞書項目の条件付き解析

E.g.
\verbatim
a #calc "0.123";
b 1.23e-1;

#ifeq $a $b
..
#else
..
#endif
\endverbatim

\verbatim
ddtSchemes
{
#ifeq ${FOAM_APPLICATION} simpleFoam
default steadyState;
#else
default Euler;
#endif
}
\endverbatim

注意:
- 辞書変数と環境変数をサポート
- 二つの引数は二つのトークンでなければならない
- 比較は、任意の単語/文字列/変数の文字列比較、2つの整数の整数比較、および任意の浮動小数点数の浮動小数点比較です。
- (一致しない)\ c#その他、\ c #endifの構文解析はそれほど洗練されていません。

Mattijs Janssensによる寄稿

特にサブ辞書内でキーワードエントリをマージするためにfoamDictionaryに-mergeオプションを追加しました。

foamDictionary:-mergeオプションを追加

これは、新しいエントリを辞書内の対応するエントリとマージします。

foamGetはコピーされるファイルに基づいて宛先ディレクトリを選択するので、ケースを設定することがさらに簡単になります。

foamGet:ファイル名に基づいてターゲットディレクトリを選択

foamDictionaryにバイナリ形式のファイルのサポートを追加しました.

foamDictionary:バイナリエントリを含む辞書を書くためのサポートを追加しました

ケース管理:特定のモデル名ではなく、大文字と小文字を区別しないキーワードをより広く検索するためにfoamInfoにキーワードオプションを追加しました。

foamInfo:added -k | -keywordオプション、より広範な検索

特定のモデル名ではなく、大文字と小文字を区別しないキーワード。 たとえば、すべてのk-ε関連モデルを検索するには、次のようにします。

foamInfo -k kepsilon

その他の関数オブジェクト:対数関数オブジェクトはスカラー体の自然対数を計算します。

functionObjects :: log:スカラーフィールドの自然対数を計算するための新しいfunctionObject

説明
指定されたスカラフィールドの自然対数を計算します。

\ f $ ln(max(x、a))\ f $を実行します。ここで、\ f $ x \ f $はフィールド、\ f $ a \ f $は0または負の値を処理するオプションクリップです。 。

実行中に単純な#includeFuncを使用してこのfunctionObjectを実行できるように、etc / caseDicts / postProcessing / fields / log設定ファイルが用意されています。 無次元体xに対して

functions
{
#includeFunc log(x)
}

または、xが0または負の領域の場合は、オプションのクリップが適用されます。

functions
{
#includeFunc log(p,clip=1e-6)
}

Age関数オブジェクトは、流体が入口からドメイン内のすべての場所に移動するのにかかる時間のフィールドを計算します。

functionObjects:age関数オブジェクトを追加しました

このオブジェクトは、ドメイン内の流体の年齢のフィールドを計算します。 すなわち、流体粒子が入口からある場所に移動するのにかかる時間。 ageという名前のフィールドを時間の次元で出力します。ソルバーとdiv(phi、age)スキームを指定する必要があります。 解析手順のためのいくつかの修正、ならびに流束および密度場の名前を設定することができる。

指定例

age1
{
type age;
libs ("libfieldFunctionObjects.so");
nCorr 10;
phi phi;
rho rho;
}

使用例

postProcess -func age -fields "(phi)" -latestTime

この作品は、Robert SecorとLori Holmesの3Mの支援によるものです。

プログラミングと計算

C ++ 11標準:C ++ 11スコープの列挙を使用するように更新し、コードの読みやすさを向上させるためにより一貫した命名規則を提供します。

[https://github.com/OpenFOAM/OpenFOAM-dev/commits/c7e2611975d1420b5e179e460d3de99341167007 https://github.com/OpenFOAM/OpenFOAM-dev/commits/c7e2611975d1420b5e179e460d3de99341167007]

複雑なXferクラスを削除し、機能をC ++ 11の「移動」コンストラクタと代入演算子に置き換えました。

C ++ 11への準拠と一貫性:OpenFOAMコンテナに "move"コンストラクタと代入演算子を追加しました

複雑なXferクラスのすべての使用をC ++ 11の "move"コンストラクタと代入演算子に置き換えました。 現在は冗長なXferクラスを削除しました。

この大幅な変更により、OpenFOAMとC ++ 11 STLのコンテナおよびアルゴリズムとの間の一貫性が向上し、コンテナを関数から返すときのメモリ割り当てとコピーのオーバーヘッドが削減され、コアライブラリのメンテナンスが大幅に簡素化されます。

新しい標準に従ってすべてのクラス宣言コメントを更新するための広範なメンテナンス作業

[https://github.com/OpenFOAM/OpenFOAM-dev/commits/5c188ddce7848c1502b9a0093866e5114de46f2b https://github.com/OpenFOAM/OpenFOAM-dev/commits/5c188ddce7848c1502b9a0093866e5114de46f2b]

コンテナとI / O:ListクラスとそれらのI / Oの中核となるメンテナンスを引き受けます。

 
[https://github.com/OpenFOAM/OpenFOAM-dev/commits/d6f6747d63627571147deae47ee63cf46eb9f21b https://github.com/OpenFOAM/OpenFOAM-dev/commits/d6f6747d63627571147deae47ee63cf46eb9f21b]

一貫性、使いやすさ、およびASCII形式とバイナリ形式の間での保守性のためにwriteEntry関数を合理化しました。

writeEntry:一貫性、使いやすさ、および保守容易性のために合理化された

writeEntryフォームはOpenFOAM全体で一貫して定義および使用されるようになり、特に複雑な辞書エントリのバイナリIOをサポートするために、使いやすく拡張しやすくなりました。

フィールドと次元:次元(スカラー、ベクトルなど)を作成するときに名前(単語)はもう必要ありません。

dimensionedType:ディメンションと値からコンストラクタを追加

名前は値から生成されます。

一時フィールドは、デフォルトではデータベースに登録されなくなりました。

GeometricField:一時フィールドはデフォルトでデータベースに登録されなくなりました

一時フィールドがコンストラクタを介して非一時フィールドに転送されたとき、またはregIOobjectの "store"メソッドを介して明示的にデータベースに転送されたときに登録が行われます。

プリミティブフィールドマッピングを書き換え、柔軟で拡張性があり、わかりやすく、保守しやすい構造にします。

[https://github.com/OpenFOAM/OpenFOAM-dev/commits/4f7f488f2262abaa744744be064e8284407c172f https://github.com/OpenFOAM/OpenFOAM-dev/commits/4f7f488f2262abaa744744be064e8284407c172f]

並列実行:Mattijs Janssensを使用して、surfaceVectorFieldsの並列分割を修正しました。

decomposePar:surfaceScalarFieldsにのみフェイスフリッピングを適用します

フラックスフィールド(surfaceScalarFields)は以前のように反転されますが、このプロセスは適切ではないsurfaceVectorFields(Ufなど)には適用されません。
decomposeParはsurfaceVectorFieldsに関してreconfigctParと一致するようになりました。

パッチはMattijs Janssensによって提供されました。

reconctParは、surfaceVectorFieldを再構築することができます。

reconctPar:surfaceVectorFieldを再構築するためのサポートを追加しました

バグ報告https://bugs.openfoam.org/view.php?id=2832を解決しました

並行して番号が付け替えられた場合のフラックスの符号が修正されました。

decomposePar:並行して番号が変更された場合のフラックス反転の修正

結合パッチがあるケースで並列実行すると、予防されたクラッシュ。

coupledFvPatches:プロセッサケースを操作する際のクラッシュを防止

その他の数値:たとえばデータサンプリングで使用されるいくつかの線と境界の交差点がぶら下がるのを防ぎます。

meshSearch:線と境界の交差部分の計算でハングしないようにしました

この修正により、交差ループが以前に交差した面を無視する方法が変わりました。 後続の反復でそれらが無視されるように、現在はインデックスでそれらをマークしています。

この変更の前は、交差点が見つかった後、開始点が少し進んで交差点を過ぎて移動しました。 これに関する問題は、複数の境界面または終点が交差点に近接している場合、前方への移動がそれらにまたがる可能性があることでした。 これにより、交差点が何度も見逃されたりカウントされたりすることがあります。

Mattijs Janssensによって提供されたパッチに基づく
バグ報告https://bugs.openfoam.org/view.php?id=1147を解決しました

Finalバージョンが指定されていない場合は、緩和係数が標準設定を使用して、合理化されたFinalソルバーと緩和係数の設定。

「最終的な」ソルバーと緩和係数設定の処理を合理化

過渡シミュレーションでは、速度、エネルギー、組成および放射特性の解の間の一貫性を提供する「最終」ソルバー設定がすべての方程式に必要です。

しかし、「最終的な」緩和係数は、場または方程式にはもはや必要ではなく、存在しない場合、変数の標準値は次のようになります。
適用されます。 1以外の緩和係数が過渡的な実行に必要とされることはめったになく、したがって最後のものを含むすべての繰り返しに対して同じであることを考えると、このアプローチはより単純な入力を提供します。定常的な場合には、標準的な緩和係数が適切である時間ステップごとにたった1回の外側反復を実行するのが通常であり、複数回の反復が実行される場合、両方に同じ係数を使用するのが一般的です。最終的な反復のために異なる緩和係数を必要とするという稀な出来事において、これは今やオプションの "最終的な"指定によってまだ指定することが可能です。

面がゼロ面積の限界に近づくにつれて表面補間における重みの計算が改善された

dynamicFvMesh:dynamicMeshDictの処理とキャッシュを合理化しました

ベースのdynamicFvMeshはdynamicMeshDictを読み込んで保存し、モーションソルバーはそれをコンストラクタの引数として受け取ります。

また、faceDiffusivityフィールドを格納しても利点が得られないmotionSolver拡散係数クラスも合理化されました。 今では作成され、要求に応じて返されます。