板とブロックの接触(板とブロックをDKTで)

sponsored

モデルです。大まかな感じを示します。

いままで使用していたsolidの中立面にmeshを作成しました。今回はブロック、板ともにDKT要素を使います。どちらの面のDKT要素も厚さは10㎜です。板をMATE、ブロックをESCLとしました。

Geomモデル
Meshモデル

法線 ブロック側
法線 板側

モデルは、ブロック側の要素と板側の要素の法線が向き合うようにしています。

commファイルです。

DEBUT(LANG='FR')

板側の要素の読み込みです。

pmesh = LIRE_MAILLAGE(identifier='0:1',
                      UNITE=20)

ブロック側にの要素の読み込みです。四隅を支える要素のグループを追加します。

mesh = LIRE_MAILLAGE(identifier='1:1',
                     UNITE=3)

smesh = CREA_MAILLAGE(identifier='2:1',
                      CREA_POI1=_F(GROUP_NO=('LR', 'RR', 'LF', 'RF'),
                                   NOM_GROUP_MA=('spElmt', )),
                      MAILLAGE=mesh)

2つのmeshを1つにまとめます。

nmesh = ASSE_MAILLAGE(identifier='3:1',
                      MAILLAGE_1=pmesh,
                      MAILLAGE_2=smesh,
                      OPERATION='SUPERPOSE')

要素の設定

model = AFFE_MODELE(identifier='4:1',
                    AFFE=(_F(MODELISATION='DKT',
                             PHENOMENE='MECANIQUE',
                             TOUT='OUI'),
                          _F(GROUP_MA=('spElmt', ),
                             MODELISATION='DIS_T',
                             PHENOMENE='MECANIQUE')),
                    MAILLAGE=nmesh)

softSp = AFFE_CARA_ELEM(identifier='5:1',
                        COQUE=(_F(EPAIS=10.0,
                                  GROUP_MA=('mplate', )),
                               _F(EPAIS=10.0,
                                  GROUP_MA=('splate', ))),
                        DISCRET=_F(CARA='K_T_D_N',
                                   GROUP_MA=('spElmt', ),
                                   VALE=(50.0, 50.0, 50.0)),
                        MODELE=model)

材料の設定

steel = DEFI_MATERIAU(identifier='6:1',
                      ELAS=_F(E=206800.0,
                              NU=0.29))

ssteel = DEFI_MATERIAU(identifier='7:1',
                       ECRO_LINE=_F(D_SIGM_EPSI=3283.0,
                                    SY=155.8),
                       ELAS=_F(E=206800.0,
                               NU=0.29))

fieldmat = AFFE_MATERIAU(identifier='8:1',
                         AFFE=(_F(GROUP_MA=('mplate', ),
                                  MATER=(steel, )),
                               _F(GROUP_MA=('splate', ),
                                  MATER=(ssteel, ))),
                         MODELE=model)

関数の設定
funcは時間(計算ステップ)に対する荷重倍率の関数。
listr0は時間刻み(計算ステップの刻み)の関数。
listrは計算結果を出力する刻みの関数。

func = DEFI_FONCTION(identifier='9:1',
                     INTERPOL=('LIN', ),
                     NOM_PARA='INST',
                     VALE=(0.0, 0.0, 1.0, 1.0))

listr0 = DEFI_LIST_REEL(identifier='10:1',
                        DEBUT=0.0,
                        INTERVALLE=_F(JUSQU_A=1.0,
                                      NOMBRE=1600))

listr = DEFI_LIST_REEL(identifier='11:1',
                       DEBUT=0.0,
                       INTERVALLE=_F(JUSQU_A=1.0,
                                     NOMBRE=40))

接触判定用の関数の設定

F_DIST_M = DEFI_CONSTANTE(identifier='13:1',
                          NOM_RESU='TOUTRESU',
                          VALE=5.0)

拘束と荷重の設定
板は四辺支持としています。ブロックは前側の3点がY軸にそって移動するように拘束を設定しました。

fix = AFFE_CHAR_MECA(identifier='14:1',
                     DDL_IMPO=(_F(DX=0.0,
                                  DY=0.0,
                                  DZ=0.0,
                                  GROUP_NO=('mfront', 'mend', 'mleft', 'mright')),
                               _F(DX=0.0,
                                  DZ=0.0,
                                  GROUP_NO=('CF', )),
                               _F(DX=0.0,
                                  GROUP_NO=('RF', )),
                               _F(DX=0.0,
                                  GROUP_NO=('LF', ))),
                     MODELE=model)

load = AFFE_CHAR_MECA(identifier='15:1',
                      FORCE_NODALE=_F(FY=-61.538,
                                      GROUP_NO=('snode', )),
                      MODELE=model)

接触の設定

contact = DEFI_CONTACT(identifier='16:1',
                       ALGO_RESO_CONT='NEWTON',
                       ALGO_RESO_GEOM='NEWTON',
                       CONT_STAT_ELAS=0,
                       FORMULATION='CONTINUE',
                       MODELE=model,
                       RESI_CONT=-1.0,
                       RESI_GEOM=0.0001,
                       ZONE=_F(ALGO_CONT='STANDARD',
                               CARA_ELEM=softSp,
                               CONTACT_INIT='INTERPENETRE',
                               DIST_COQUE='OUI',
                               DIST_MAIT=F_DIST_M,
                               GROUP_MA_ESCL=('splate', ),
                               GROUP_MA_MAIT=('mplate', ),
                               RESOLUTION='OUI'))

解析の設定

resnonl = STAT_NON_LINE(identifier='17:1',
                        ARCHIVAGE=_F(LIST_INST=listr),
                        CARA_ELEM=softSp,
                        CHAM_MATER=fieldmat,
                        COMPORTEMENT=(_F(DEFORMATION='PETIT',
                                         GROUP_MA=('splate', ),
                                         RELATION='VMIS_ISOT_LINE'),
                                      _F(DEFORMATION='PETIT',
                                         GROUP_MA=('mplate', ),
                                         RELATION='ELAS'),
                                      _F(DEFORMATION='PETIT',
                                         GROUP_MA=('spElmt', ),
                                         RELATION='ELAS')),
                        CONTACT=contact,
                        CONVERGENCE=_F(ITER_GLOB_ELAS=50,
                                       ITER_GLOB_MAXI=200),
                        EXCIT=(_F(CHARGE=fix),
                               _F(CHARGE=load,
                                  FONC_MULT=func)),
                        INCREMENT=_F(LIST_INST=listr0,
                                     NUME_INST_FIN=800,
                                     NUME_INST_INIT=0),
                        METHODE='NEWTON',
                        MODELE=model,
                        NEWTON=_F(MATRICE='TANGENTE',
                                  REAC_INCR=1,
                                  REAC_ITER=1))

resnonl = STAT_NON_LINE(identifier='18:1',
                        reuse=resnonl,
                        ARCHIVAGE=_F(LIST_INST=listr),
                        CARA_ELEM=softSp,
                        CHAM_MATER=fieldmat,
                        COMPORTEMENT=(_F(GROUP_MA=('splate', ),
                                         RELATION='VMIS_ISOT_LINE'),
                                      _F(GROUP_MA=('mplate', ),
                                         RELATION='ELAS'),
                                      _F(GROUP_MA=('spElmt', ),
                                         RELATION='ELAS')),
                        CONTACT=contact,
                        CONVERGENCE=_F(ITER_GLOB_ELAS=50,
                                       ITER_GLOB_MAXI=200,
                                       RESI_GLOB_RELA=2e-06),
                        ETAT_INIT=_F(EVOL_NOLI=resnonl,
                                     INST_ETAT_INIT=0.5),
                        EXCIT=(_F(CHARGE=fix),
                               _F(CHARGE=load,
                                  FONC_MULT=func)),
                        INCREMENT=_F(LIST_INST=listr0,
                                     NUME_INST_FIN=1600,
                                     NUME_INST_INIT=800),
                        METHODE='NEWTON',
                        MODELE=model,
                        NEWTON=_F(MATRICE='TANGENTE',
                                  REAC_INCR=1,
                                  REAC_ITER=1),
                        RESULTAT=resnonl)

resnonl = CALC_CHAMP(identifier='19:1',
                     reuse=resnonl,
                     CONTRAINTE=('SIEF_ELNO', 'EFGE_ELNO', 'EFGE_NOEU'),
                     CRITERES=('SIEQ_ELNO', ),
                     RESULTAT=resnonl)

resu_sup = POST_CHAMP(identifier='20:1',
                      EXTR_COQUE=_F(NIVE_COUCHE='SUP',
                                    NOM_CHAM=('SIEQ_ELNO', ),
                                    NUME_COUCHE=1),
                      RESULTAT=resnonl)

resu_inf = POST_CHAMP(identifier='21:1',
                      EXTR_COQUE=_F(NIVE_COUCHE='INF',
                                    NOM_CHAM=('SIEQ_ELNO', ),
                                    NUME_COUCHE=1),
                      RESULTAT=resnonl)

resu_moy = POST_CHAMP(identifier='22:1',
                      EXTR_COQUE=_F(NIVE_COUCHE='MOY',
                                    NOM_CHAM=('SIEQ_ELNO', ),
                                    NUME_COUCHE=1),
                      RESULTAT=resnonl)

resu_sup = CALC_CHAMP(identifier='23:1',
                      reuse=resu_sup,
                      CRITERES=('SIEQ_NOEU', ),
                      RESULTAT=resu_sup)

resu_moy = CALC_CHAMP(identifier='24:1',
                      reuse=resu_moy,
                      CRITERES=('SIEQ_NOEU', ),
                      RESULTAT=resu_moy)

resu_inf = CALC_CHAMP(identifier='25:1',
                      reuse=resu_inf,
                      CRITERES=('SIEQ_NOEU', ),
                      RESULTAT=resu_inf)

出力

table = POST_RELEVE_T(identifier='26:1',
                      ACTION=(_F(GROUP_NO=('CF', ),
                                 INTITULE='Disp',
                                 NOM_CHAM='DEPL',
                                 OPERATION=('EXTRACTION', ),
                                 RESULTAT=resnonl,
                                 TOUT_CMP='OUI'),
                              _F(GROUP_NO=('CR', ),
                                 INTITULE='Disp',
                                 NOM_CHAM='DEPL',
                                 OPERATION=('EXTRACTION', ),
                                 RESULTAT=resnonl,
                                 TOUT_CMP='OUI')))

IMPR_RESU(identifier='27:1',
          RESU=(_F(NOM_CHAM=('DEPL', ),
                   RESULTAT=resnonl,
                   TOUT='OUI'),
                _F(RESULTAT=resu_sup),
                _F(RESULTAT=resu_moy),
                _F(RESULTAT=resu_inf)),
          UNITE=2)

IMPR_TABLE(identifier='28:1',
           FORMAT='TABLEAU',
           TABLE=table,
           UNITE=8)

FIN()

結果です。時間=1のときのMises応力分布です。

ブロック側の代表点のY方向変位です。最初のステップで初期隙間と板の勾配による隙間の分Y方向に移動し、板と接触後はほぼ一定となっていました。

コメント

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