16.0.0.1

同じ問題を square() を使って解くプログラムを作成せよ (そうすると菊地先生の本と同じ三角形分割になる?)。

square でメッシュ分割したとき、下の辺、右の辺、 上の辺、左の辺に 1, 2, 3, 4 というラベルがつくことが大事なポイントである。

poisson-kikuchi-square.edp

// poisson-kikuchi-square.edp
int m=10;
mesh Th = square(m,m);
plot(Th, wait=1,ps="Th-square.eps");
savemesh(Th,"Th-square.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,2,3)(g2*v) // Gamma20,Gamma21
  +on(1,4,u=g1); // on(Gamma10,Gamma11,u=g1) 
plot(u,ps="contour.eps");

図 3: square() を用いたメッシュ分割
\includegraphics[width=10cm]{progs/Th-square.eps}

桂田 祐史
2018-01-17