14.1 有限要素空間の元 (変数) の内容の入出力

有限要素空間 Vh の変数 u に 記録されているデータをファイル (ファイル名を “u.dat” と する) に出力するには、
mesh Th;
...
fespace Vh(Th,何か);
Vh u;
...
savemesh(Th,"Th.msh");
ofstream f("u.dat");
...
f << u[];
とする。メッシュデータ Th も保存しておくことを忘れずに。

読むときは
mesh Th=readmesh("Th.msh");
fespace Vh(Th,何か);
Vh u;
ifstream f("output.dat");
f >> u[];
とすれば良い。


// 境界の定義 (単位円), いわゆる正の向き
border Gamma(t=0,2*pi) { x=cos(t); y=sin(t); }
// 三角形要素分割を生成 (境界を50に分割)
mesh Th = buildmesh(Gamma(50));
savemesh(Th,"poisson.msh");
plot(Th,wait=1,ps="poisson-mesh.eps");
// 有限要素空間は P1 (区分的1次多項式) 要素
fespace Vh(Th,P1);
Vh u,v;
// Poisson 方程式 -△u=f の右辺
func f = x*y;
// 現在時刻をメモ
real start = clock();
// 問題を解く
solve Poisson(u,v)
 = int2d(Th)(dx(u)*dx(v)+dy(u)*dy(v))-int2d(Th)(f*v)
   +on(Gamma,u=0);
// 可視化
plot(u,ps="poisson.eps");

ofstream f("poisson.dat");
f << u[];
// 計算時間を表示
cout << " CPU time= " << clock() - start << endl;

mesh Th=readmesh("poisson.msh");
fespace Vh(Th,P1);
Vh u;

ifstream f("poisson.dat");
f >> u[];

plot(u,ps="poisson2.eps");



桂田 祐史