2010-09-06

ParaViewで可視化

2011-12-15追記:

なぜか「ParaView 可視化」でググったらこのエントリが3番目に表示される謎。中身ほとんどないのでググって来た人はそっとタブを閉じて次以降の検索結果見た方が幸せになれるよ。

そういえば ParaView の日本語の本も買ったんだけどまぁ予想通り自分には意味ない感じだった。素直に英語の wiki とかマニュアル読んだ方がいい。
----


データ形式について
Plot3D は読めるが、xyz と q のみで、function に対応してない(追記:そうでもないかも?)ので使い勝手が悪い。Tecplot は読めないいつからか読めるようになっていた (2014-05-27)。標準の VTK classic (Legacy VTK?) 形式で作るのが楽そう(書き方は→ http://visitusers.org/index.php?title=ASCII_VTK_Files ←ParaViewのライバルであるVisItのwikiだったw)。

やってみた。



流れが左から当たっていて、渦度の画面に垂直な軸成分を表示している(って言われなくてもわかる人しかこの記事読んでないだろうけど)。似たような条件について FIELDVIEW で作ったのは→ http://twitpic.com/2jc680

アニメの作り方
単に時系列に連番のファイルを用意するだけ。
  • data000.vtk
  • data001.vtk
  • ...
と用意してやれば、ParaView で開こうとしたときに「data..vtk」という連番ファイルとして自動認識してくれる。あとは適当に見た目を調節して(後で書く予定)、File > Save Animation でOK.

VTKファイル出力用Fortran 90ソース

  !! ファイルの出力
  write(filename,"('data',1i3.3,'.vtk')") n_file !! 出力ファイル番号をファイル名に書き込む
  open(200,file=filename,status="unknown",form="formatted",position="rewind")
  
    write(200,"('# vtk DataFile Version 3.0')")
    write(200,"('2D flow')")
    write(200,"('ASCII ')")
    
    write(200,"('DATASET STRUCTURED_GRID')")
    write(200,"('DIMENSIONS ',3(1x,i3))") im, jm, 1
    
    write(200,"('POINTS ',i9,' float')") im*jm
    do j=1,jm
    do i=1,im
      write(200,"(3(f9.4,1x))") x_plt(i), y_plt(j), 0.0d0
    enddo
    enddo
    
    write(200,"('POINT_DATA ',i9)") im*jm
    
    !! velocity vector
    write(200,"('VECTORS velocity float')")
    do j=1,jm
    do i=1,im
      write(200,"(3(f9.4,1x))") u_plt(i,j), v_plt(i,j), 0.0d0
    enddo
    enddo
    
    !! pressure
    write(200,"('SCALARS pressure float')")
    write(200,"('LOOKUP_TABLE default')")
    do j=1,jm
    do i=1,im
      write(200,"(f9.4)") p(i,j)
    enddo
    enddo
    
    !! z_vorticity
    write(200,"('SCALARS z_vorticity float')")
    write(200,"('LOOKUP_TABLE default')")
    do j=1,jm
    do i=1,im
      write(200,"(f9.4)") z_vorticity(i,j)
    enddo
    enddo
    
  close(200)


いろいろ適当だけど気にスンナ。do ループが外側から i, j でなく j, i の順になっているのは、i と j の数が違うときに初めて気づいたがこうやらないとグリッドがぐちゃぐちゃになる=vtkのグリッド認識がこの順なので。

No comments: