Sample Scripts from GB Books
ラプラス方程式、ポアッソン方程式

ポアッソン方程式はラプラス方程式に似てはいますが、右辺が0ではなく関数となる点が異なります。

  

(5)

ポアッソン方程式の厳密解を求めることは一般的に困難ですが、解を想定した上でそれに対応したPDEを導くことは簡単に行えます。例えば

  

(6)

という解を想定した場合、第1項の 2*x*y は調和関数(ラプラス方程式を満たす関数)ですから、ラプラシアンは0となります。従って数式(5)の f(x, y) に寄与するのは第2項の (x^3 + 2*y^2) の部分のみということになります。従って解(6)が満足するポアッソン方程式は次のようになります。

  

(7)

このPDEをFlexPDEで解いた結果がどの程度厳密解(6)に一致するかを検証してみます。解析対象のドメインは正方形領域とし、境界上では関数(6)の値をValue文で与えるものとします。

1. Problem descriptor [ laplace01f.pde ]

  TITLE
    'Poisson Equation'        { laplace01f.pde }


  SELECT
    Errlim = 1e-3             { Requested relative accuracy }

  VARIABLES
    U                         { Unknown }

  DEFINITIONS
    Lx = 1  Ly = 1
    U_ex = 2*x*y + (x^3 + 2*y^2)  { Exact solution }

  EQUATIONS
    div(grad(U)) = 6*x + 4        { Poisson PDE }

  BOUNDARIES
    Region 1                  { Set exact values on boundaries }
      Start(-Lx, -Ly)
      Value(U) = U_ex  Line to (Lx, -Ly)
                            to (Lx, Ly)
                            to (-Lx, Ly)
                            to Close

  PLOTS
    Grid(x, y)
    Contour(U)
    Surface(U)
    Contour(U_ex)
    Contour(U - U_ex)

  END

2. 実行結果

(1) Grid(x, y)
設定した演算精度が 1e-3 とこれまでのものに比べると低いため、自動生成されたメッシュ構成も特に複雑なものとはなっていません。

(2) Contour(U)
ドメイン上での関数 U(x, y) の等高線図は次のようになります。

(3) Surface(U)
関数 U(x, y) の曲面の形状をプロットしたものを示しておきます。

(4) Contour(U_ex)
厳密解の等高線図ですが、見た目は Contour(U) と全く変わらないため省略します。

(5) Contour(U - U_ex)
これはFlexPDEの計算結果と理論曲面との差をプロットしたものです。スケールは E-4 (= 10^(-4)) ということで、SELECTセクションで設定した誤差許容値の範囲におさまっていることがわかります。

前へ       Topへ

page_top_icon