737
回編集
(→境界条件) |
(→後処理) |
||
1,585行目: | 1,585行目: | ||
== 後処理 == | == 後処理 == | ||
=== Ensightフォーマットへのデータ変換を改善 === | |||
foamToEnsightユーティリティが拡張され、cellZonesの柔軟な取り扱いが可能になり、foamToVTKと同様の機能をより多く組み込むことができるようになりました。foamToEnsightPartsユーティリティ(シリアルのみであった)は冗長化されたため削除されました。 | |||
現在、foamToEnsight | |||
複数のセルゾーンを扱うことができます。 | |||
点場のための追加サポート | |||
追加の-nearCellValueオプション(foamToVTKと同様) | |||
これまでと同様に、シリアルまたはパラレルで実行できます。 | |||
最新のfoamToEnsightオプションです。 | |||
Options Output | |||
default Individual parts for cellZones, unzoned cells (internalMesh) and patches | |||
-cellZones NAME/LIST Specify single or multiple cellZones to write | |||
-no-cellZones Suppress writing any cellZones | |||
-excludePatches NAME/LIST Exclude single or multiple patches (name or regex) from writing | |||
-index NUM Starting index for consecutive number of Ensight data/files. | |||
-nearCellValue Use zero-gradient cell values on patches | |||
-no-mesh Suppress writing the geometry | |||
-no-overwrite Suppress removal of existing EnSight output directory | |||
-no-point-data Suppress conversion of pointFields, disable -nodeValues | |||
オプションの完全なリストは、オンラインマニュアルおよび/または OpenFOAM API ガイドに記載されています。 | |||
改良されたセルゾーンの機能性は、セルゾーンを使用したチュートリアルケースを使用してテストすることができます。foamToEnsight を実行すると、下図のようにケースを視覚化することができ、さまざまなセルゾーンが異なる色で強調表示されます。ParaViewでは、フィルタ抽出ブロックを使用して、Ensightフォーマットからセルゾーンを抽出することができます。 | |||
チュートリアル | |||
$FOAM_TUTORIALS/incompressible/pimpleFoam/RAS/propeller | |||
=== 新しい運動量誤差関数オブジェクト === | |||
新しいmomentumError関数オブジェクトは、controlDictの設定、またはpostProcessオプションとユーティリティを介したコマンドラインの設定に基づいて、トップレベルソルバーで解かれた運動量方程式の離散化に関連したエラーを評価します。 | |||
評価は、バジェット計算に過渡項が含まれないタイムステップごとに実行されます。したがって、このツールは定常ソルバーにのみ適しています。 | |||
誤差は、以下を使用して計算されます。 | |||
<syntaxhighlight> | |||
momentErr = divDevRhoReff() + fvc::div(phi, U) + fvc::grad(p) | |||
</syntaxhighlight> | |||
ここで | |||
divDevRhoReff() は乱流運動量フラックスです. | |||
fvc::div(phi, U)移流項 | |||
fvc::grad(p)圧力勾配 | |||
controlDict内の関数オブジェクトの例です。 | |||
<syntaxhighlight> | |||
momErr | |||
{ | |||
type momentumError; | |||
executeControl writeTime; | |||
writeControl writeTime; | |||
} | |||
</syntaxhighlight> | |||
ソースコード | |||
$FOAM_SRC/functionObjects/field/momentumError | |||
チュートリアル | |||
フォームチュートリアル/incompressible/simpleFoam/airFoil2D | |||
=== Abaqus表面ファイルの新規読み込み === | |||
本バージョンでは、Abaqus サーフェス要素ファイルの読み込み機能が追加されました。 | |||
Abaqus ファイルと STARCD ファイルでは、入力ファイルに拡張子 .inp が使用される場合があるため、拡張子に依存しない入出力形式を指定する機能が追加されました。例えば、以下のようになります。 | |||
<syntaxhighlight> | |||
surfaceMeshConvert -read-format abaqus file.ext1 -write-format nastran file.ext2 | |||
</syntaxhighlight> | |||
Handling of surface extraction from solid elements and writing sampled surfaces in Abaqus format will be made available in future releases. | |||
Source code | |||
$FOAM_SRC/fileFormats/abaqus | |||
$FOAM_SRC/src/surfMesh/surfaceFormats/abaqus | |||
=== 新しいインターフェイスの高さ関数オブジェクト === | |||
この関数オブジェクトは openfoam.org リポジトリから移植されました。 | |||
interfaceHeight オブジェクトは、ユーザーが指定した位置のセットの上にあるインターフェイスの高さを報告します。それぞれの場所について、その場所と最下層の境界線上のインターフェイスの垂直距離が書かれ、これらの高さが計算されたインターフェイス上の点が完全に書き込まれます。これは,位置の上下に複数のインタフェースが存在する場合,平均値が報告されるという意味で,積分アプローチを使用しています. | |||
初期コードは、インターフェースの高さが計算されるデフォルトの方向を変更するオプションを含むように拡張されました。デフォルトでは、高さ計算は重力ベクトルに合わせて設定されますが、オプションの方向入力は、異なる方向を設定するために使用することができます。 | |||
<syntaxhighlight> | |||
interfaceHeight1 | |||
{ | |||
type interfaceHeight; | |||
libs (fieldFunctionObjects); | |||
alpha alpha.liquid; | |||
direction (1 0 0); | |||
writeControl timeStep; | |||
writeInterval 3; | |||
locations ((0 0 0) (10 0 0) (20 0 0)); | |||
} | |||
</syntaxhighlight> | |||
ソースコード | |||
$FOAM_SRC/functionObjects/field/interfaceHeight | |||
チュートリアル | |||
$FOAM_TUTORIALS/verificationAndValidation/interCondensatingEvaporatingFoam/stefanProblem | |||
帰属 | |||
interfaceHeight 関数オブジェクトのベースは OpenFOAM.org から移植されています。 | |||
拡張コードガイド | |||
インターフェイスの高さ | |||
=== 新しいダイナミックモード分解(DMD)機能オブジェクト === | |||
動的モード分解(DMD)は、データ駆動型、すなわち基礎となる物理学とは独立した次元削減手法であり、与えられた流れ(またはデータセット)から支配的な時空間コヒーレント構造をモードの形で明らかにし、定量化するために使用することができるので、与えられた流れの動的特徴は、支配方程式の完全なセットを計算しなくても解釈可能、牽引可能、または再現可能になるかもしれません。DMD理論へのエレガントで有用な導入はBrunton(2018)によって与えられています。 | |||
このリリースには、Kiewat(2019)、Hematiら(2017)、およびHematiら(2014)によって開発されたアルゴリズムに基づくStreaming Total Dynamic Mode Decomposition(STDMD)と呼ばれる関数オブジェクトとしての新しいDMDバリアントが含まれています。 | |||
他のDMDバリアントの中で、STDMDは、インクリメンタルアップデートと直交則ベースでのデータ圧縮を可能にすることによって、経済化された実行可能なメモリおよびCPU使用量と並んで、一般的なDMD法の能力を提供すると推定される。 | |||
顕著な特徴。 | |||
古典的なグラム・シュミット法を含む並列処理、および直接トールスキニーQR分解(eigendecompositionソルバーを除く) | |||
<Type>=Scalar/Vector/SphericalTensor/SymmTensor/Tensorのように、{vol,surface}<Type>Fieldが入力可能なテンプレート入力。 | |||
直交基底圧縮によるデータ圧縮が可能です。 | |||
3つのモードソートアルゴリズムと、支配的なモードを明らかにするための様々なフィルタリングエントリが利用可能です。 | |||
潜在的な(既知の)注意点。 | |||
このSTDMDリリースはベータリリースです。したがって、次のバージョンでは、入出力インタフェースや内部構造の小~中程度の変更が予想されます。 | |||
DMDは執筆時点では活発な研究分野であり、そのため、奇妙な現象に遭遇する可能性があります。 | |||
STDMD行列の中間書き込みは計算コストが高くなるため、現在のところ再起動はサポートされていません。 | |||
wallShearStressなどの境界フィールドの操作は現在サポートされていません。 | |||
postProcessユーティリティによる使用はサポートされていません。 | |||
2次元定常流入円筒からのモード場の断面を示すプロットのセット | |||
検証テストスイートを以下に示します。各サブ図では、対応する順序を使用しています。左上=MATLAB(シリアルデータを使用)、左下=OpenFOAM(シリアル)、右上=MATLAB(パラレルデータを使用)、右下=OpenFOAM(パラレル/8-procs)。 | |||
この関数オブジェクトの最低限の動作例を以下に示します。 | |||
<syntaxhighlight> | |||
STDMD1 | |||
{ | |||
type STDMD; | |||
libs (fieldFunctionObjects); | |||
field <inpField>; | |||
stdmdInterval 5.5; | |||
} | |||
</syntaxhighlight> | |||
ソースコード | |||
$FOAM_SRC/functionObjects/field/STDMD | |||
チュートリアル | |||
$FOAM_TUTORIALS/incompressible/pimpleFoam/laminar/cylinder2D | |||
拡張コードガイド | |||
STDMD | |||
帰属 | |||
OpenCFDは、STDMD機能の初期のMATLAB実装、有益な議論、有益な提案をしてくれたMarco Kiewat博士(ミュンヘン工科大学/AUDI)に感謝したいと思います。 | |||
== ビルドシステム == | == ビルドシステム == |