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
Internet College of Finite Element Method