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

いままで使用していた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方向に移動し、板と接触後はほぼ一定となっていました。

コメント