29 ParaView を使ってみる (大変遅ればせながら)

(しばらく工事中)

ParaView というのは、ウィキペディアによると

ParaViewは科学技術可視化の並列化と対話操作のための、 自由に利用できるオープンソースプログラムである。
だそうである。目的だけから見ると昔だと AVS とか (これは高額商品だった)、 そういうのに近いのかしらん。

開発は Sandia National Laboratories, Kitware Inc, Los Alamos National Laboratory だそうである。アメリカの底力を感じる。

図 1: 最初に起動すると Welcome to ParaView という小さなウィンドウが出る
Image paraview-developments


FreeFem++ ユーザーにとってはとてもありがたい解説 大森 克史・山口 範和 「FreeFem++ と Paraview による非線形現象の可視化」 富山大学人間発達科学部紀要 第9巻第 1号:221-241(2014) がある。

以前、研究室の院生E君が流体シミュレーションの可視化に使っていたが、 私自身ではインストールしなかった (E君は何でも自分で出来た)。

今回、授業のレポートで使った学生がいたので、 結果の確認用に重い腰をあげてインストール。

まずは、WWW サイト ParaView - Open-source, multi-platform data analysis and visualization application に訪問する。 Download ParaView からファイルを入手する。

M1 Mac にインストールしようと思っていたので、 ParaView-5.11.0-MPI-OSX11.0-Python3.9-arm64.dmg を入手する。ダブルクリックでマウントすると、 アプリケーション・フォルダに移動するよう促されるので (よくある手順)、 それに従い、 アプリケーション・フォルダにある ParaView-5.11.0.app を起動する。

図 2: 最初に覚えるべきは Reset Session のボタンかもしれない
Image paraview-reset2

今回の目的は動画なので、大森・山口資料から熱方程式の例を。
Heat.edp

// Linear Heat eq.
load "iovtk"

int N=100;
real T=1.0;
real tau=T/N; // time step size

mesh Th=square(100,100);
fespace Uh(Th,P2);
Uh u,oldu,phi,f;

real d=0.1;
f=0;

problem Heateq(u,phi) =
  int2d(Th)(u*phi/tau+d*(dx(u)*dx(phi)+dy(u)*dy(phi)))
 -int2d(Th)(oldu*phi/tau)
 -int2d(Th)(f*phi)
 +on(1,2,3,4,u=0);

int n=0;
oldu=16*x*(1-x)*y*(1-y); // initial data
savevtk("Heat"+n+".vtk",Th,oldu,dataname = "Temperature");

for(n=1;n<=N;n++){
  Heateq; // Solve (3.4)
  savevtk("Heat"+n+".vtk",Th,u,dataname = "Temperature");
  oldu=u; // Reflesh st ates
}
(正方形領域における、熱方程式の初期値(同次Dirichlet)境界値問題を解いている。 短いプログラムだけど、真似してみようかな、と参考になるところがある。)


つまり、FreeFem++ のプログラムの中で
load "iovtk"
としておいて
savevtk(ファイル名文字列, メッシュ, u, dataname=名前);
のようにして出力する。 時間発展する系のデータのファイル名では、 いわゆる “連番ファイル名” にする。 上のプログラムは Heat0.vtk, Heat1.vtk, Heat2.vtk, $ \cdots$, Heat9.vtk, Heat10.vtk, $ \cdots$, Heat100.vtk というファイルを出力する。

ParaView で File→Open として、上のファイルを探しに行く。 Heat..vtk という名前の (ピリオドが2つ続いた ..vtk に注意)、 Type が Group の対象として表示される。 それを選択して \fbox{OK} ボタンをクリックする。

図: Heat..vtk を選択して、OK する
Image open-heat

(これ以降は、GUI のせいで、説明が粗くなっている。今後改善していくつもり。)

Pipeline Browser に Heat0.vtk が現れる。 Properties で \fbox{Apply} ボタンを押す。

図: Heat0.vtk を Apply する
Image paraview0

Coloring で Label を “Temparature” に変えて (上のプログラム中で dataname を Temparature に指定したことに注意)、 再生ボタン \fbox{Play} ボタンを押すとアニメーションが見える。

図: Play ボタンを押すとアニメーションが見える
Image paraview1

View → Animation View で、 Mode: を (Snap to TimeSteps から) Sequence に変更して、 No. of Frames を 101 にする (元々101個の画像ファイルがあった)。

図 6: Mode を Sequence に変える
Image paraview2
図 7: No. of Frames を 101 に変える
Image paraview3

File→ Save Animation を選択し、 File of Types を FFMPEG AVI files (*.avi) にして、 適当な File name を選んで \fbox{OK} する。 Save Animation Options で適当な Frame Rate を選択する。

図: Save Animation で Files of Types と File name を指定してOK
Image paraview4
図 9: Frame Rate はどうするのかな?とりあえず10にしてみるけど…
Image paraview5

101フレームあったので、Frame Rate を10にすると、 10秒の動画ファイル Heat.avi というのができる。


とりあえずレポート・チェックに必要なことは分かった。

桂田 祐史