モデルです。大まかな感じを示します。
いままで使用していたsolidの中立面にmeshを作成しました。今回はブロック、板ともにDKT要素を使います。どちらの面のDKT要素も厚さは10㎜です。板をMATE、ブロックをESCLとしました。
モデルは、ブロック側の要素と板側の要素の法線が向き合うようにしています。
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方向に移動し、板と接触後はほぼ一定となっていました。
コメント