« 結果出力の間隔設定 | トップページ | 追従荷重(その2) »

2012年6月23日 (土)

追従荷重(Follower force)

追従荷重は、その荷重が作用している要素面の変形(回転)に追従して、荷重の向きも変化するタイプの荷重のことです。従動荷重ともいいます。
Code_Asterの荷重はデフォルトでは追従しないタイプになっていますが、これは、「STAT_NON_LINE」-「EXCIT」で、TYPE_CHARGEに"SUIV"を指定することで追従荷重にすることが出来ます。

以下に、私が試行した例を紹介します。
ソフトウェアは、DEXCS2011-Salome-A3(64)(SALOME6.3 + Code_Aster STA10.5)の利用です。

以前に実施した「超弾性材料の検証」のモデルをそのまま流用し、片持ち梁として曲げることにしました。モデルは幅2.5mm、長さ10mm、厚さ1mmのゴム平板で、1辺0.5mmの立方体で2次メッシュを作成しました。要素数は、5 x 20 x 2 = 200になります。

Folf0201


境界条件を与えるためのグループ名の作成ですが、流用したモデルにはX=0, Y=0, Z=0 の各面にそれぞれfixX, fixY, fixZという名前が既に付いていますので、このうちfixXの面を完全固定面とすることにしました。また、fixXの反対側の端面にはloadという名前が付いています。

また、荷重を与える面ですが、下図のように固定端(fixX)と反対側の端の平板上面に、1要素分の長さで「loadP」という面を作成しました。

Folf0202

最初は、固定端と反対側の端面(「load」面)に、「FORCE_FACE(面荷重)」で下向き(Z方向のマイナス向き)に荷重を与えて曲げようとしていました。これは、通常荷重では上手くいったのですが、追従荷重にすると下記エラーが出て計算できませんでした。

La charge definie dans STAT_NON_LINE en tant que une charge de type suiveuse,
sous le mot-cl? TYPE_CHARGE = 'SUIV' n'est pas une Charge SUIVEUSE.

「FORCE_FACE」は追従荷重に対応していないのかもしれませんので、その代わりに「PRES_REP(圧力)」を用いることにしました。そのため、平板の上面端にこのようなグループが必要になった訳です。

これまでグループはジオメトリに依存したものばかり作成してきましたが、今回は要素面をグループ化して名前をつけることになります。これは下図のように、メニューから「Mesh」-「Create Group」でMeshとNameを指定し、Elements typeをFace、Group typeをStandalone groupにして、該当する5つの要素面を選択します。複数選択は、シフトキーを押しながら各面を順にクリックしていくことで出来ます。選択し終えたら、Contntで「ADD」を押し、「Apply and Close」でグループが作成出来ます。

Folf0203

Eficasによるcommファイルの編集ですが、これも「超弾性材料の検証」のcommファイルを修正して作成していきました。

DEFI_MATERIAUですが、C10=0.66666, C01=0.16666, NU=0.499にしています。「超弾性材料の検証」より硬めの材料に変更しました。

Folf0204


境界条件は、fixX面をFACE_IMPOで完全拘束(DX=0, DY=0, DZ=0)。
loadP面にPRES_REPで0.05の圧力を与えました。
解析時間はtime=0~1とし、計算の時間刻み(DEFI_LIST_REELの"pas")は2000分割としました。

Folf0205


計算の刻み幅が細かすぎると思うのですが、後述する通り収束の許容値をかなり緩くしても、2000分割まで細かくしないと収束してくれませんでした。引張りでは50分割程度で済んだのですが、曲げになると何故このように収束性が悪化するのか不明です。

刻み幅が細かすぎるため、結果出力は100ステップ毎(つまり20分割)にしています。これは、DEFI_LIST_REELの"output"で指定しています。
(出力間隔のコントロールは前回の記事にて説明しています。)

今回のポイントである追従荷重の指定ですが、下図のとおり、、「STAT_NON_LINE」-「EXCIT」で、該当する荷重に「TYPE_CHARGE "SUIV"」を追加します。
これは、Code_Asterのマニュアル「U4.51.03」(3.2.3節)で解説されています。

Folf0206

計算の収束許容値ですが、残差力の相対値での判定ではなかなか収束しなかったので、残差力の絶対値(REGI_GLOB_MAXI)で、0.001という値にしました。これはかなり緩い値なのですが、それでも収束しにくく、試行には苦労しました。

結果出力は、各RESUのb_extracの下に「LIST_INST output」を指定し、出力を20分割としました。それ以外は特に変えていません。

Folf0207

さて、計算結果ですが、まず追従荷重の変形図です。

Folf0208

圧力がゴム板の変形に追従するため、曲がり角度が90度を超えて、荷重面が下向きになっていることが分かります。

次に、「TYPE_CHARGE "SUIV"」 を消去して、同じ大きさの通常荷重にした場合の結果です。

Folf0209

荷重面が上向きのままです。
このように、追従荷重の効果が確認できました。

変形の動画です(追従荷重のみ)

今回のcommファイルと、mmedファイル(メッシュファイル)は下記です。追従荷重のみです。

folf02.zip

なお、今回は2000ステップもの細かい時間刻みで計算したため、六面体2次要素がわずか200要素だけにもかかわらず、20分ぐらいの計算時間がかかってしまいました。実際は試行錯誤で何度か計算し直したので、かなりの時間を費やしました。商用ソフトではあまり何も考えなくても、デフォルトの設定で同様の計算が20ステップ、約40秒で出来ます。

ここまでCode_Asterで接触、摩擦、塑性、超弾性等などの非線形解析を試してみての感想としては、「収束しにくい!」ということです。まだ検証していない設定項目が色々あるので、それらを問題に応じて詰めていく必要がありそうです。

« 結果出力の間隔設定 | トップページ | 追従荷重(その2) »

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

超弾性」カテゴリの記事

コメント

TYPE_CHARGE "SUIV"については私も知りませんでしたので、勉強になります。

商用ソフトに比べると収束しにくいというのは、オープンソースソフトの宿命なのでしょうね。
デフォルトよりも収束性を良くする設定してみましたが、80ステップ、130秒が私には限界でした。

下のように、STAT_NON_LINEで、NEWTON=_F(REAC_ITER=1,)を追加して、SOLVEUR > METHODE='MUMPS'に変更してみました。
STA10.5ではMUMPSが使えたかどうか忘れましたが、ソルバーはMUMPSのほうがデフォルトのものより、計算時間も短くてメモリー使用量も小さいです。


RESU=STAT_NON_LINE(MODELE=MODE,
CHAM_MATER=MATE,
EXCIT=(_F(CHARGE=CHAR,),
_F(CHARGE=chr_no,
FONC_MULT=depl_imp,
TYPE_CHARGE='SUIV',),),
COMP_INCR=_F(RELATION='ELAS_HYPER',
DEFORMATION='GROT_GDEP',
ITER_INTE_MAXI=300,),
INCREMENT=_F(LIST_INST=pas,),
NEWTON=_F(REAC_ITER=1,),
CONVERGENCE=_F(RESI_GLOB_MAXI=0.001,
ITER_GLOB_MAXI=300,),
SOLVEUR=_F(METHODE='MUMPS',
PCENT_PIVOT=20,
OUT_OF_CORE='OUI',),);

MAEDA さん、こんにちは。

なんと、80ステップまで短縮できましたか。さすがですね。
なるほど、ソルバー種類や、ニュートン法の各種設定に関しても詰める必要がありますね。
英文マニュアルは苦手なのですが、ぼちぼち読んでいくことにします。
ありがとうございました。

コメントを書く

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

トラックバック

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

この記事へのトラックバック一覧です: 追従荷重(Follower force):

« 結果出力の間隔設定 | トップページ | 追従荷重(その2) »