(0,1)$に定義されたPoisson方程式の境界値問題を考えます。H^1_0(\Omega)$をかけて、積分すると、以下の変分式が得られます。$$有限要素法は領域のメッシュ分割を用いて立てられる有限次元の関数空間$V^h$(有限要素空間という)で上記の変分式を解いています。$$関数空間$V^h$の作り方については、基本的に区分的な多項式が成すベクトル空間です。メッシュ分割の形、多項式の次数と関数の連続性の設定によって、多くのバリエーションがあります。領域を三角メッシュに分割する三角メッシュの上に定義される区分的な1次多項式であり、全体としては連続である。space)と呼ばれます。利用してPoisson方程式の近似解を解いています。実際の計算には、$f=2x(1-x)+2y(1-y)$を使っています。準備(パッケージの導入)¶DOLFINのパッケージを導入します。(DOLFINはFEniCSプロジェクトの核部分であり、数行のコードで有限要素法計算ができます。メッシュ分割と有限要素空間の設定¶まず、メッシュ分割を行います。関数空間$V$を作ります。空間$V$は区分一次連続関数によって構成される線形関数空間です。1)関数boundaryで指定される境界でDirichlet境界値条件の設定を行います。有限要素法は関数空間$V$の中で以下の変分式を解きます。V$$以下のコードは変分式の両辺の内積を計算します。変分式はa=bを解いて、有限要素解が得られます。計算の結果はfem_uに格納されます。有限要素解の色マップを描画します。分割の各点での値を再計算することが必要です。fem_uのベクトルの自由度の順番とmeshの節点リストの順番は互いに独立であることを注意しなさい。以下は$(u-u_h)$の$L_2$ノルムと$H^1_0$ノルムを計算します。$(u-u_h)$のノルムを直接に計算できないので、誤差式の4次Lagrange有限要素空間への射影を使って、ノルムを計算します。0.030161上記のコードでは、厳密解の勾配をあらかじめ用意するのは必要です。FEniCSで厳密解の勾配を計算するために、厳密解を有限要素空間への射影または補間を利用して数値的に計算することができます。