737
回編集
(→数値演算) |
(→数値演算) |
||
891行目: | 891行目: | ||
OpenQBMMのeigenSolverクラスは、NISTとMathWorksが1998年から2012年までに開発したパブリックドメインライブラリであるTNT/JAMAの実装からほぼ完全に派生しており、http://math.nist.gov/tnt/index.html で入手可能です(Geturled June 6, 2020)。彼らの実装はEISPACKをベースにしています。 | OpenQBMMのeigenSolverクラスは、NISTとMathWorksが1998年から2012年までに開発したパブリックドメインライブラリであるTNT/JAMAの実装からほぼ完全に派生しており、http://math.nist.gov/tnt/index.html で入手可能です(Geturled June 6, 2020)。彼らの実装はEISPACKをベースにしています。 | ||
OpenCFDはOpenQBMMへの貢献者、特にAlberto Passalacqua博士(アイオワ州立大学)に感謝します。 | OpenCFDはOpenQBMMへの貢献者、特にAlberto Passalacqua博士(アイオワ州立大学)に感謝します。 | ||
=== 新しく改良されたアドジョイント最適化ツール === | |||
このアドジョイントライブラリは、計算領域の一部にわたって乱流粘度の二乗積分を通してノイズを定性的に定量化する目的関数の最小化を可能にする新機能を追加しました[1]。この目的関数は、高忠実度のDES過渡シミュレーションを用いた最適化が計算量を必要とする場合に、比較的安価なRANSシミュレーションを用いてノイズを最小化するために過去に使用されてきました。乗用車のサイドミラーの設計に関連して、この目的関数を使用した例を紹介します(参考文献参照)。 | |||
さらに、回転壁速度原始境界条件に含まれる面中心の位置の微分から生じる感度導関数の寄与が、その従属関係、すなわちadjointRotatingWallVelocityを導入することで考慮されるようになりました。これらは、自転車のホイールのリムのような回転部品を設計する際に、正しい感度導関数を計算するために不可欠な要素です。 | |||
最後に、adjointOptimisationFoamを使用して自動形状最適化ループを実行する前にwriteActiveDesignVariablesを実行する必要がなくなり、最適化ワークフローが簡素化されます。 | |||
リファレンス | |||
E.M. Papoutsis-Kiachagias, N. Magoulas, J. Mueller, C. Othmer, K.C. Giannakoglou: 'Noise Reduction in Car Aerodynamics using Surrogate Objective Function and Continuous Adjoint Method with Wall Functions', Computers & Fluids, 122:223-232, 2015. | |||
ソースコード | |||
$FOAM_SRC/optimisation/adjointOptimisation/adjoint/objectives/incompressible/objectiveNutSqr | |||
$FOAM_SRC/最適化/adjointOptimisation/adjoint/adjointBoundaryConditions/adjointRotatingWallVelocity | |||
帰属 | |||
ソフトウェアはPCOpt/NTUAとFOSS GPによって開発されました。 | |||
エヴァンゲロス Papoutsis-Kiachagias博士。 | |||
キリアコス・ジャイアンナコグルー教授。 | |||
アンドリュー・ヘザー博士 | |||
統合 | |||
コードはOpenCFDとNTUAが共同で統合しています。 | |||
ユーザーガイド | |||
NTUAが作成したPDFガイドはこちらからご覧いただけます。ユーザーガイドは、OpenFOAM v1912で導入された体積Bスプラインモーフィングを含む、自動形状最適化ループに関連するすべての機能を更新しました。 | |||
=== パッチ間距離の計算方法が新しくなりました。 === | |||
meshWaveのパッチまでの距離計算の新しいバリエーション、すなわち方向性のあるMeshWaveが導入されました。 | |||
与えられたメッシュ内の与えられた点に対して、既存のmeshWaveメソッドは指定されたパッチまでの直交距離を提供します。これは、例えば90度の丘のような非常に急峻な地形のメッシュでは問題となることがあります。 | |||
新しい directionalMeshWave メソッドは、ユーザが指定した方向の距離成分を無視して、例えばパッチまでの距離を壁法線方向のみで計算できるようにします。 | |||
壁の距離に関するmeshWaveとdirectionalMeshWaveの出力の比較例を以下に示します。 | |||
system/fvSchemes.wallDistを利用したパッチ間距離の計算方法の最小の動作例は以下の通りです。 | |||
<syntaxhighlight> | |||
wallDist | |||
{ | |||
method directionalMeshWave; | |||
n (0 0 1); | |||
} | |||
</syntaxhighlight> | |||
ソースコード | |||
$FOAM_SRC/finiteVolume/fvMesh/wallDist/patchDistMethods/directionalMeshWave | |||
FOAM_SRC/meshTools/cellDist/directionalWallPoint | |||
チュートリアル | |||
$FOAM_TUTORIALS/mesh/moveDynamicMesh/SnakeRiverCanyon | |||
拡張コードガイド | |||
方向性メッシュ波 | |||
=== 新しい外部ソルバーモジュール === | |||
このリリースでは、PETScリニアソルバーライブラリへのOpenFOAMインターフェースを含む新しいモジュール、external-solverを提供します。このインターフェイスの構築は、以下の2つのステップからなります。 | |||
PETScライブラリの構築 | |||
OpenFOAM インターフェースの構築 | |||
PETScライブラリを構築する一つの方法は、OpenFOAM ThirdPartyディレクトリの中にあります。これにより、システム全体のPETScライブラリから分離されます。典型的なビルド順序は次のようになります。 | |||
<syntaxhighlight> | |||
# Go into the ThirdParty directory | |||
cd $WM_THIRD_PARTY_DIR | |||
# Try and see if the PETSc source are there | |||
./makePetsc | |||
# If not it will print download instructions, e.g.: | |||
wget http://ftp.mcs.anl.gov/pub/petsc/release-snapshots/petsc-lite-3.13.2.tar.gz | |||
tar xzf petsc-lite-3.13.2.tar.gz | |||
# Again try building: | |||
./makePetsc | |||
</syntaxhighlight> | |||
これにより、PETSc のインクルードファイルとライブラリが ThirdParty ツリーの下のどこかにインストールされます。include/とlib/ディレクトリの位置をメモしておきます。 | |||
ビルドの2番目の部分は、OpenFOAMソルバーの部分です。最新の外部ソルバーモジュールを入手してください。 | |||
<syntaxhighlight> | |||
cd WM_PROJECT_DIR | |||
git submodule init | |||
git submodule update | |||
</syntaxhighlight> | |||
これにより、モジュール/外部ソルバーツリーが作成されるはずです。 | |||
<syntaxhighlight> | |||
cd modules/external-solver | |||
# Build | |||
./Allwmake -prefix=openfoam | |||
# Update any OpenFOAM settings (not actually necessary for PETSc) | |||
wmRefresh | |||
</syntaxhighlight> | |||
Allwmakeは、PETScへのOpenFOAMソルバーインターフェイスをビルドします。コンパイル行が正しいインクルードディレクトリ(-Iで指定)とリンク行が正しいリンクディレクトリ(-Lで指定)をピックアップしていることを確認してください。リンク行は以下のように終わるはずです。 | |||
<syntaxhighlight> | |||
-o platforms/linux64GccDPInt32Opt/lib/libpetscFoam.so | |||
</syntaxhighlight> | |||
このライブラリを system/controlDict からロードできるようになりました。 | |||
<syntaxhighlight> | |||
libs (petscFoam); | |||
</syntaxhighlight> | |||
ただし、LD_LIBRARY_PATH に PETSc の基礎となるライブラリが必要になることに注意してください。サードパーティのビルドでは、これは通常コマンドで行います。 | |||
<syntaxhighlight> | |||
eval $(foamEtcFile -sh -config petsc -- -force) | |||
</syntaxhighlight> | |||
以下のコマンドでロード可能かどうかを確認することができます。 | |||
<syntaxhighlight> | |||
foamHasLibrary -verbose petscFoam | |||
</syntaxhighlight> | |||
外部ソルバーモジュールには、いくつかのチュートリアルが付属しています。例えば、PETScを線形ソルバーとして使用したSimpleFoam pitzDailyチュートリアル(system/fvSolutionで指定)があります。 | |||
<syntaxhighlight> | |||
Time = 1 | |||
Initializing PETSc | |||
PETSc-bicg: Solving for Ux, Initial residual = 1, Final residual = 0.0165669, No Iterations 1 | |||
PETSc-bicg: Solving for Uy, Initial residual = 1, Final residual = 0.0143104, No Iterations 1 | |||
PETSc-cg: Solving for p, Initial residual = 1, Final residual = 0.0981241, No Iterations 154 | |||
time step continuity errors : sum local = 1.71696, global = -0.010057, cumulative = -0.010057 | |||
PETSc-bicg: Solving for epsilon, Initial residual = 0.199669, Final residual = 0.00505847, No Iterations 2 | |||
bounding epsilon, min: -1.45735 max: 1080.25 average: 48.855 | |||
PETSc-bicg: Solving for k, Initial residual = 1, Final residual = 0.0131958, No Iterations 3 | |||
ExecutionTime = 0.47 s ClockTime = 1 s | |||
</syntaxhighlight> | |||
注意事項 | |||
petsc4Foamソルバーを別のバージョンのPETScでビルドする場合は、(ローカルコピーの)etc/config.sh/petscの設定を変更して、それらをソースにするようにしてください。 | |||
ソースコード | |||
modules/external-solver/src/petsc4Foam | |||
チュートリアル | |||
modules/external-solver/tutorials/incompressible/simpleFoam | |||
帰属 | |||
ガバナンスの下で開発:Mark Olesen、Simone Bna、Stefano Zampiniが参加するHPC技術委員会によって作成されました。 | |||
== 見出し文 == | == 見出し文 == |