菊地 [1] に載っている Poisson 方程式の例題
| (2) | |
| (3) | |
| (4) | |
次のようなプログラムで解ける。
| Poisson2.edp |
// Poisson2.edp
int Gamma1=1, Gamma2=2;
border Gamma10(t=0,1) { x=0; y=1-t; label=Gamma1; }
border Gamma11(t=0,1) { x=t; y=0; label=Gamma1; }
border Gamma20(t=0,1) { x=1; y=t; label=Gamma2; }
border Gamma21(t=0,1) { x=1-t; y=1; label=Gamma2; }
int m=10;
mesh Th = buildmesh(Gamma10(m)+Gamma11(m)+Gamma20(m)+Gamma21(m));
plot(Th, wait=1,ps="Th.eps");
savemesh(Th,"Th.msh"); // optional
fespace Vh(Th,P1);
Vh u,v;
func f=1;
func g1=0;
func g2=0;
solve Poisson(u,v) =
int2d(Th)(dx(u)*dx(v)+dy(u)*dy(v))
-int2d(Th)(f*v)
-int1d(Th,Gamma2)(g2*v)
+on(Gamma1,u=g1); // on(Gamma10,Gamma11,u=g1)
plot(u,ps="contour.eps");
|
§2.2 のサンプル・プログラムを叩き台にする。
プログラムで生成される、三角形要素分割のデータを出力できるが、 それは次のようなものである (しばしば、数値実験の三角形要素分割を、 FreeFem++ の出力を拝借している研究者がいる)。
9 8 8 0 0 1 0 1 2 0 0.5 1 0.5 0 1 1 0 2 0.499999999488 0.499999999488 0 0.5 1 2 1 0.5 2 1 1 2 7 8 9 0 1 4 3 0 4 5 8 0 6 8 7 0 4 6 3 0 4 8 6 0 2 3 7 0 7 3 6 0 9 7 2 7 2 2 5 8 2 8 9 2 1 4 1 4 5 1 2 3 1 3 1 1 |
マニュアルで確認していないが、 多分次のようなフォーマットになっているのであろう。
|
総節点数 節点 節点 要素 要素 要素 境界に属する辺 境界に属する辺 |