有限要素空間 Vh の変数 u に 記録されているデータをファイル (ファイル名を “u.dat” と する) に出力するには、
mesh Th;
...
fespace Vh(Th,何か);
Vh u;
...
savemesh(Th,"Th.msh");
ofstream f("u.dat");
...
f << u[];
|
読むときは
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");
|