STAT_NON_LINEで座屈解析

未分類
sponsored

Code Asterでは非線形解析コマンドのSTAT_NON_LINEでも座屈解析を行うことができます。

  • STAT_NON_LINEで座屈解析
  • 座屈発生時の座屈モードの取り出し
  • 初期ひずみを与えて解析した線形座屈解析との比較

1.解析モデル

Meshはこんな感じです。

要素は他のアプリと合わせるためDKTを使いました。

model2 = AFFE_MODELE(AFFE=_F(GROUP_MA=('web', 'top'),
MODELISATION=('DKT', ),
PHENOMENE='MECANIQUE'),
MAILLAGE=mesh2)

STAT_NON_LINEのループは、CRIT_STABの判定結果によってループを抜けるようにしています。

ii = 1
FLAG = True

while FLAG:
    resu = STAT_NON_LINE(reuse = resu,
        MODELE=model2,
        CHAM_MATER=fieldma2,
        CARA_ELEM=carac2,
        CONVERGENCE=_F(ITER_GLOB_ELAS=25,ITER_GLOB_MAXI=20),
        CRIT_STAB=_F(CHAR_CRIT=(-1., 0.), ),
        EXCIT=(_F(CHARGE=clim2,TYPE_CHARGE='FIXE_CSTE'),
               _F(CHARGE=charge_2,FONC_MULT=func)),
        COMPORTEMENT=_F(RELATION='ELAS',DEFORMATION='PETIT', ),
        INCREMENT=_F(LIST_INST=list0, NUME_INST_INIT=ii, NUME_INST_FIN=ii+1),
        ETAT_INIT=_F( EVOL_NOLI = resu),
        METHODE='NEWTON',
        NEWTON=_F(MATRICE='TANGENTE',REAC_INCR=1,REAC_ITER=10)
    )

    ccc = resu.LIST_CHAMPS()['MODE_FLAMB']
    if len(ccc) > 0: FLAG=False
    if ii >= nlimit:
        FLAG=False
    else:
        ii = ii+1

としています。座屈発生時の変形を取り出して、モデルを修正するところは次の様になっています。

aaa = resu.LIST_VARI_ACCES()['INST']
print aaa
bbb = resu.LIST_CHAMPS()['DEPL']
print bbb
print ccc

defo =CREA_CHAMP(TYPE_CHAM='NOEU_DEPL_R',OPERATION='EXTR',
RESULTAT=resu,NOM_CHAM='DEPL',INST= aaa[ccc[0]],);

mesh2 =MODI_MAILLAGE(reuse =mesh2,
MAILLAGE=mesh2,DEFORME=_F(OPTION='TRAN',DEPL=defo,),);

resuSI = CREA_CHAMP(NOM_CHAM='SIEF_ELGA',
OPERATION='EXTR',RESULTAT=resu,INST= aaa[ccc[0]],TYPE_CHAM='ELGA_SIEF_R')

Smesh = CALC_MATR_ELEM(CARA_ELEM=carac2,
CHAM_MATER=fieldma2,CHARGE=(clim2, charge_2),MODELE=model2,OPTION='RIGI_MECA')

commファイルはこちら

2.解析結果

変形は300倍で表示してあります。取り出した座屈モードはこんな感じ。

そして、座屈発生時の変形(と応力も?)を初期状態として線形座屈解析を行った結果がこちら。

同じような結果となりました。(当たり前か・・・・)

3.他のアプリによる結果

ADINAの場合

変形は、XとY方向成分を300倍程度に拡大しています。

Optstructの場合

Optstructの場合、0.22ステップを超えても計算が停止しませんでした。設定が悪かったのかもしれません。

以上です。

コメント

タイトルとURLをコピーしました