2 後退Euler法のコードを読む

時間について$ \theta $法で差分近似した方程式は

$\displaystyle \frac{1}{\Delta t}\left(u^{n+1}-u^n\right) =\Laplacian u^{n+1}+f.$ (6)

これに対する弱形式は以下の通り。

$\displaystyle \left(u^{n+1},v\right) -\left(u^{n},v\right) +\Delta t\langle u^{n+1},v\rangle-\Delta t(f,v)-\Delta t[g_2,v]=0$   ($ v\in X$)$\displaystyle .$ (7)

(内積の定義: $ (u,v)=\dsp\int_\Omega u v\;\D x$, $ \langle u,v\rangle=\dsp\int_\Omega \nabla u\cdot\nabla v\;\D x$, $ \nabla u\cdot\nabla v=u_xv_x+u_yv_y$, $ [g_2,v]=\dsp\int_{\Gamma_2}g_2 v\;\D\sigma$, $ \D\sigma$ は線要素)

FreeFem++ で対応するコードは
heatB.edp 内の problem
problem heat(u,v,init=n)=
  int2d(Th)(u*v)-int2d(Th)(uold*v)
 +int2d(Th)(tau*(dx(u)*dx(v)+dy(u)*dy(v)))
 -int2d(Th)(tau*f*v)-int1d(Th,2,3)(tau*g2*v)
 +on(1,4,u=g1);
(ラベル $ 1$, $ 4$$ \Gamma_1$ を, ラベル $ 2$, $ 3$$ \Gamma_2$ を構成している。)

このコードが弱形式 (7) の実現であることは読み取ろう。


\begin{jremark}
FreeFem++ の文法は制限が強く、
自分で弱形式を...
...に入れてしまう、
という方針が良いだろう。 \qed
\end{jremark}



桂田 祐史