16 菊地 [3] の Poisson 方程式の例題を解く

菊地 [3] に載っている Poisson 方程式の例題

(1) $\displaystyle -\Laplacian u=f$   $\displaystyle \mbox{in $\Omega$}$$\displaystyle ,$
(2) $\displaystyle u=g_1$   $\displaystyle \mbox{in $\Gamma_1$}$$\displaystyle ,$
(3) $\displaystyle \frac{\rd u}{\rd n}=g_2$   $\displaystyle \mbox{in $\Gamma_2$}$

(ただし、 $ \Omega=(0,1)\times(0,1)$ , $ \Gamma_1=\{0\}\times[0,1]\cup
[0,1]\times\{0\}$ , $ \Gamma_2=\{1\}\times(0,1]\cup(0,1]\times\{1\}$ , $ f=1$ , $ g_1=0$ , $ g_2=0$ ) を FreeFem++ を用いて解くとどうなるか。

kikuchi-poisson.edp

// kikuchi-poisson.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);
plot(u,ps="contour.eps");



Subsections
桂田 祐史
2018-01-17