最初の条件は、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 |