[2026-04-25]
FreeFEM から savevtk() で出力することで,*.vtk ファイルや *.vtu ファイルに書き出されたデータを ParaView で可視化することができる.
FreeFEM では出力するファイル名でそれぞれのフォーマットのデータを出力できる.
savevtk("XXX.vtk") -> legacy VTK フォーマット
savevtk("XXX.vtu") -> VTU フォーマット (XML)
スカラー a とベクトル b が出力される.
load "iovtk"
mesh3 Th = cube(1,1,1);
fespace Vh(Th,P1);
Vh g=x+y*y+z*z*z;
int[int] fforder=[1,1];
savevtk("test.vtk",Th,g,[g,g,g],order=fforder,dataname="a b");
※savevtk("test.vtu",...) とすれば VTU フォーマットで出力される.
PETSc などで並列計算した場合は,vtu フォーマットを指定することで,各MPIランクから出力されたファイルを簡単に組み合わせて読み込むことができる.
// vtu-test.edp
load "PETSc"
int[int] fforder = [1];
func Pk = [P2, P2];
macro dimension()3//
macro def(u)[u, u#B]//
include "macro_ddm.idp" // additional DDM functions
mesh3 Th = cube(5,5,5);
buildDmesh(Th)
fespace Vh(Th, Pk);
Vh def(u) = [cos(2*pi*x) * sin(2*pi*y) * cos(2*pi*z), cos(2*pi*z)];
savevtk("test_3d.vtu", Th, u, order = fforder);
$ ff-mpirun -np 4 vtu-test.edp
*.pvd - *.pvtu - *.vtu と 3 階層でファイルが出力される.
$ ls test*
test_3d_4.pvd test_3d_4_0000_0.vtu test_3d_4_0000_2.vtu
test_3d_4_0000.pvtu test_3d_4_0000_1.vtu test_3d_4_0000_3.vtu
Open "test_3d_4.pvd" で "test_3d_4_0000_[0-3],vtu" が全て読み込まれる
※同じ操作を繰り返す場合は,File -> Save state から XXX.py ファイルへ書き出しておき,末尾近くの SaveScreenshot() のコメントを外しファイル名を指定しておく.
# SaveScreenshot("path/to/screenshot.png")
ー>
SaveScreenshot("XXXX.png")
pvpython で実行すると,スクリーンショットが出力される.
$ pvpython XXX.py
並列計算した結果を mpirank=0 へ集め,一つの VTK ファイルとして出力する方法もある