One Dimensional Finite Element Method
Calculus of Variations-12

最初の条件は、Galerkin method を使っていれば、自動的に満足します。ところが、 2番目の条件を満足させるためには、重み関数(δy(x))を新たに作る必要があります。重み関数を作る条件が1つ増えるので、Galerkin method による重み関数よりも1つ次数が高くなります。

例えば、下図の上段に示す様に、線形要素で領域を3分割し、Galerkin 法で重み関数を作ると、dδy/dx は x=L でゼロになりませんね。ゼロにしろというのが、無理な話ですね。

Galerkin法
重み関数にN2=ξを使っている。
非Galerkin法
重み関数をN2(ξ)=ξ(2-ξ) で表している。
節点4で微分がゼロになっている。

上図の上段が、Galerkin 法による、節点4での重み関数のφ4 です。そして、下段が、dδy/dx が x=L でゼロになっている重み関数φ4です。この場合、形状関数は、N2(ξ)=ξ(2-ξ) になります。

現時点では、2番目の条件を満足させた解析ソフトは、無いと思います。それでも、解析は、十分良い精度を出しているので、2番目の条件は、必要条件ではなさそうです。

上の図で、非Galerkin法となっている理由は、u(x)の近似に線形要素を使い、そして、一番右の要素の重み関数に、線形以外の関数を使っているからですよね。早速、上の図にある形状関数で計算してみましょう。まず、形状関数は、下表の様になります。貴方も確認してみて下さいね。

関数名 Neumann B.C. が要素1
(上流)にある場合の式
Neumann B.C. が要素n
(下流)にある場合の式
N1 1-ξ2 -2ξ+ξ2+1
N2 ξ2 2ξ-ξ2

上の形状関数をグラフにすると、下の様になります。左が要素1(上流)、右が要素n(下流)にNeumann B.C.がある場合です。

これらの形状関数を使って、プログラムを書いてみました。まず、非Galerkin法で試してみましたが、精度の向上は、みられませんでした。そこで、Neumann B.C.が設定される要素を上の形状関数で近似するGalerkin法でプログラムしてみました。すると、かなり良い結果が得られました。

BACK NEXT
Menu View Helm wrm Lin Element Rmrk Vari Para Non-L Wire