PyFR入門ガイド

Flux Reconstruction(FR)形式は、高精度のコンパクトな流体数値形式です。PyFRは、非常に正確なFR形式を使用して、世界で最も困難な流体の流れの問題のいくつかに対処するオープンソースCFDパッケージです。特に不均一な乱気流に関しては。関連ブログは、Nvidiaブログにあります。PyFRの公式Webサイトでは、ダウンロードとマニュアルを提供しています。この記事は上記の内容に基づく入門ガイドであり、動作プラットフォームはUbuntu 19.10です。

インストール

  1. 基本的な依存関係をインストールします。コマンドは
sudo pip3 install xxx

これらにxxxは以下が含まれます:

appdirs >= 1.4.0
gimmik >= 2.0
h5py >= 2.6
mako >= 1.0.0
mpi4py >= 2.0
numpy >= 1.8
pytools >= 2016.2.1
  1. gccのバージョンを確認してください:gcc --version4.9以上である必要があります。
  2. 残りの依存関係をインストールします。
sudo apt install python3 python3-pip libopenmpi-dev openmpi-bin
sudo apt install metis libmetis-dev libblas3
pip3 install virtualenv
  1. paraviewをインストールします。sudo apt install paraview
  2. 仮想環境をセットアップします。
python3 -m virtualenv ENV3
source ENV3/bin/activate

そして仮想環境にPyFRをインストールします:pip install pyfr

コマンドを実行

PyFRは3つのファイル形式を使用します。

  • .ini-パラメータファイル
  • .pyfrm-グリッドファイル
  • .pyfrs-ソリューションファイル

PyFRはいくつかのコマンドを提供します:

  • pyfr import-グリッド情報を含む.mshまたは.pyfrm形式のファイルをインポートします。例えば:pyfr import mesh.msh mesh.pyfrm
  • pyfr partition-既存のグリッドとその関連ソリューションファイルを分割します。例えば:pyfr partition 2 mesh.pyfrm solution.pyfrs .
  • pyfr run-シミュレーションを実行します。例えば:pyfr run mesh.pyfrm configuration.ini
  • pyfr restart-既存のソリューションファイルに基づいてシミュレーションを再開します。例えば:pyfr restart mesh.pyfrm solution.pyfrs
  • pyfr export- .pyfrsファイル変換非構造VTK .vtuまたはpvtuファイル。

PyFRを並行して実行するpyfrには、コマンドの前にプレフィックスを使用しますmpiexec -n <cores/devices>グリッドは事前に分割する必要があり、コアまたはデバイスの数はパーティションの数と同じでなければならないことに注意してください。次にpyfr run、最後に並列パラメーターを追加します。-b cuda-Cuda並列、-b openmp-OpenMP並列、-b opencl-OpenCL並列。以前の操作が正しければ、この時点でOpenMPを直接使用できるはずです。CudaとOpenCLは自分でインストールする必要があります。

例:2次元オイラー渦

例としてOpenMPを取り上げます。PyFR Webサイトからソースコードをダウンロードexamplesし、適切な作業ディレクトリにフォルダーをコピーします。euler_vortex_2dフォルダ内のターミナル開きます。

  1. まず、Python仮想環境を起動します。source ~/ENV3/bin/activate
  2. メッシュファイルを変換します。pyfr import euler_vortex_2d.msh euler_vortex_2d.pyfrm
  3. グリッドを2つのパーティションに分割します。pyfr partition 2 euler_vortex_2d.pyfrm .
  4. 実行:(mpiexec -n 2 pyfr run -b openmp -p euler_vortex_2d.pyfrm euler_vortex_2d.ini
    注:ここでの並列パラメーター-b openmpは、マニュアルの元のテキストです-b cuda。これ-n 2は、手順3の2つのパーティション対応しています。)
  5. データの最後のフレームを.vtuフォーマットファイルに変換します。コマンドは次のとおりです。このコマンドにはpyfr export euler_vortex_2d.pyfrm euler_vortex_2d-100.0.pyfrs euler_vortex_2d-100.0.vtu -d 4
    2つのポイントがあります。1つは.pyfrmファイルを取り込むこと、もう1つは最後のパラメーターを使用することです-d 4。これは、ユニットを4つの線形サブユニットに分割して、表示精度を向上させることを意味します。
  6. Paraviewで.vtuファイルを開きます。速度フィールドは次のとおりです。速度場

追記

特に、上記の計算例から、OpenMPを使用する並列スレッドnの数がコンピューターの物理コアの数と完全に等しい場合速度が最も速くなり、そうでない場合は速度が大幅に低下することに注意してくださいたとえば、私のラップトップでは、-n 2実行時間はわずか19秒、-n 4または1つのスレッドで数時間かかります。正直なところ、なぜその違いがそれほど大きいのか理解できませんでした。

おすすめ

転載: blog.csdn.net/iamzhtr/article/details/103112959