« 異なる「DEFORMATION」設定の混在 | トップページ | ゴム(超弾性)の物性値を同定する方法 »

2012年8月 7日 (火)

計算途中にエラーで止まってしまった非線形解析の結果を見る方法

先日実施した「ゴムと金属の接触・摩擦解析(平面ひずみ)」を題材にして、多数ステップの非線形解析で計算途中にエラーで止まってしまったJOBについて、計算が出来ているところまでの結果を見る方法について考えます。

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

ステップ数が多く時間がかかる非線形解析をする場合、最終インクリメント(最終ステップ)までもう少しという所で計算が止まってしまい、ガッカリすることが良くあります。そのような時は、なぜそこから先に計算が進まないのか、変形や応力の様子を見て検証したいものです。しかし、Code_Asterで普通に計算していると、「STAT_NON_LINE(非線形静解析)」でエラーになった場合、その時点でJOBが止まってしまうので、その下の結果出力の部分を実行してくれず、結果が出力されません。

計算が出来ている所までの結果を出すのに、一番真っ当な方法は、ASTKで「.base」フォルダを指定して、そこに計算結果のデータが保存されるようにしておいて、計算が完了するかエラーで止まったら、その「.base」フォルダからデータを読んで結果を出力するJOBを新たに実行することだと思います。
(むしろ、本来は計算JOBと結果出力JOBを分けるべきなのかな? と思います)。

その結果出力用のJOBのコマンドファイルは、「POURSUITE();」で始まり、結果出力する部分のみを記述します。

この方法については、「Open CAE Users Wiki」-「オープンCAE初心者勉強会」-「 SALOME-Mecaの活用技術:MK2氏提供」に、「ポスト処理 MECA_STATIQUEの場合の一例 資料:Post_Lin_ver10.pdf 」として情報公開して頂いております(これは線形解析の例ですが、非線形解析でも同じです)。大変分かりやすく説明されているので、私がここで解説するよりは、こちらの資料をお読み頂いたほうが良いかと思います。

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

さて、ここまでが前置きで、今回は同じ事を別の方法で行ってみました。

公開されている公式フォーラムをさっと検索するだけで、下記のような情報見つかりました。

http://www.code-aster.org/forum2/viewtopic.php?id=12992

http://www.code-aster.org/forum2/viewtopic.php?id=13650

http://www.code-aster.org/forum2/viewtopic.php?id=14104

同じようなことを考える人が結構多くいるようです。

Pythonを使うようで、必要に応じて色々な記述が出来るようですが、下記の通りにするのがもっともシンプルなようです(題材は上述の通り、先日実施した「ゴムと金属の接触・摩擦解析(平面ひずみ)」です)。

(1)DEBUTにPAR_LOT='NON'を設定する(Eficasで設定できます)。
(2)STAT_NON_LINEを、下記のような記述で挟む。Eficasでは編集できないので、Eficasからcommファイルの出力後に、テキストエディタ等で編集する。

Wedge0201_2

ここで重要なのは、「RESU=・・・」の前と、「pass」の前にそれぞれインデント(字下げ)が必要なことです。これはPythonの文法によるものと思います。Eficasから出力された時点では、「RESU=・・・」の前にはインデントは無いので、注意が必要です。

元の題材は最終ステップまで正常に計算できる設定になっていましたので、ここでゴムの押し込み量を元の「-1.6mm」から「-3.0mm」に変更して、わざと途中で計算が止まるようにしました(自動ステップ調整機能があっても、最も細かい時間幅まで分割が到達して、そこで止まります)。

Wedge0202

これで計算した結果の動画です。

最終収束ステップの画像です。

Wedge0203

要素がつぶれてしまっています。収束したとはいえ、このような状態になってしまっては、それ以上先のステップへは進めないことが分かります(進む意味もありません)。

このような方法で、エラーで止まっても、途中までの結果を出力することが出来ました。

この方法の難点は、「try: ・・・ pass」の記述をEficasで編集できないことです。Eficasでcommファイルを出力してから、テキストエディタで追加の編集をする必要があります。

更に面倒なことに、この記述を加えた後のcommファイルは、Eficasで読めません。「RESU=・・・」の前にインデントを入れたままEficasで読もうとしても、「余分なインデントがある」というエラーになって読めません。このインデントを無くして読んだとしても、再編集してcommを書き出すと、try:やexceptなどの記述が消えてしまいます。

そこで、この記述の部分を「コメント」にします。
追加の記述部分の行頭に「#」を入れてコメントアウトし、「RESU=・・・」の前のインデントを無くします。そうすると、Eficasで読めるようになります。

Wedge0204

Eficasで読むと下図の様になります。

Wedge0205


再度JOBを実行するときは、commを書き出した後、テキストエディタで「#」を取り去り、「RESU=・・・」の前にインデントを入れます。

以上です。

今回のメッシュファイル(mmed)とcommファイル(実行できる&Eficasで読めない)は下記です。
wedge02.zip

« 異なる「DEFORMATION」設定の混在 | トップページ | ゴム(超弾性)の物性値を同定する方法 »

ポスト処理」カテゴリの記事

コメント

コメントを書く

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

トラックバック

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

この記事へのトラックバック一覧です: 計算途中にエラーで止まってしまった非線形解析の結果を見る方法:

« 異なる「DEFORMATION」設定の混在 | トップページ | ゴム(超弾性)の物性値を同定する方法 »