■計算例の諸条件■
ここでは前に紹介した左右対称の計算例の条件を使うことにします。
解析精度を上げるために領域を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.FEMと
ITERATIN.FEMです。
SOLUTION.FEMの出力項目は線形の場合とまったく同じです。
このファイルを覗くと U(I) の最大値は 1.1544252804 になっていますね。
線形の厳密解が 1.13949394 でしたから非線形の解は少々大きめな値になっていますね。
微分方程式からそうなるのが分かりますね。
次のページでは計算結果をグラフで紹介します。