Paraviewを用いた3Dデータ表示¶
ここでは、Paraviewを用いてR2D2の計算結果を三次元表示する方法を説明する。
データ準備¶
すでに計算を実行していて、何らかのデータが準備できている状況を想定する。 データをParaviewで扱うためにVTKフォーマットに変換する。 変換後に用意するべきデータは
ある物理量の三次元データ
ある物理量の : でのデータ
それぞれのデータのためにR2D2 Pythonでは以下の関数が用意してある。
- R2D2.vtk.write_3D(qq, x, y, z, file, name)¶
3次元のスカラー量をVTKフォーマットで出力するための関数
- パラメータ:
qq (float) -- 出力したい物理量の3次元numpy配列
x (float) -- x方向の座標
y (float) -- y方向の座標
z (float) -- z方向の座標
file (str) -- 出力先のVTKフォーマットの名前
name (str) -- Paraviewで管理するために用いる出力した物理量の名前
- R2D2.vtk.write_vtk.write_3D_vector(qx, qy, qz, x, y, z, file, name)¶
3次元のベクトル量をVTKフォーマットで出力するための関数
- パラメータ:
qx (float) -- x方向のベクトルの3次元numpy配列
qy (float) -- y方向のベクトルの3次元numpy配列
qz (float) -- z方向のベクトルの3次元numpy配列
x (float) -- x方向の座標
y (float) -- y方向の座標
z (float) -- z方向の座標
file (str) -- 出力先のVTKフォーマットの名前
name (str) -- Paraviewで管理するために用いる出力した物理量の名前
- R2D2.vtk.write_optical_surface(qq, height, y, z, file, name)¶
での2次元データを出力するための関数
- パラメータ:
qq (float) -- 出力したい物理量の2次元配列
height (float) -- の高さの情報。
self.qt['he']
を出力することが想定されている。y (float) -- y方向の座標
z (float) -- z方向の座標
file (str) -- 出力先VTKフォーマットの名前
name (str) -- Paraviewで管理するために用いる出力した物理量の名前
例えば、以下のようにして実行する
run init # 初期設定
d.read_qq(100) # 100番目の3次元データを読込
bb = sqrt(d.qq['bx']**2 + d.qq['by']**2 + d.qq['bz']**2) # 磁場の強さを計算
d.read_tau(100) # 100番目のtau=1の2次元データを読込
R2D2.vtk.write_3D(bb,x,y,z,'bb.vtk','bb')
# 変数名をbbとしてファイル名bb.vtkに3次元データを出力
R2D2.vtk.write_optical_surface(d.qt['in'],d.qt['he'],y,z,'in.vtk','in')
# 変数名をinとしてファイル名in.vtkに2次元データを出力
Paraviewを用いて3次元表示¶
Paraviewのサイト からParaviewをダウンロード。Windows, Linux, macOSのそれぞれのソフトウェアがあるのでインストール方法は各自確認すること。ここでは、macOSでの利用方法を示すが、確認している限りは、Linuxでもほとんど同じ。ここでは非常に簡単にParaviewの使い方を説明する。詳しくはParaviewの公式マニュアルなどを読むこと。
まず右上のファイルアイコンをクリック
Pythonで生成したファイルを選択。2次元, 3次元ファイルどちらも選択する。一個一個選択しても良いし、一度に選択しても良い。時系列データの時は、すべてを一度に選択するとアニメーションを作りやすい。
Applyをクリック。選択した二つのデータが表示される。
2次元データの方は、すぐに面として表示されるが、三次元データは表示方法を選ぶ必要がある。
三次元データのボリュームレンダリングが行いたいので、Volumeを選ぶ。
三次元データのボリュームレンダリングが表示されるので、便宜描画を回転させるなどして、解析する。
最終更新日:2024年04月05日