One Dimensional Finite Element Method
Non-Linear Helmholtz Equation-2

■計算例の諸条件■
ここでは、前に紹介した左右対称の計算例の条件を使うことにします。解析精度を上げるために、領域を20の線形要素で分割しました。入力データは、file名 BUCKLE.DAT にあります。

■Program BUCKLE1B.FOR
上のプログラム名をクリックすると、ソースコードが表示されます。このプログラムは、BUCKLE1A.FORをベースにして、非線形解析ができる様に改良しました。追加および改良した Subroutine 名とそれらの役目を下に表示しますので、ソースコードを見ながらロジックを確認して下さい。プログラムBUCKLE1A.FORと重複する変数名の説明は、省きます。また、プログラム上で、微分方程式のY(x)に該当する変数名は、U ですので注意して下さいね。

Subroutine名引数Return
変数
役割/目的
INITIAL MXN
NNODE
RHS
U
X
IBTYPE
BV
U 境界条件を使って、荷重が無い場合の Beam の変形を計算します。計算結果は、U(I)に入ります。 この U(I) が最初の guess U(I) になります。
NEWU MXN
NNODE
RHS
U
UMAXERR
U
UMAXERR
この Subroutine が call された時点では、RHS(I)が最新のU(I)で、U(I)は、1つ昔のU(I)になっています。そして、最新のU(I)を次の guess U(I) にしています。さらに、絶対値のRHS(I)の最大値と、RHS(I)と古いU(I)との差の絶対値から、誤差(% error)を計算しています。変数名UMAXERRがそうです。
MATRIX U(追加) RHS
A
ここでは、古い U(I) を使って非線形部分を計算しています。計算方法の説明では、β(x) を使いましたが、プログラムでは、 ALPHA=(P/EI)(1+(du/dx)(du/dx))**1.5 としています。後は、線形のプログラムとまったく 同じでしね。

■計算結果■
計算結果を紹介しましょう。BUCKLE1B.FORを実行すると、2つのファイルが出力されます。SOLUTION.FEMITERATIN.FEMです。SOLUTION.FEMの出力項目は、線形の場合とまったく同じです。このファイルを覗くと、U(I)の最大値は、1.1544252804 になっていますね。線形の厳密解が 1.13949394 でしたから、非線形の解は、少々大きめな値になっていますね。微分方程式から、そうなるのが分かりますね。
ITERATIN.FEMは、繰り返し計算の収束状況を教えてくれます。繰り返し計算は、繰り返し数が80を超えた場合かまたは、誤差が 1*10のマイナス6乗より小さくなった時に終了します。これらの、control parameter 変数 は、MXITERA と ERRMAXです。

次のページでは、計算結果をグラフで紹介します。

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