« 節点反力を集約する方法 | トップページ | Salome-Meca 2012.2 »

2012年7月19日 (木)

時間ステップ幅の自動調整機能

非線形解析では、荷重や変位を細かく分割して徐々に与えていきます。通常は等分割で与えていくのですが、解析の過程の一部に非線形性が強いところがあると、その部分に合わせて全体の分割を細かくすることになってしまいます。分割が粗すぎると、そこで計算が収束せず停止してしまいます。長い計算の最後のほうで収束せずに停止してしまうと、ガッカリです。

そこで役に立つのが、時間ステップ幅の自動調整機能です。

これは、初期の時間ステップ幅で計算していて、計算が規定のイテレーション回数で収束しなかったり、剛性マトリックスが異常になるなどのエラーが発生した場合、そこで計算を中止するのではなく、時間ステップ幅を細かくした上で、その時点から計算を再開してくれるというものです。

また逆に、計算の収束が良好な場合、時間ステップ幅を増やして効率を上げます。

この機能は非線形解析を得意とするFEM解析ソフトウェアにはおおむね備わっていますが、Code_Asterでも「DEFI_LIST_INST」によって実現できます。

今回、以前実施した「追従荷重(その2)」の例題をそのまま用いて、この時間ステップ幅の自動調整機能を追加してみました。

ソフトウェアは、DEXCS2011-Salome-A3(64)(SALOME6.3 + Code_Aster STA10.5)の利用です。

この問題の詳細については、「追従荷重(その2)」、および「追従荷重」をご参照ください。

Eficasによる変更点は、まず下図の通り、基本の時間ステップ幅を定義した「DEFI_LIST_REEL(pas)」の下に、「DEFI_LIST_INST(pas2)」を追加しました。

Auto011


「DEFI_LIST_INST」のオプション・パラメータはかなり多くあり、それら全てを把握するのは大変です。詳細はマニュアル

「u4.34.03.pdf」
http://www.code-aster.org/V2/doc/default/en/man_u/u4/u4.34.03.pdf

に書かれていますが、ここでは私の設定について上のEficas画面に沿って説明します。
---------------------------------------------

●DEFI_LIST
・METHODE
 AUTOにすると時間ステップ幅が自動計算されます。

・LIST_INST
 DEFI_LIST_REELで定義した、基本の時間ステップ幅を指定します。ここでは「pas」になります。これが初期値になります。今回は1秒間を20分割しているので、0.05になります。

・PAS_MINI
 許容される最小の時間ステップ幅です。これを下回ると計算が停止します。

・PAS_MAXI
 許容される最大の時間ステップ幅です。これを上回ると計算が停止します。余裕を見た大きな値にしておくほうが良いと思います。

・NB_PAS_MAXI
 許容される最大のステップ数です。デフォルト値はかなり多いので、これに引っかかることはあまり無いと思います。

●ECHEC (時間ステップを細かくする)

・EVENEMENT
 ERREURにすると、イテレーション回数オーバーや、マトリックスSingularなどの場合に適用されます。

・SUBD_PAS
 適用された場合、現在値の時間ステップ幅を何分割するかを指定します。
 デフォルトは4で、今回はそのままです。

・SUBD_PAS_MINI
 時間ステップ幅が分割される際の、最小値を指定します。
 デフォルトは0なので、無制限に分割されてしまいます。なんらかの小さな値を入れるほうが良いと思います。なお、上記のPAS_MINIとの違いなのですが、マニュアルによるとPAS_MINIは新しい時間ステップに入るときのみ適用されて、SUBD_PAS_MINIは「under-sapnning」のときにも適用される(?)とあるのですが、いまひとつ良く分かりません。とりあえず、両者とも0.0001にしておきました。

・SUBD_METHODE
分割の方法ですが、デフォルトのUNIFORMEのままです。おそらく「等分割(?)」でしょうか。

その他にも、「SUBD_COEF_PAS_1(デフォルト=1)」などのパラメータもありますが、これも良く分かりません。

●ADAPTATION (時間ステップを粗くする)
・EVENEMENT
 適用を判断する方法を指定するようですが、よく分からないので、これもデフォルトのSEUIL(閾値)のままです。

・NB_INCR_SEUIL: 2
・NOM_PARA: NB_ITER_NEWTON
・CRIT_COMP: LE
・VALE_I: 5

以上の組み合わせで、「ニュートン法のイテレーション回数が 5以下(LE)」のステップ(インクリメント)が、「2回続いたとき」に適用される、という条件になるようです。

・PCENT_AUGM
条件が適用されたとき、現在の時間ステップ幅を何パーセント増やすかという設定です。デフォルトの100(パーセント)のままにしていますので、条件が適用された場合には、時間ステップ幅は2倍になるということです。

---------------------------------------------

以上のように「DEFI_LIST_INST」を設定し、「pas2」という名前にしました。

それからこのpas2を、「STAT_NON_LINE」の「INCREMENT」-「LIST_INST」に設定しました。

Auto012

なお、結果出力の分割数設定(DEFI_LIST_REELの“output”)は20分割にしており、これを「ARCHIVAGE」に設定しています。時間ステップ幅が自動で変わることにより、出力分割数との不整合が心配されたのですが、時間ステップ幅が自動で変化しても、初期設定の分割点(DEFI_LIST_REEL(pas)で指定した初期の分割時点)では、必ず計算をしてくれるようです。
つまり今回の時間ステップ幅の初期値が20分割なので、0秒~1秒の間の0.05秒刻みの点では、必ず計算が入ります。なので、出力分割も20分割のままでOKです。出力分割については、時間ステップ幅の初期値に整合させておけば良いようです。

さて、計算結果ですが、.mess ファイルを見たところ、計算の最初の時点で早速時間ステップ幅の分割が起こったようです。

Auto013_2


初期値が0.05なので、0.05秒で計算していたところ、エラーが起こりました。文字化けしていますが、マトリックスの問題でしょうか。イテレーション回数のオーバーではないようです。
とにかくエラーなので分割が起こり、4分割の0.0125秒にて再計算され、収束しています。

追従荷重(その2)」では、均等に80分割の時間ステップ幅まで細かくしないと計算が停止していましたので、今回の初期値(20分割・0.05秒)では収束しないことは分かります。

その後も、時間ステップを調整しながら計算が進み、結局、74インクリメント・約99秒で計算完了しました。元の80等分割のケースでは、80インクリメント・約80秒だったので、計算時間は長くなっています。

元々、この問題は非線形性の変化が少なく、自動ステップの例題としては適切でなかったかもしれません。しかし、分割数を設定するための試行錯誤をしなくても済むので、トータルでは効率的と思います。なにより、途中で計算が止まる「ガッカリ感」がありません。
また、接触や摩擦を含むケースなど、計算過程の一部で非線形性が強くなる問題では、より有用だと思います。

「DEFI_LIST_INST」については、今回の事例以外にも様々な設定項目があります。問題に応じて細かく詰めていくことが出来そうです。

今回のメッシュファイル(mmed)とcommファイルは下記です。

auto01.zip

« 節点反力を集約する方法 | トップページ | Salome-Meca 2012.2 »

条件設定」カテゴリの記事

コメント

コメントを書く

(ウェブ上には掲載しません)

トラックバック

この記事のトラックバックURL:
http://app.f.cocolog-nifty.com/t/trackback/1605696/46387481

この記事へのトラックバック一覧です: 時間ステップ幅の自動調整機能:

« 節点反力を集約する方法 | トップページ | Salome-Meca 2012.2 »