メインコンテンツに移動

ParaView

ParaViewは, 科学技術各方面で利用されるデータ可視化ソフトです. 詳細はここにガッツリ書いてあるので,ここではさわりだけね.

インストールはこちらから

ファイル形式

ParaViewはさまざまなデータ形式を読み込むことができます.が,まあ正式はVTKデータというものです.

の説明がリンク先に書いてあります.ま,初めてなんでLEGACY-VTKでいきましょう.XML-VTKは, もう少しC++に慣れてからの方が良いのでは?

とりあえず初めてということで,一番単純なのでいきましょう. main()で時々データを保存するように計画:

jacobi Solver(101,"jacobi_100.dat");
double e=1.0;
int n=0;
while ((e=Solver.step())>1e-10)
{
  if (++n%100==0)
  {
    std::cout << "Step:Diff= " << n << " " << e << std::endl;
    Solver.vtk(n);
  }
}

となると, jacobi.vtk(n)の仕様が確定したわけですね:

  • 与えられた n でファイル名を作成する. 例えば data_0001200.vtk とか,そういう連番がつくようにする
  • そのファイルに,現在のデータを書き出す

では実装:

#include <sstream>
...
void vtk(int nstep)
{
  //ファイル名を作成
  std::ostringstream oss;
  oss << "vtk_" <<  std::setfill('0') << std::right << std::setw(6) << nstep << ".vtk";
  //ファイルを作成
  std::ofstream vout(oss.str());
  vout << "# vtk DataFile Version 2.0" << std::endl << "ひゃっほう" << std::endl << "ASCII" << std::endl;
  //VTKファイルを書き出す.書き方は素人感満載のLEGACY-VTKファイルを参照
  //Geometry指定
  vout << "DATASET STRUCTURED_POINTS" << std::endl;
  vout << "DIMENSIONS " << U.size(0) << " " << U.size(1) << " " << 1 << std::endl;
  vout << "ORIGIN 0 0 0" << std::endl;
  vout << "SPACING " << 1.0/(U.size(0)-1) << " " << 1.0/(U.size(1)-1) << " " << 1.0 << std::endl;
  //DataSet指定
  vout << "POINT_DATA " << U.size(0)*U.size(1) << std::endl;
  vout << "SCALARS U double" << std::endl;
  vout << "LOOKUP_TABLE default" << std::endl;
  for(int j=0;j<U.size(1);j++) for(int i=0;i<U.size(0);i++) vout << U(i,j) <<std::endl;
}

これを実行すると, データフォルダーに

vtk_000100.vtk
vtk_000200.vtk
vtk_000300.vtk
...

という無数のファイルができるわけです.

ソフトウェアの使い方

ParaViewをインストールしたら,起動してファイルを読み込みます:

a

aa

まあ色々クリックして遊ぶと覚えます.クリックしない場合・・・絶対覚えられませんね.一度も転倒しないで自転車に乗れた人は,もしかしたら頭で覚えられるのかもしれませんが.

例えば【ファイル】【アニメーションの保存】を選ぶと,

res

aa

保存が完了したら,フォルダーに今度は my_video_0数字羅列.png が山盛りできているでしょう.これを連結してビデオにしてみましょう.

これは, FFMPEG が一番便利です.MacなのでiMovieも使えます.FFMPEGの場合は

ffmpeg -r 5 -i my_video.0%3d.png -pix_fmt yuv420p  out.mp4

ここが数字の桁数で違う場合があるかもですが・・・まあ,こんな感じでまずOK. これで動画ファイル out.mp4 ができます.

open out.mp4

で,動画ファイルが開きます:

trim

適当にトリムして保存してしまえばOKってわけです.