745
回編集
(snapshot1) |
(All words covert to japanese) |
||
216行目: | 216行目: | ||
=== 新しいGAMGアグロメレーション・キャッシング === | === 新しいGAMGアグロメレーション・キャッシング === | ||
メッシュを動かすケースでは、時間ステップごとに(あるいは圧力補正ごとに)自動的に凝集を再構築します。 しかし、ほとんどのメッシュモーションのケースでは、GAMGアグロメレーションテーブルは、再作成が必要になる前に、いくつかの反復のために保持することができます。 ソリッドボディモーションの場合、凝集ロジックは行列係数にのみ依存するため、テーブルを更新する必要はありません。 キャッシュは新しい updateInterval エントリで有効になります。 これは、ソリッドボディシミュレーションでは非常に大きな数値になります。一般的なメッシュモーションでは、予想されるメッシュクーラント数に基づいて設定する必要があります。 | |||
<code>p | <code>p | ||
{ | { | ||
225行目: | 224行目: | ||
updateInterval 100000; | updateInterval 100000; | ||
}</code> | }</code> | ||
凝集に関する詳細なフィードバックを得るには、system/controlDictのデバッグ・スイッチを有効にしてください。 | |||
<code>DebugSwitches | <code>DebugSwitches | ||
{ | { | ||
231行目: | 230行目: | ||
GAMGAgglomeration 1; | GAMGAgglomeration 1; | ||
}</code> | }</code> | ||
faceAreaWeightの最適化 | |||
デフォルトの凝集法は、セルを結ぶ面重みの大きさに基づく「セル」の一対一の組み合わせを採用している。 現在、これは軸合わせされたメッシュ上の凝集境界のジッターを避けるために摂動された面面積ベクトルから派生した面重みを使用しています。 | |||
updateIntervalが1でない場合は、ガウシアンタイプの離散化との整合性を高めるために、スケーリングされていない、摂動されていない顔の面積の大きさを用いて重みが計算される。 例えば、simpleFoamを10回繰り返したincompressible/pisoFoam/SLES/motorBikeのチュートリアルでは、平均約10%のサイクル削減を示しました: | |||
代数的凝集はupdateIntervalで実行できることに注意。 | |||
* | * それはcyclicA(C)MIを更新せず、粗いレベルでは古いステンシルを使用するため、補間に失敗する。 | ||
* | * それは、シミュレーション中に変化する行列係数に基づいているため、固体の運動中であっても一定ではない。 | ||
チュートリアル | |||
* $FOAM_TUTORIALS/incompressible/pimpleFoam/RAS/propeller | * $FOAM_TUTORIALS/incompressible/pimpleFoam/RAS/propeller | ||
ソースコード | |||
* $FOAM_SRC/finiteVolume/fvMatrices/solvers/GAMGSymSolver/GAMGAgglomerations/faceAreaPairGAMGAgglomeration | * $FOAM_SRC/finiteVolume/fvMatrices/solvers/GAMGSymSolver/GAMGAgglomerations/faceAreaPairGAMGAgglomeration | ||
リクエストのマージ | |||
* Merge request #707 | * Merge request #707 | ||
=== | === lduMatrix, lduAddressingの改善 === | ||
スカラー行列クラス lduMatrix が拡張され、セルベースのアルゴリズムがより使いやすくなりました。 アドレス指定 lduAddressing には、下位アドレス指定を返す lowerCSRAddr アクセサが追加され、loSortAddressing を使った追加的なインダイレクトを避けることができます: | |||
<code>const labelUList& lduAddressing::lowerCSRAddr() const</code> | <code>const labelUList& lduAddressing::lowerCSRAddr() const</code> | ||
これは、lowerAddr()アドレッシングからオンザフライで構築される。 | |||
さらに、この行列には、対応する lower() 係数の並べ替えを返す lowerCSR() アクセサが追加された: | |||
<code>const scalarField& lduMatrix::lowerCSR() const</code> | <code>const scalarField& lduMatrix::lowerCSR() const</code> | ||
アドレス指定が可能かどうかは、hasLowerCSR()関数で確認できる。 | |||
使用例は lduMatrix::Amul ルーチンの中にあります: | |||
<code>if (hasLowerCSR()) | <code>if (hasLowerCSR()) | ||
{ | { | ||
301行目: | 299行目: | ||
} | } | ||
}</code> | }</code> | ||
ソースコード | |||
* $FOAM_SRC/OpenFOAM/matrices/lduMatrix/lduAddressing/lduAddressing.H | * $FOAM_SRC/OpenFOAM/matrices/lduMatrix/lduAddressing/lduAddressing.H | ||
307行目: | 305行目: | ||
* $FOAM_SRC/OpenFOAM/matrices/lduMatrix/lduMatrix/lduMatrixATmul.C | * $FOAM_SRC/OpenFOAM/matrices/lduMatrix/lduMatrix/lduMatrixATmul.C | ||
=== | === 壁との距離の改善 === | ||
乱流壁関数などで使用されている壁面近傍距離フィールドが壁面に対して更新され、複数の壁面パッチに面を持つセルの挙動が変更されました。 最近接距離は、セル中心から局所的な壁面、または任意の局所的なエッジまたは点に接続された面までの最小距離として計算されます。 | |||
* | * これは並列一貫性がない | ||
* | * これは一面しか見ない | ||
より一貫した挙動を得るためには、正確な壁面距離法を採用すべきである。 | |||
以前の動作(OpenFOAM v2406 以前)は、etc/controlDict またはローカルの system/controlDict の useCombinedWallPatch 情報スイッチを無効にすることで得られます: | |||
<code>OptimisationSwitches | <code>OptimisationSwitches | ||
{ | { | ||
useCombinedWallPatch 0; | useCombinedWallPatch 0; | ||
}</code> | }</code> | ||
ソースコード | |||
* $FOAM_SRC/meshTools/cellDist/cellDistFuncs.C | * $FOAM_SRC/meshTools/cellDist/cellDistFuncs.C | ||
334行目: | 326行目: | ||
* $FOAM_SRC/meshTools/cellDist/patchWave/patchWave.C | * $FOAM_SRC/meshTools/cellDist/patchWave/patchWave.C | ||
リクエストのマージ | |||
* Merge request #700 | * Merge request #700 | ||
問題 | |||
* Issue #3215 | * Issue #3215 | ||
=== | === 地域貢献: アドジョイント最適化の改善 === | ||
OpenFOAM | OpenFOAM v2412では、アジョイント・ライブラリにいくつかの機能変更が加えられました。 トポロジー最適化の設計変数の初期値を0/alphaフィールドから読み込めるようになり、topoSet/setFieldsユーティリティで簡単に設定できるようになりました。 以前は、0/uniform/topOVarsを通してのみ可能でしたが、これは操作が難しくなっています。 | ||
ISQPの数学的最適化問題に追加され、実現可能性を保証するためにMMAに追加された項の乗数('c'と命名)は、関数1で与えられるようになり、最適化ループ全体で操作できるようになりました。 典型的な例としては、実現可能性よりも最適性を重視するために、最初の数サイクルの最適化では小さな値に設定し、徐々に大きくしていきます。 | |||
ISQPで近似ヘシアンの減衰を無効にするオプションを追加。 一般的なケースでは、これは避けるべきですが、いくつかのフリンジケースではアルゴリズムを加速させることができます。 | |||
チュートリアル | |||
* $FOAM_TUTORIALS/incompressible/adjointOptimisationFoam/topologyOptimisation/monoFluidAero/laminar/1_Inlet_2_Outlet/porosityBased/R_10x-init | * $FOAM_TUTORIALS/incompressible/adjointOptimisationFoam/topologyOptimisation/monoFluidAero/laminar/1_Inlet_2_Outlet/porosityBased/R_10x-init | ||
ソースコード | |||
* $FOAM_SRC/optimisation/adjointOptimisation | * $FOAM_SRC/optimisation/adjointOptimisation | ||
リクエストのマージ | |||
* Merge request #710 | * Merge request #710 | ||
=== | === 新ゾーンブレンド・スキーム === | ||
新しいzoneBlendedスキームにより、ユーザーはフェイスゾーンごとに差分スキームを適用できる。 スキームは辞書形式で設定される: | |||
<code>divSchemes | <code>divSchemes | ||
{ | { | ||
379行目: | 370行目: | ||
. | . | ||
}</code> | }</code> | ||
デフォルトのエントリーは背景スキームを指定します。追加のスキームをフェイスゾーンごとに設定できます。例えば、スキーム1はフェイスゾーン1に適用され、スキーム2はフェイスゾーン2に適用されます。 | |||
ソースコード | |||
* $FOAM_SRC/finiteVolume/interpolation/surfaceInterpolation/schemes/zoneBlended | * $FOAM_SRC/finiteVolume/interpolation/surfaceInterpolation/schemes/zoneBlended | ||
== | == ソルバーと物理モデル == | ||
=== | === 地域貢献: SA-DDES乱流モデルの遮蔽機能の改善 === | ||
DDES(Delayed Detached-Eddy Simulation)モデル[1]は、RANS/LESのハイブリッドアプローチであり、RANSによってすべての付着境界層をモデル化し、LESによって大きく分離した流れ領域をモデル化することを目的としています。 付着境界層内部でのLESモードの起動を防止するために、「遮蔽」機能と呼ばれる追加的なセーフガード機能が実装されています。 残念ながら,標準的な定式化[1]は,細かい格子上で崩壊することがあり,壁せん断応力の低下や,流れの早期剥離につながる可能性がある. これらの現象は、文献ではしばしば "モデル化された応力の枯渇 "や "グリッド誘起剥離 "と呼ばれています。 Deck & Renard [2]は最近、よりロバストな挙動を提供しながら、分離したせん断層でのLESへの迅速な切り替えを可能にする、改良された遮蔽関数を提案しました。 この定式化は、SA-DDESモデルの変形であるZDESモード2(2020)乱流モデル用に開発されました。 図は,後縁が分離した NACA4412 翼周りの流れに対 して,改良された遮蔽機能の利点を示しています. 吸込側のグリッドが流れ方向とスパン方向で強くリファインされているため,標準の遮蔽機能が後退し,流れの剥離が早期に発生している. 一方,改良された遮蔽関数は,吸込側の付着境界層領域全体で RANS モードを保持し,NASA コード CFL3D の参照 RANS とよく一致する. | |||
Deck & Renard [2] | |||
以下の乱流モデリング機能がv2412リリースに含まれています: | |||
* Improved shielding function formulation of Deck & Renard [2], implemented for SpalartAllmarasDDES, activated via the new option “shielding” (keyword “standard” selects the standard function [1], “ZDES2020” selects the improved formulation [2]). | * Improved shielding function formulation of Deck & Renard [2], implemented for SpalartAllmarasDDES, activated via the new option “shielding” (keyword “standard” selects the standard function [1], “ZDES2020” selects the improved formulation [2]). | ||
* An additional option “usefP2” activates a more robust shielding mode for the Deck & Renard formulation (detailed in equation A.9 of [2]). | * An additional option “usefP2” activates a more robust shielding mode for the Deck & Renard formulation (detailed in equation A.9 of [2]). | ||
使用例 | |||
<code>simulationType LES; | <code>simulationType LES; | ||
LES | LES | ||
413行目: | 403行目: | ||
printCoeffs on; | printCoeffs on; | ||
}</code> | }</code> | ||
2]で示された定式化はSAベースのDDESに特化して導き出されたものであるため、改善された遮蔽関数はkOmegaSSTDDESモデルには実装されていないことに注意してください。 | |||
チュートリアル | |||
* $FOAM_TUTORIALS/incompressible/pimpleFoam/LES/NACA4412 | * $FOAM_TUTORIALS/incompressible/pimpleFoam/LES/NACA4412 | ||
帰属 | |||
* The improved shielding function of Deck & Renard (2020) [2] was implemented by Upstream CFD GmbH and integrated into OpenFOAM in collaboration with ESI-UK Ltd with funding by Volkswagen AG. | * The improved shielding function of Deck & Renard (2020) [2] was implemented by Upstream CFD GmbH and integrated into OpenFOAM in collaboration with ESI-UK Ltd with funding by Volkswagen AG. | ||
参考文献 | |||
* [1] P. Spalart, S. Deck, M. Shur, K. Squires, M. Strelets, and A. Travin. A new version of detached-eddy simulation, resistant to ambiguous grid densities. Theoretical and Computational Fluid Dynamics, 20(3):181–195, 2006. | * [1] P. Spalart, S. Deck, M. Shur, K. Squires, M. Strelets, and A. Travin. A new version of detached-eddy simulation, resistant to ambiguous grid densities. Theoretical and Computational Fluid Dynamics, 20(3):181–195, 2006. | ||
* [2] Deck, S., & Renard, N. (2020). Towards an enhanced protection of attached boundary layers in hybrid RANS/LES methods. Journal of Computational Physics, vol. 400, pp. 108970, 2020. | * [2] Deck, S., & Renard, N. (2020). Towards an enhanced protection of attached boundary layers in hybrid RANS/LES methods. Journal of Computational Physics, vol. 400, pp. 108970, 2020. | ||
=== | === 改良されたラグランジュ射出モデル:コーンノズル・インジェクション(coneNozzleInjection === | ||
このリリースでは、coneNozzleInjectionモデルに2つのマイナーな改良が加えられました: | |||
* | * 粒子をディスク全体に角度間隔で均一に分布させる新しい射出方法; | ||
* | * 粒子噴射にインジェクターの推定速度を含める。 静的インジェクタの入出力動作に変更はありませんが、移動インジェクタから噴射される粒子の速度にインジェクタの速度が含まれるようになりました。 | ||
最小限の使用例は以下の通り: | |||
<code>injectionModels | <code>injectionModels | ||
{ | { | ||
449行目: | 439行目: | ||
} | } | ||
}</code> | }</code> | ||
ソースコード | |||
* $FOAM_SRC/lagrangian/intermediate/submodels/Kinematic/InjectionModel/ConeNozzleInjection/ConeNozzleInjection.H | * $FOAM_SRC/lagrangian/intermediate/submodels/Kinematic/InjectionModel/ConeNozzleInjection/ConeNozzleInjection.H | ||
リクエストのマージ | |||
* Merge request #719 | * Merge request #719 | ||
=== | === 改良されたソリッドボディモーション機能:tabulated6DoFMotion === | ||
表6DoFMotionモデルに線形補間オプションが追加されました。 最小限の使用例を以下に示します: | |||
<code>solidBodyMotionFunction tabulated6DoFMotion; | <code>solidBodyMotionFunction tabulated6DoFMotion; | ||
interpolationScheme linear; // spline;</code> | interpolationScheme linear; // spline;</code> | ||
ソースコード | |||
* $FOAM_SRC/meshTools/solidBodyMotionFunctions/tabulated6DoFMotion/tabulated6DoFMotion.H | * $FOAM_SRC/meshTools/solidBodyMotionFunctions/tabulated6DoFMotion/tabulated6DoFMotion.H | ||
=== | === 新しい有限領域のフレームワーク: 膜分離モデル === | ||
有限面積ベースのフィルム曲率分離モデルが更新され、シャープエッジ用の新しいフィルム分離モデルが追加された。 これらの更新により、さまざまな幾何学的条件や流動条件下での膜分離予測の精度と柔軟性が向上しました。 | |||
主な変更点と追加点 | |||
* | * オーウェン-ライリーモデル: | ||
** | ** 既存のcurvatureSeparationモデルは、Owen & Ryley (1983)の研究に基づき、OwenRyleyModelとして再実装された。 このモデルは次のように仮定しています: | ||
*** | *** フィルムが表面から剥がれると、すぐに細かい霧状の液滴になる。 その結果、液体が凝集塊として離脱するシナリオを正確に表現できない可能性がある。 | ||
*** | *** フィルムは一定の半径を持つ丸みを帯びたコーナーの周囲を流れるため、曲率が明確でない鋭角のコーナーでは適用が制限される可能性がある。 | ||
*** | *** 膜厚は1e-4 mより薄く、粘性効果と表面擾乱は無視される。 | ||
*** | *** 均一な膜速度と膜厚。 | ||
*** | *** 分離基準は明示的に定式化されるのではなく、モデルの仮定に基づいて推測される。 | ||
* | * シャープエッジのための新しいフィルム分離モデル: | ||
** | ** 新しいモデルFriedrichModelを導入し、シャープエッジでの膜分離特性を計算し、完全膜分離と部分膜分離の両方のシナリオをカバーする。 このモデルは、Friedrichら(2008)とZhangら(2018)の研究に基づいている: | ||
*** | *** Friedrichら(2008): | ||
**** | **** 剥離点における制御体積内の力の平衡に根ざした剥離基準を開発。 | ||
**** | **** 最大膜厚を1e-4 mと仮定。 | ||
**** | **** 表面張力、重力、フィルムの慣性を考慮する。 | ||
**** | **** 早期破裂を予測することはできるが、比較的信頼できることが知られている。 | ||
**** | **** ANSYS Forte 18.2 に実装されている分離メソッドとして機能します。 | ||
*** | *** Zhangら(2018): | ||
**** | **** 質量分率基準を導入することで、Friedrichらのモデルを強化した。 細胞内の膜全体が同時に剥離すると仮定するモデルとは異なり、Zhangらのアプローチは、これらの基準に基づいて膜の一部のみを剥離する。 これにより、フィルムが実際にどの程度剥離するかについて、より現実的な予測が可能になった。 | ||
包括的な直列および並列テストケースは、ロバストなコーナーおよび分離同定を確実にするために実施され、流れ方向に対して様々な形状や向きの鋭角エッジを持つケース、複数の空間分解能および並列化構成を含む。 | |||
その結果、ユーザーは、メッシュの複雑さや計算設定に関係なく、膜分離現象をシミュレーションする際の一貫性と信頼性の向上を期待することができます。 | |||
最小限の使用例は以下の通り: | |||
<code>injectionModels | <code>injectionModels | ||
{ | { | ||
506行目: | 496行目: | ||
deltaByR1Min 0; | deltaByR1Min 0; | ||
}</code> | }</code> | ||
ソースコード | |||
* $FOAM_SRC/regionFaModels/liquidFilm/subModels/kinematic/injectionModel/filmSeparation/filmSeparationModels | * $FOAM_SRC/regionFaModels/liquidFilm/subModels/kinematic/injectionModel/filmSeparation/filmSeparationModels | ||
チュートリアル | |||
* $FOAM_TUTORIALS/lagrangian/kinematicParcelFoam/pitzDailyWithSprinklers | * $FOAM_TUTORIALS/lagrangian/kinematicParcelFoam/pitzDailyWithSprinklers | ||
リクエストのマージ | |||
* Merge request #714 | * Merge request #714 | ||
=== | === simpleFoamの改良:新しいdynamicMeshのサポート === | ||
simpleFoamはpimpleFoamと同様にdynamicFvMeshをサポートするようになりました。 constant/dynamicMeshDictがあればそれを読み込み、繰り返しごとにupdate()ルーチンを呼び出します。 これにより、例えば、動的なメッシュのリファインメント/アンリファインメントを用いた定常シミュレーションが可能になります。 | |||
==== | ==== 詳細情報 ==== | ||
* Issue #3269 | * Issue #3269 | ||
== | == 後処理 == | ||
=== | === 新しいレポート作成 === | ||
foamReport関数オブジェクトは、OpenFOAMの実行データを収集するためのテンプレートベースのテキスト置換システムを提供します。 ユーザーが提供するテンプレートファイルは、マークダウン(.md)、ウェブ(.html)、ラテックス(.tex)などのプレーンテキストファイルの形式をとることができます。 ダブルハンドル構文{{ENTRY}}を使用して提供された項目は置換されます(大文字と小文字は区別されません)。 OF_で始まる一般的な組み込みエントリのセットが提供されます。 | |||
* OF_HOST: | * OF_HOST: ホストマシン名 | ||
* OF_CASE_NAME: | * OF_CASE_NAME: ケース名 | ||
* OF_API: OpenFOAM | * OF_API: OpenFOAM APIレベル | ||
* OF_DATE_START: | * OF_DATE_START: ジョブ開始日 | ||
* OF_CASE_PATH: | * OF_CASE_PATH: ケースへのファイルパス | ||
* ... | * ... | ||
組み込みキーとユーザー提供キーの完全なセットは、debugKeysエントリーを使用して書き込むことができる。 ユーザー定義の置換は辞書形式でリストされ、置換モデルには以下が含まれる: | |||
* fileRegEx : | * fileRegEx : ファイルからの正規表現 | ||
* functionObjectValue : | * functionObjectValue : 関数オブジェクトの結果を取り出す | ||
* dictionaryValue : | * dictionaryValue : 辞書からの値 - ファイルベースまたはレジストリ検索から | ||
* environmentVariable : | * environmentVariable : キーワードを環境変数に置き換える | ||
* userValue : | * userValue : キーワードをユーザが指定した文字列に置き換える: | ||
マークダウン・テンプレートに基づく使用例: | |||
<code>foamReport1 | <code>foamReport1 | ||
611行目: | 601行目: | ||
... | ... | ||
}</code> | }</code> | ||
マークダウン・ベースのテンプレート・ファイルの例: | |||
<code># <nowiki>{{OF_EXECUTABLE}}</nowiki> : <nowiki>{{OF_CASE_NAME}}</nowiki> tutorial | <code># <nowiki>{{OF_EXECUTABLE}}</nowiki> : <nowiki>{{OF_CASE_NAME}}</nowiki> tutorial | ||
- Case: <nowiki>{{OF_CASE_PATH}}</nowiki> | - Case: : <nowiki>{{OF_CASE_PATH}}</nowiki> | ||
- Submission: <nowiki>{{OF_CLOCK_START}}</nowiki> on <nowiki>{{OF_DATE_START}}</nowiki> | - Submission: <nowiki>{{OF_CLOCK_START}}</nowiki> on <nowiki>{{OF_DATE_START}}</nowiki> | ||
- Report time: <nowiki>{{OF_CLOCK_NOW}}</nowiki> on <nowiki>{{OF_DATE_NOW}}</nowiki> | - Report time: <nowiki>{{OF_CLOCK_NOW}}</nowiki> on <nowiki>{{OF_DATE_NOW}}</nowiki> | ||
--- | --- | ||
<nowiki>| Property |</nowiki> Value | | |||
<nowiki>##</nowiki> Run information | |||
<nowiki>| Property |</nowiki> Value | | |||
<nowiki>|----------------|--------------------|</nowiki> | |||
<nowiki>| Host |</nowiki> <nowiki>{{OF_HOST}}</nowiki> | | |||
<nowiki>| Processors |</nowiki> <nowiki>{{OF_NPROCS}}</nowiki> | | |||
<nowiki>| Time steps |</nowiki> <nowiki>{{OF_TIME_INDEX}}</nowiki> | | |||
<nowiki>| Initial deltaT |</nowiki> <nowiki>{{initial_deltaT}}</nowiki> | | |||
<nowiki>| Current deltaT |</nowiki> <nowiki>{{OF_TIME_DELTAT}}</nowiki> | | |||
<nowiki>| Execution time |</nowiki> <nowiki>{{executionTime}}</nowiki> | | |||
--- | --- | ||
<nowiki>| Property |</nowiki> Value | | |||
<nowiki>##</nowiki> OpenFOAM information | |||
<nowiki>| Property |</nowiki> Value | | |||
<nowiki>|----------------|--------------------|</nowiki> | |||
<nowiki>| Version |</nowiki> <nowiki>{{OF_VERSION}}</nowiki> | | |||
<nowiki>| API |</nowiki> <nowiki>{{OF_API}}</nowiki> | | |||
<nowiki>| Patch |</nowiki> <nowiki>{{OF_PATCH}}</nowiki> | | |||
<nowiki>| Build |</nowiki> <nowiki>{{OF_BUILD}}</nowiki> | | |||
<nowiki>| Architecture |</nowiki> <nowiki>{{OF_BUILD_ARCH}}</nowiki> | | |||
--- | --- | ||
<nowiki>| Property |</nowiki> Value | | |||
<nowiki>##</nowiki> Mesh statistics | |||
<nowiki>| Property |</nowiki> Value | | |||
<nowiki>|-------------------|----------------------|</nowiki> | |||
<nowiki>| Bounds |</nowiki> <nowiki>{{OF_MESH_BOUNDS_MIN}}</nowiki><nowiki>{{OF_MESH_BOUNDS_MAX}}</nowiki> | | |||
<nowiki>| Number of cells |</nowiki> <nowiki>{{OF_MESH_NCELLS}}</nowiki> | | |||
<nowiki>| Number of faces |</nowiki> <nowiki>{{OF_MESH_NFACES}}</nowiki> | | |||
<nowiki>| Number of points |</nowiki> <nowiki>{{OF_MESH_NPOINTS}}</nowiki> | | |||
<nowiki>| Number of patches |</nowiki> <nowiki>{{OF_MESH_NPATCHES}}</nowiki> | | |||
--- | --- | ||
<nowiki>| Property |</nowiki> Value | tolerance(rel) | Tolerance(abs) | | |||
<nowiki>##</nowiki> Linear solvers | |||
<nowiki>| Property |</nowiki> Value | tolerance(rel) | Tolerance(abs) | | |||
<nowiki>|----------|----------------|------------------|---------------------|</nowiki> | |||
<nowiki>| p |</nowiki> `<nowiki>{{solver_p}}</nowiki>` | <nowiki>{{solver_p_tol}}</nowiki> | <nowiki>{{solver_p_reltol}}</nowiki> | | |||
<nowiki>| U |</nowiki> `<nowiki>{{solver_U}}</nowiki>` | <nowiki>{{solver_u_tol}}</nowiki> | <nowiki>{{solver_u_reltol}}</nowiki> | | |||
--- | --- | ||
<nowiki>##</nowiki> Numerical scehemes | |||
<nowiki>##</nowiki> Numerical scehemes | |||
The chosen divergence schemes comprised: | The chosen divergence schemes comprised: | ||
[[利用者:Mmer547|mmer547]] ([[利用者・トーク:Mmer547|トーク]]) | |||
[[利用者:Mmer547|mmer547]] ([[利用者・トーク:Mmer547|トーク]]) | |||
<nowiki>{{divSchemes}}</nowiki> | |||
[[利用者:Mmer547|mmer547]] ([[利用者・トーク:Mmer547|トーク]]) | |||
--- | --- | ||
<nowiki>##</nowiki> Graphs | |||
<nowiki>##</nowiki> Graphs | |||
Residuals | Residuals | ||
<nowiki>![]({{OF_CASE_PATH}}</nowiki>/postProcessing/residualGraph1/<nowiki>{{OF_TIME}}</nowiki>/residualGraph1.svg) | |||
<nowiki>![]({{OF_CASE_PATH}}</nowiki>/postProcessing/residualGraph1/<nowiki>{{OF_TIME}}</nowiki>/residualGraph1.svg) | |||
--- | --- | ||
<nowiki>##</nowiki> Results | |||
<nowiki>##</nowiki> Results | |||
Forces | Forces | ||
<nowiki>![]({{OF_CASE_PATH}}</nowiki>/postProcessing/forceCoeffsGraph1/<nowiki>{{OF_TIME}}</nowiki>/forceCoeffsGraph1.svg) | |||
<nowiki>![]({{OF_CASE_PATH}}</nowiki>/postProcessing/forceCoeffsGraph1/<nowiki>{{OF_TIME}}</nowiki>/forceCoeffsGraph1.svg) | |||
---</code> | ---</code> | ||
ソースコード | |||
* $FOAM_SRC/functionObjects/utilities/foamReport | * $FOAM_SRC/functionObjects/utilities/foamReport | ||
チュートリアル | |||
* $FOAM_TUTORIALS/incompressible/simpleFoam/motorBike | * $FOAM_TUTORIALS/incompressible/simpleFoam/motorBike | ||
リクエストのマージ | |||
* Merge request #716 | * Merge request #716 | ||
=== | === 新しいグラフ生成 === | ||
graphFunctionObjectは、ユーザーが関数オブジェクトの結果値のSVGグラフを生成することを可能にします。例えば、進化の残差や、力係数のような削減されたデータを表示します。 | |||
最小限の例を以下に示す: | |||
<code>// Generate the result values | <code>// Generate the result values | ||
solverInfo1 | solverInfo1 | ||
774行目: | 787行目: | ||
//... | //... | ||
}</code> | }</code> | ||
ソースコード | |||
* $FOAM_SRC/functionObjects/utilities/graphFunctionObject | * $FOAM_SRC/functionObjects/utilities/graphFunctionObject | ||
チュートリアル | |||
* $FOAM_TUTORIALS/incompressible/simpleFoam/motorBike | * $FOAM_TUTORIALS/incompressible/simpleFoam/motorBike | ||
=== | === 新しい有限領域関数オブジェクト:surfaceCourantNumber === | ||
新しい有限面積関数オブジェクトsurfaceCourantNumberは、有限面積の面中心で表面のクーラント数フィールドを計算します。 これは、liquidFilmFoamソルバーで使用されているような、エッジ中心でクーラント数を計算するアプローチからの概念的な転換を意味します。 面中心でクーラント数を評価することにより、surfaceCourantNumberは、より局所的で、より正確な表面ベースの流れ解析の指標を提供することができます。 | |||
最小限の使用例は以下の通り: | |||
<code>surfaceCourantNumber1 | <code>surfaceCourantNumber1 | ||
{ | { | ||
802行目: | 814行目: | ||
... | ... | ||
}</code> | }</code> | ||
ソースコード | |||
* $FOAM_SRC/regionFaModels/functionObjects/surfaceCourantNumber/surfaceCourantNumber.H | * $FOAM_SRC/regionFaModels/functionObjects/surfaceCourantNumber/surfaceCourantNumber.H | ||
チュートリアル | |||
* $FOAM_TUTORIALS/finiteArea/liquidFilmFoam/cylinder | * $FOAM_TUTORIALS/finiteArea/liquidFilmFoam/cylinder | ||
リクエストのマージ | |||
* Merge request #706 | * Merge request #706 | ||
=== | === ソルバー関数オブジェクトの改良 アウターループ収束チェック === | ||
ソルバー関数オブジェクト(scalarTransport、energyTransport、electricPotential)に外部ループの収束チェック機能が追加されました。 この改良により、収束が達成された時点で不要なループを排除することで、計算オーバーヘッドを削減し、解法プロセスを合理化することができます。 最小限の使用例を以下に示します: | |||
<code>scalarTransport1 | <code>scalarTransport1 | ||
{ | { | ||
823行目: | 834行目: | ||
... | ... | ||
}</code> | }</code> | ||
ソースコード | |||
* $FOAM_SRC/functionObjects/solvers/scalarTransport/scalarTransport.H | * $FOAM_SRC/functionObjects/solvers/scalarTransport/scalarTransport.H | ||
829行目: | 840行目: | ||
* $FOAM_SRC/functionObjects/solvers/electricPotential/electricPotential.H | * $FOAM_SRC/functionObjects/solvers/electricPotential/electricPotential.H | ||
リクエストのマージ | |||
* Merge request #699 | * Merge request #699 | ||
== | == パラレル == | ||
=== | === ノンブロッキング・エクスチェンジ(NBX)の改善 === | ||
OpenFOAM-v2306では、実験的な「ノンブロッキング・コンセンサス交換」(NBX)オプションが導入されました。 8192コアに複数のcyclicAMIがあり、(etc/controlDictまたはローカルシステム/controlDictに)エントリがある場合です: | |||
<code>OptimisationSwitches | <code>OptimisationSwitches | ||
{ | { | ||
849行目: | 859行目: | ||
pbufs.tuning 1; | pbufs.tuning 1; | ||
}</code> | }</code> | ||
以下の時間帯を提供: | |||
{| class="wikitable" | {| class="wikitable" | ||
|NBX | |NBX | ||
860行目: | 870行目: | ||
|18k | |18k | ||
|} | |} | ||
NBXは、「受信と消費」の順序が「送信の順序」と同じであることを保証していない。 これは、cyclicAMIのジオメトリなど、長いメッセージではより敏感であり、一意の「タグ」(デフォルトのPstream::msgType()ではない)を確保するように注意しなければならない。 | |||
ソースコード | |||
* $FOAM_SRC/meshTools/AMIInterpolation/AMIInterpolation | * $FOAM_SRC/meshTools/AMIInterpolation/AMIInterpolation | ||
リクエストのマージ | |||
* Merge request #704 | * Merge request #704 | ||
=== | === 改良された有限領域フレームワーク === | ||
いくつかの有限領域フレームワークルーチンは、歪度や非直交性に関係なく、平面および非平面有限領域メッシュに影響を与え、並列処理時に一貫性のない挙動を示します。 これらの不整合は、主に内部エッジとプロセッサエッジに適用されるアルゴリズムの違いから生じています。 例えば、非平面有限面積メッシュのコーナーエッジが2つのプロセッサ間で共有されている場合、接線方向に微妙な正負の摂動が生じることがあります。 この摂動は時間の経過とともに伝播し、膜分離のような予期せぬ流れ挙動を引き起こす可能性があります。 | |||
入念にテストされた一連のコミットは、主に以下のコアルーチンに対処するために、並列一貫性を改善した: | |||
<code>makeLPN | <code>makeLPN | ||
makeWeights | makeWeights | ||
880行目: | 889行目: | ||
makeCorrectionVectors | makeCorrectionVectors | ||
makeSkewCorrectionVectors</code> | makeSkewCorrectionVectors</code> | ||
ソースコード | |||
* $FOAM_SRC/finiteArea/faMesh/faMeshDemandDrivenData.C | * $FOAM_SRC/finiteArea/faMesh/faMeshDemandDrivenData.C | ||
* $FOAM_SRC/finiteArea/faMesh/faPatches/constraint/processor/processorFaPatch.C | * $FOAM_SRC/finiteArea/faMesh/faPatches/constraint/processor/processorFaPatch.C | ||
リクエストのマージ | |||
* Merge request #708 | * Merge request #708 | ||
=== | === reconstructParMesh の改良 === | ||
reconstructParMeshユーティリティは、有限面積('faMesh')メッシュを再構築することができ、有限面積メッシュが並列に生成される場合に便利です。 ソースコード | |||
* $FOAM_UTILITIES/parallelProcessing/reconstructParMesh | * $FOAM_UTILITIES/parallelProcessing/reconstructParMesh | ||
リクエストのマージ | |||
* Merge request #711 | * Merge request #711 | ||
=== | === 改良された分散トライサーフェス === | ||
distributedTriSurfaceMeshは、例えばsystem/snappyHexMeshDictのように、関連する辞書で分解方法を指定することで、他のシミュレーションとは異なる分解方法で実行できるようになりました: | |||
<code>box | <code>box | ||
{ | { | ||
911行目: | 919行目: | ||
n (2 2 2); | n (2 2 2); | ||
}</code> | }</code> | ||
を指定することで、三角形を複製せずに実行することもできます。 | |||
<code>decomposeUsingBbs false;</code> | <code>decomposeUsingBbs false;</code> | ||
これは過剰なメモリ使用を回避し、頂点ごとの法線を保存するので、滑らかな法線を持つように拡張できる。 | |||
この2つの変更により、単純なメッシュで非並列または並列を実行しても、同じ結果が得られるようになった。 下の図では、非平行メッシュを青い面で、平行メッシュを赤い線で表しています。 | |||
チュートリアル | |||
* $FOAM_TUTORIALS/mesh/snappyHexMesh/distributedTriSurfaceMesh | * $FOAM_TUTORIALS/mesh/snappyHexMesh/distributedTriSurfaceMesh | ||
ソースコード | |||
* $FOAM_SRC/parallel/distributed/distributedTriSurfaceMesh/distributedTriSurfaceMesh.H | * $FOAM_SRC/parallel/distributed/distributedTriSurfaceMesh/distributedTriSurfaceMesh.H | ||
リクエストのマージ | |||
* Merge request #720 | * Merge request #720 | ||
== | == ユーザビリティ == | ||
=== | === C++17に更新 === | ||
現在進行中のGPU開発をサポートするため、C++の最低規格がC++14からC++17に引き上げられた。 | |||
* | * コミット: #44f7a726 | ||
* | * ソース: $WM_PROJECT_DIR/wmake/rules | ||
=== | === 新しいチュートリアルのデモンストレーション === | ||
==== | ==== ミッシングコーナー ==== | ||
これは様々なメッシュ・ユーティリティを紹介するシンプルなチュートリアルです: | |||
* | * cellDecomposition関数四角形メッシュを作成するオブジェクト | ||
* | * テットを多面体に変換するpolyDualMesh | ||
* | * surfaceMeshExtractで追加のポイントパッチを作成する。 | ||
* | * moveDynamicMeshでメッシュを少し変形させる。 メッシュのモーフィングは、特徴制約を無視したラプラシアン点スムージングを使って行われるため、メッシュの品質を向上させるのに悪い働きをします。 | ||
ソースコード | |||
* $FOAM_SRC/functionObjects/field/cellDecomposer | * $FOAM_SRC/functionObjects/field/cellDecomposer | ||
* $FOAM_UTILITIES/mesh/manipulation/polyDualMesh | * $FOAM_UTILITIES/mesh/manipulation/polyDualMesh | ||
チュートリアル | |||
* $FOAM_TUTORIALS/mesh/polyDualMesh/missingCorner | * $FOAM_TUTORIALS/mesh/polyDualMesh/missingCorner | ||
==== | ==== ダム決壊 ==== | ||
これはdamBreakチュートリアルの変形で、cyclicACMIを使ってフローをコントロールすることを紹介している。 このチュートリアルでは | |||
* | * 追加の(cyclicACMI)バッフルが液体の流れを遮断する。 | ||
* | * 時刻0.5秒、閉塞部の下半分の面が開く | ||
* | * これは、スケールファクターを使用して完全非結合(すなわち壁)から完全結合に変換するcyclicACMIによって行われる。 | ||
* | * スケールはconstant/polyMesh/boundaryのパッチ定義にあるコード化されたFunction1の項目を通して設定されます。 | ||
* | * 初期状態:閉塞(赤) | ||
ソースコード | |||
* $FOAM_SRC/OpenFOAM/primitives/functions/Function1/Coded | * $FOAM_SRC/OpenFOAM/primitives/functions/Function1/Coded | ||
* $FOAM_SRC/meshTools/AMIInterpolation/patches/cyclicACMI/cyclicACMIPolyPatch | * $FOAM_SRC/meshTools/AMIInterpolation/patches/cyclicACMI/cyclicACMIPolyPatch | ||
チュートリアル | |||
* $FOAM_TUTORIALS/multiphase/interFoam/RAS/damBreakLeakage | * $FOAM_TUTORIALS/multiphase/interFoam/RAS/damBreakLeakage | ||
== | == コミュニティ == | ||
OpenFOAM v2412のリリースは、OpenFOAMのコアチーム以外からの貢献の努力を認め、OpenFOAMの開発を統一するために、より広いOpenFOAMコミュニティに参加してもらうための継続的な努力の上に成り立っています。 | |||
いくつかの開発は、メインのコードベースに直接統合されている。 | |||
* | * 地域貢献: アドジョイント最適化の改良 詳細 | ||
* | * 地域貢献: SA-DDES乱流モデルの遮蔽機能を改善 詳細... | ||
もし、共同開発の可能性を模索し、あなたの開発したものを含めたいとお考えでしたら、ぜひご連絡ください。 | |||
=== | === 乱流専門委員会リポジトリへの新しい投稿 === | ||
乱流技術委員会リポジトリ傘下の以下の2つのリポジトリを公開いたします: | |||
* gammaSST : | * gammaSST :3方程式遷移と乱流モデル。 | ||
* HelicitySpalartAllmaras : | * HelicitySpalartAllmaras : Liuらのヘリシティ補正を用いたSpalart-Allmaras乱流モデル。 | ||
ソースコード | |||
* $FOAM_SRC/$WM_PROJECT_DIR/plugins/turbulence-community | * $FOAM_SRC/$WM_PROJECT_DIR/plugins/turbulence-community | ||
帰属 | |||
* | * OpenCFDは、Jiří Fürst、Jeff Defoe、そして彼らの同僚たちの貴重な貢献と援助に感謝したい。 | ||
=== 謝辞 === | === 謝辞 === |