接触 摩擦あり その1

未分類
sponsored

前回のモデルをもとに、平板の上を半球が滑る場合を解析してみました。
手順は次のとおりです。
①半球にFYを加えて平板に押し付けます。

➁そのまま、半球に強制変位UXを与えて移動させます。

半球と平板間の摩擦係数は0.1としました。

commファイルです。

DEBUT(identifier='0:1',
LANG='EN')
mesh = LIRE_MAILLAGE(identifier='1:1',
UNITE=20)
newmesh = CREA_MAILLAGE(identifier='2:1',
CREA_POI1=_F(GROUP_NO=('XM', 'ZM', 'ZP', 'XP'),
NOM_GROUP_MA=('spElmt', )),
MAILLAGE=mesh)
meshp = LIRE_MAILLAGE(identifier='3:1',
UNITE=2)
mesh0 = ASSE_MAILLAGE(identifier='4:1',
MAILLAGE_1=newmesh,
MAILLAGE_2=meshp,
OPERATION='SUPERPOSE')
model = AFFE_MODELE(identifier='5:1',
AFFE=(_F(MODELISATION='3D',
PHENOMENE='MECANIQUE',
TOUT='OUI'),
_F(GROUP_MA=('spElmt', ),
MODELISATION='DIS_T',
PHENOMENE='MECANIQUE')),
MAILLAGE=mesh0)
softSp = AFFE_CARA_ELEM(identifier='6:1',
DISCRET=_F(CARA='K_T_D_N',
GROUP_MA=('spElmt', ),
VALE=(50.0, 50.0, 50.0)),
MODELE=model)
steel = DEFI_MATERIAU(identifier='7:1',
ELAS=_F(E=206800.0,
NU=0.29))
fieldmat = AFFE_MATERIAU(identifier='8:1',
AFFE=_F(MATER=(steel, ),
TOUT='OUI'),
MODELE=model)
listr = DEFI_LIST_REEL(identifier='9:1',
DEBUT=0.0,
INTERVALLE=_F(JUSQU_A=2.0,
NOMBRE=100))
func = DEFI_FONCTION(identifier='10:1',
NOM_PARA='INST',
VALE=(0.0, 0.0, 1.0, 1.0, 2.0, 1.0))
func2 = DEFI_FONCTION(identifier='11:1',
NOM_PARA='INST',
VALE=(0.0, 0.0, 1.0, 0.0, 2.0, 1.0))
load = AFFE_CHAR_MECA(identifier='12:1',
FORCE_NODALE=_F(FY=-1200.0,
GROUP_NO=('CENTER', )),
MODELE=model)
fix = AFFE_CHAR_MECA(identifier='13:1',
DDL_IMPO=_F(DX=0.0,
DY=0.0,
DZ=0.0,
GROUP_NO=('pbottom', )),
MODELE=model)

開始宣言から関数の定義までは前回と同じです。

contact = DEFI_CONTACT(identifier='14:1',
ALGO_RESO_CONT='NEWTON',
ALGO_RESO_GEOM='NEWTON',
FORMULATION='CONTINUE',    # 摩擦ありのときの推奨方法
FROTTEMENT='COULOMB',      # COULOMB摩擦
LISSAGE='OUI',
MODELE=model,
ZONE=_F(CONTACT_INIT='OUI',
COULOMB=0.0,                # FRICTION COEFFICIENT
GROUP_MA_ESCL=('surface', ),
GROUP_MA_MAIT=('ptop', )))

半球を平板に押し付けるときの接触のモデルでした。次に②の滑る状態の接触について設定します。

contact2 = DEFI_CONTACT(identifier='15:1',
ALGO_RESO_CONT='NEWTON',
ALGO_RESO_GEOM='NEWTON',
FORMULATION='CONTINUE',
FROTTEMENT='COULOMB',
MODELE=model,
ZONE=_F(COULOMB=0.1,
GROUP_MA_ESCL=('surface', ),
GROUP_MA_MAIT=('ptop', )))

②の状態のときの強制変位(X方向に10mm)を設定します。

fix2 = AFFE_CHAR_MECA(identifier='16:1',
DDL_IMPO=_F(DX=10.0,
GROUP_NO=('CIRCLE', )),
MODELE=model)

①の状態の解析条件を設定します。

resnonl = STAT_NON_LINE(identifier='17:1',
CARA_ELEM=softSp,
CHAM_MATER=fieldmat,
CONTACT=contact,
CONVERGENCE=_F(ITER_GLOB_ELAS=50,
ITER_GLOB_MAXI=50),
EXCIT=(_F(CHARGE=load,
FONC_MULT=func),
_F(CHARGE=fix)),
INCREMENT=_F(LIST_INST=listr,
NUME_INST_FIN=50,
NUME_INST_INIT=0),
METHODE='NEWTON',
MODELE=model,
NEWTON=_F(REAC_INCR=1,
REAC_ITER=1),
SOLVEUR=_F(METHODE='MUMPS'))

②の状態の解析条件について設定します。

resnonl2 = STAT_NON_LINE(identifier='18:1',
CARA_ELEM=softSp,
CHAM_MATER=fieldmat,
CONTACT=contact2,
CONVERGENCE=_F(ITER_GLOB_ELAS=50,
ITER_GLOB_MAXI=100),
ETAT_INIT=_F(EVOL_NOLI=resnonl),    #①の計算結果を引き継ぎます
EXCIT=(_F(CHARGE=load,
FONC_MULT=func),
_F(CHARGE=fix),
_F(CHARGE=fix2,
FONC_MULT=func2)),
INCREMENT=_F(LIST_INST=listr,
NUME_INST_FIN=100,                 # 解析の終了はstep=100。
NUME_INST_INIT=50),                # stepも①から引き継ぐので50から開始
METHODE='NEWTON',
MODELE=model,
NEWTON=_F(MATRICE='ELASTIQUE'),
RESULTAT=resnonl,
SOLVEUR=_F(METHODE='MUMPS'))

後処理は前回と同じです。

resnonl2 = CALC_CHAMP(identifier='19:1',
reuse=resnonl2,
CONTRAINTE=('SIGM_NOEU', ),
CRITERES=('SIEQ_NOEU', ),
DEFORMATION=('EPSI_NOEU', ),
FORCE=('FORC_NODA', ),
RESULTAT=resnonl2)
resnonl = CALC_CHAMP(identifier='20:1',
reuse=resnonl,
CONTRAINTE=('SIGM_NOEU', ),
CRITERES=('SIEQ_NOEU', ),
DEFORMATION=('EPSI_NOEU', ),
FORCE=('FORC_NODA', ),
RESULTAT=resnonl)
table = POST_RELEVE_T(identifier='21:1',
ACTION=(_F(GROUP_NO=('SPOLE', ),
INTITULE='SPC',
NOM_CHAM='FORC_NODA',
OPERATION=('EXTRACTION', ),
RESULTANTE=('DX', 'DY', 'DZ'),
RESULTAT=resnonl,
TOUT_ORDRE='OUI'),
_F(GROUP_NO=('SPOLE', ),
INTITULE='SPC',
NOM_CHAM='FORC_NODA',
OPERATION=('EXTRACTION', ),
RESULTANTE=('DX', 'DY', 'DZ'),
RESULTAT=resnonl2,
TOUT_ORDRE='OUI')))
IMPR_RESU(identifier='22:1',
RESU=(F(NOM_RESU_MED='ini',
RESULTAT=resnonl,
TOUT='OUI'),
_F(RESULTAT=resnonl2,
TOUT='OUI')),
UNITE=80)
IMPR_TABLE(identifier='23:1',
FORMAT='TABLEAU',
TABLE=table,
UNITE=3)
FIN(identifier='24:1',
)

結果です。節点spoleの作用力は次のようになりました。

DXとDYの比をとると0.1となり、摩擦係数0.1と合致しました。
次にX方向の変位のコンターです。半球は10mm移動しています(あたりまえ)。

Y方向の変位です。摩擦によって生じるモーメントの影響で、半球が傾いてしまっていました。

コメント

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