« LIAISON_SOLIDEによる剛体は大回転出来ない | トップページ | Code_aster 11.0.28以降では、接触・摩擦解析が高速化 »

2012年11月 3日 (土)

回転体とゴム板の接触

前回の検証で、LIAISON_SOLIDEによる剛体結合は大回転できないことが分かりました。

そこで今回、変形体を用いて回転体の解析を行うことにしました。しかし硬くて変形しない部品を単に回転させるだけでは面白くないので、ゴムとの接触も含めた例題を作成してみました。

ソフトウェアは、DEXCS2011-Salome-A3(64)(SALOME6.3 + Code_Aster STA10.5)の利用です。

まず、解析モデルを下図に示します。

Rigid0301


上側の穴の開いた長細い部品が回転体です。これは穴を中心に回転し、下方のゴム板に接触します。本来はこの部品を剛体面または剛体結合として扱いたかったのですが、それが出来なかったため、変形体として扱うことにしました。

ゴム板は荷重が作用していない状態で両端(fix1,fix2)を拘束されており、回転体の接触によって下側へ押されます。

回転体の回転のさせ方ですが、まず、Geometryにおいて下図のように回転体を平面で分割し、分割面と穴の内面の交わる線(2本)を、それぞれ「line1」、「line2」というグループ名にしました。

Rigid0302


この2本の線に変位を与え、回転体を動かします。本来ならば穴の内面の点全てに変位を与えたほうが良いのでしょうが、今回は柔らかいゴムに接触するだけなので、この2本の変位拘束だけで荷重を十分支持できると判断しました。荷重が大きい場合は、回転体の弾性率も大きくする必要があります。

寸法は特に重要ではないのですが、一応下図に示します。
穴の内径は12mm(半径6mm)です。

Rigid0303


次にメッシュですが、回転体は四面体2次要素、ゴム板は六面体2次要素で作成しました(それぞれ別にメッシュ作成し、Compoundで一つにまとめています)。
ゴム板は曲げ変形するため、厚み方向に2層以上は欲しいところですが、今回は例題ですので計算時間を優先し、1層にしています。
もちろん、Geometryから各グループを作成しています。

Rigid0304

続いて、Eficasによるcommファイルの編集です。

複数の面を含む面グループに接触の設定をする場合、「ORIE_PEAU_3D」で面を揃える必要があります(これを結構忘れます)。

Rigid0305

材料物性ですが、回転体は構造用鋼としました。剛体として考えるなら、もっと大きな弾性率のほうが良いかもしれません。ゴムはMooney-Rivlinです。

Rigid0306

接触の設定ですが、摩擦は「なし」にしました。
FORMULATIONはcontinueです。
面の設定ですが、本来は弾性率の大きい回転体の方をマスターにするべきなのでしょうが、メッシュが回転体のほうが細いため、ゴム板のほうをマスターにしました。このあたりの設定によっても、収束性が異なってくるかもしれません。

Rigid0307

時間ステップですが、0秒~1秒の間で回転体が1回転するとして、その1秒間を計算します。
初期時間分割は40分割、結果出力も40分割、ただし、自動時間ステップ調整機能をを用います。

Rigid0308

さて、ここからが今回の本題である、回転させるための境界条件設定ですが、まずは下準備として、line1,line2に対する変位を時間の関数で定義することが必要です。

X-Y平面で見ると、line1, line2の初期配置は下図の通りです。

Rigid0309

この図では穴の中心座標が(0,0)となっていますが、実際には異なります。しかし、与える変位量としては同じことです。
穴の半径 r=6(mm)、周期 T=1秒なので、変位は下式の通りになります。

【line1】
X変位 = 6 * ( cos(2π(t-0.5)) + 1)
Y変位 = 6 * ( sin(2πt) )

【line2】 
X変位 = 6 * ( cos(2πt) - 1)
Y変位 = 6 * ( sin(2π(t-0.5)) )

これらの式を、Eficasで「FORMULE」に関数として、それぞれ設定していきます。
INSTは時間(=t)、piはπ(円周率)です。

Rigid0310

そして、定義した関数を「AFFE_CHAR_MECA_F」にて、それぞれの変位として設定します。
なお、line1,line2共に、Z方向の変位は0としました。これは、AFFE_CHAR_MECA_Fの中に入れても良いし、私のようにAFFE_CHAR_MECAを別に作っても良いようです。

STAT_NON_LINEの設定は下図です。
特に変わったことはしていません。回転体(solid)とゴム板(rubber)は別々に「COMP_INCR」を設定しました。

Rigid0311

一応、fix1,fix2のY方向(上下方向)の反力値も出力するようにしています。

Rigid0312

このような設定で計算を行いました。

結果の動画です。

静止画です

Rigid0313


回転体が回転して、ゴム板を押す様子が計算できました。

ゴム板の固定点(fix1, fix2)の反力も妥当な形で出ています。

Rigid0314


今回、X-Y平面上で4つの自由度を拘束しているため、ちゃんと変位を計算して回転させているつもりでも。計算誤差などによってわずかな変形と応力が発生しているようです。今回は実質的に影響が無いくらい小さいのでOKですが、この点にも注意する必要がありそうです。
本来は自由度3つ(1点のX,Yと、もう一点のXかY)の方が良いのですが、それだと回転の向きが定まらない時点があり、結局4つの自由度拘束になっています。何か、うまい方法は無いものでしょうか。

今回のメッシュファイル(mmed)とcommファイルは下記です。

rigid03.zip

« LIAISON_SOLIDEによる剛体は大回転出来ない | トップページ | Code_aster 11.0.28以降では、接触・摩擦解析が高速化 »

回転体」カテゴリの記事

接触・摩擦」カテゴリの記事

条件設定」カテゴリの記事

超弾性」カテゴリの記事

コメント

私はsalome-meca 2017でこのサンプル[回転体とゴム板の接触(2012年11月 3日 (土))]を試しました。
しかし、次のエラーが出てきます。
これまでにこのエラーを見たことがありますか?

================================================================
JDC.py : ERREUR A L'EXECUTION - INTERRUPTION
>> JDC.py : DEBUT RAPPORT
CR d'execution de JDC en MIXTE
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
! Exception utilisateur levee mais pas interceptee. !
! Les bases sont fermees. !
! Type de l'exception : error !
! !
! la grandeur associée au champ char0 .CHME.CIMPO : DDLI_C !
! n'est pas celle associée au paramètre PDDLIMR : DDLI_R (option: MECA_DDLI_R !
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
fin CR d'execution de JDC en MIXTE

>> JDC.py : FIN RAPPORT
EXECUTION_CODE_ASTER_EXIT_4144=1

_EXIT_CODE = 1
================================================================


================================================================
mesh = LIRE_MAILLAGE(FORMAT='MED', UNITE=20)

mesh = MODI_MAILLAGE(
reuse=mesh,
MAILLAGE=mesh,
ORIE_PEAU_3D=_F(GROUP_MA=('outer', 'cont', 'contR'))
)

model = AFFE_MODELE(
AFFE=_F(MODELISATION=('3D', ), PHENOMENE='MECANIQUE', TOUT='OUI'),
MAILLAGE=mesh
)

steel = DEFI_MATERIAU(ELAS=_F(E=210000.0, NU=0.3))

rubber = DEFI_MATERIAU(ELAS_HYPER=_F(C01=0.16667, C10=0.66667, NU=0.499))

fieldmat = AFFE_MATERIAU(
AFFE=(
_F(GROUP_MA=('rubber', ), MATER=(rubber, )),
_F(GROUP_MA=('solid', ), MATER=(steel, ))
),
MAILLAGE=mesh
)

pas1a = DEFI_LIST_REEL(DEBUT=0.0, INTERVALLE=_F(JUSQU_A=1.0, NOMBRE=40))

output = DEFI_LIST_REEL(DEBUT=0.0, INTERVALLE=_F(JUSQU_A=1.0, NOMBRE=40))

pas1b = DEFI_LIST_INST(
ADAPTATION=_F(
CRIT_COMP='LE',
EVENEMENT='SEUIL',
NB_INCR_SEUIL=2,
NOM_PARA='NB_ITER_NEWTON',
PCENT_AUGM=100.0,
VALE_I=6
),
DEFI_LIST=_F(
LIST_INST=pas1a, NB_PAS_MAXI=1000000, PAS_MAXI=0.1, PAS_MINI=1e-05
),
ECHEC=_F(
EVENEMENT='ERREUR',
SUBD_METHODE='MANUEL',
SUBD_PAS=4,
SUBD_PAS_MINI=1e-05
),
METHODE='AUTO'
)

line1x = FORMULE(NOM_PARA=('INST', ), VALE='6*(cos(2.0*pi*(INST-0.5))+1.0)')

line1y = FORMULE(NOM_PARA=('INST', ), VALE='6*(sin(2.0*pi*INST))')

line2x = FORMULE(NOM_PARA=('INST', ), VALE='6*(cos(2.0*pi*INST)-1.0)')

line2y = FORMULE(NOM_PARA=('INST', ), VALE='6*(sin(2.0*pi*(INST-0.5)))')

contact = DEFI_CONTACT(
FORMULATION='CONTINUE',
MODELE=model,
ZONE=_F(GROUP_MA_ESCL=('contR', ), GROUP_MA_MAIT=('outer', ))
)

char1 = AFFE_CHAR_MECA_F(
DDL_IMPO=(
_F(DX=line1x, DY=line1y, GROUP_MA=('line1', )),
_F(DX=line2x, DY=line2y, GROUP_MA=('line2', ))
),
MODELE=model
)

char0 = AFFE_CHAR_MECA_C(
DDL_IMPO=(
_F(DZ=0.0, GROUP_MA=('line2', 'line1')),
_F(DX=0.0, DY=0.0, DZ=0.0, GROUP_MA=('fix2', 'fix1'))
),
MODELE=model
)

RESU = STAT_NON_LINE(
ARCHIVAGE=_F(CHAM_EXCLU=('VARI_ELGA', ), LIST_INST=output),
CHAM_MATER=fieldmat,
COMPORTEMENT=(
_F(DEFORMATION='GROT_GDEP', GROUP_MA=('solid', ), RELATION='ELAS'), _F(
DEFORMATION='GROT_GDEP',
GROUP_MA=('rubber', ),
RELATION='ELAS_HYPER'
)
),
CONTACT=contact,
CONVERGENCE=_F(ITER_GLOB_MAXI=30, RESI_GLOB_MAXI=1e-06),
EXCIT=(_F(CHARGE=char1), _F(CHARGE=char0)),
INCREMENT=_F(LIST_INST=pas1b),
MODELE=model,
NEWTON=_F(REAC_ITER=1)
)

RESU = CALC_CHAMP(
reuse=RESU,
CHAM_MATER=fieldmat,
CONTRAINTE=('SIGM_NOEU', ),
FORCE=('FORC_NODA', 'REAC_NODA'),
MODELE=model,
RESULTAT=RESU
)

reacF = POST_RELEVE_T(
ACTION=_F(
GROUP_NO=('fix1', 'fix2'),
INTITULE='Reaction_Force_1',
NOM_CHAM='REAC_NODA',
OPERATION=('EXTRACTION', ),
RESULTANTE=('DY', ),
RESULTAT=RESU
)
)

IMPR_TABLE(TABLE=reacF, UNITE=10)

IMPR_RESU(FORMAT='MED', RESU=_F(RESULTAT=RESU), UNITE=80)

smith様
私はこの数年salome-mecaから離れており、最近の状況が分かりません。
今回のエラーも、以前のcode_asterとの何らかの違いの為かとは思いますが、お役に立てず申し訳ございません。
このブログも、一応試行の記録として残しているのですが、情報がかなり古くなってきているため、そろそろ閉鎖した方が良いのかもしれません。


コメントを書く

(ウェブ上には掲載しません)

トラックバック

この記事のトラックバックURL:
http://app.f.cocolog-nifty.com/t/trackback/1605696/47702787

この記事へのトラックバック一覧です: 回転体とゴム板の接触:

« LIAISON_SOLIDEによる剛体は大回転出来ない | トップページ | Code_aster 11.0.28以降では、接触・摩擦解析が高速化 »