熱変形解析その２

１年ほど前に熱応力解析 をしました。OpenCAE勉強会で発表した際に、追加計算で、LIEAON_UNIFというコマンドを使うと、剛体拘束を再現できるという話しだたので計算しました。

動作確認環境：1)Salome-Meca 2019 (CAELinux2020Lite)2)SalomeMeca 2021 for Windows(OS:windows11)2)は1)で行った解析結果のhdfファイルを読み込んで実行を行いました。

# １．解析条件

解析対象とモデル寸法、物性値は、熱応力解析　を参照ください。解析モデルと拘束条件を変更しました。円柱１と円柱２の上面について①X方向を拘束、②Y方向をLIESON_UNIFにて拘束をおこないました。詳細は下図をご確認下さい。熱応力解析は、連成解析と熱応力ウィザード解析の２種類で対応できます。今回は、連成解析をおこないました。

# ２．解析結果

下のコンター図は、Y方向変位のコンター図を示しており、数個の接点のX方向変位(DX)とY方向変位(DY)を示しています。Y方向の変位は、円筒上面で0.0282mm(モデルは長さの半分モデルなので、全長は0.0562mm)であり、材料力学の公式からの計算値0.0504mmに対して10％ぐらい大きい結果でした。また、Y方向の変位は円筒１、円筒２ともに同値で、X方向の変位はは円筒１、円筒２ともに剛体拘束が反映できていました。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3782081/e43df32e-8023-986b-cbd1-9e1ace7a28f9.png)

計算結果１：変位のコンター図（ポアソン比有）

もう一つ計算しました。今度は円筒１、円筒２のポアソン比を０にして計算してました。ポアソン比0はコルクが該当します。Y方向の変位は、円筒上面で0.0255mm(モデルは長さの半分モデルなので、全長は0.051mm)であり、材料力学の公式からの計算値0.0504mmに対して1％程度大きくほぼ理論値に近い結果でした。あらためて考えると、材料力学の公式はポアソン比が入っていないので、こちらの計算がちかかなとは思いました。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3782081/0fb65fe6-d487-842d-5115-e57edd6b8ef8.png)

計算結果２：変位のコンター図（ポアソン比０）

さらにもう１条件計算しました。今度は円筒１、円筒２のポアソン比を０と円筒上面(top1,top2)のX方向の拘束をなくして計算ました。Y方向の変位は、円筒上面で0.0255mm(モデルは長さの半分モデルなので、全長は0.051mm)であり、材料力学の公式からの計算値0.0504mmに対して1％程度大きくほぼ理論値に近い結果でした。X方向の拘束条件を外すと、円筒がX方向（半径方向）に変形するので、現物とモデル化の間に乖離がでます。

計算結果３：変位のコンター図（ポアソン比０、上面のX方向拘束なし）

# ３．まとめ

LIESON_UNIFを使うことで剛体と円筒の接合面の剛体条件を反映させることができました。今回の事例は簡単な形状ですが、実際の複雑な形状の場合は、剛体部分のメッシュを減らせるので、データ容量や計算時間の短縮が見込めます。円筒の伸びは、ポアソン比の影響を受けたせいか、材料力学の公式より大きくでることがわかりました。また、SalomeMeca2021forWindowsを導入して、2019で作成した解析ファイルを用いて設定の一部変更やAsterStudyによる解析、Paraviewによる結果確認をしていますが、異常終了もしておらず順調に動いています。LIESON_UNIFの設定の注意点は、拘束する部分を接点で指定します。エッジや面などのGeometoryで指定すると解析エラーがでて解析ができません。

# ４．補足資料


伝熱解析のcommファイル
----
DEBUT(LANG='EN')


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

model = AFFE_MODELE(identifier='1:1',
                    AFFE=_F(MODELISATION=('AXIS', ),
                            PHENOMENE='THERMIQUE',
                            TOUT='OUI'),
                    MAILLAGE=mesh)

mater = DEFI_MATERIAU(identifier='2:1',
                      THER=_F(LAMBDA=0.16))

fieldmat = AFFE_MATERIAU(identifier='3:1',
                         AFFE=_F(MATER=(mater, ),
                                 TOUT='OUI'),
                         MODELE=model)

temp = AFFE_CHAR_THER(identifier='4:1',
                      MODELE=model,
                      TEMP_IMPO=_F(TEMP=100.0,
                                   TOUT='OUI'))

thload = THER_LINEAIRE(identifier='5:1',
                       CHAM_MATER=fieldmat,
                       EXCIT=_F(CHARGE=temp),
                       MODELE=model)

IMPR_RESU(identifier='6:1',
          FORMAT='MED',
          RESU=_F(RESULTAT=thload),
          UNITE=3)

FIN()

----

構造解析のcommファイル
AFFE_CHAR_MECAにLIAISON_UNIFの設定があります。NUがポアソン比の数値です。

----
POURSUITE(identifier='0:2',
          LANG='EN')

model0 = AFFE_MODELE(identifier='1:2',
                     AFFE=_F(MODELISATION=('AXIS', ),
                             PHENOMENE='MECANIQUE',
                             TOUT='OUI'),
                     MAILLAGE=mesh)

mater1 = DEFI_MATERIAU(identifier='2:2',
                       ELAS=_F(ALPHA=1.1e-05,
                               E=200000.0,
                               NU=0.0))

mater2 = DEFI_MATERIAU(identifier='3:2',
                       ELAS=_F(ALPHA=2.3e-05,
                               E=70000.0,
                               NU=0.0))

materst = AFFE_MATERIAU(identifier='4:2',
                        AFFE=(_F(GROUP_MA=('cylinder1', ),
                                 MATER=(mater1, )),
                              _F(GROUP_MA=('cylinder2', ),
                                 MATER=(mater2, ))),
                        AFFE_VARC=_F(EVOL=thload,
                                     NOM_VARC='TEMP',
                                     TOUT='OUI',
                                     VALE_REF=20.0),
                        MODELE=model0)

fix = AFFE_CHAR_MECA(identifier='5:2',
                     DDL_IMPO=(_F(DY=0.0,
                                  GROUP_MA=('base1', 'base2')),
                               _F(DX=0.0,
                                  GROUP_NO=('top1', 'top2'))),
                     LIAISON_UNIF=_F(DDL=('DY', ),
                                     GROUP_NO=('top1', 'top2')),
                     MODELE=model0)

reslin = MECA_STATIQUE(identifier='6:2',
                       CHAM_MATER=materst,
                       EXCIT=_F(CHARGE=fix),
                       MODELE=model0)

unnamed = CALC_CHAMP(identifier='7:2',
                     CONTRAINTE=('SIEF_NOEU', ),
                     CRITERES=('SIEQ_NOEU', ),
                     RESULTAT=reslin)

IMPR_RESU(identifier='8:2',
          FORMAT='MED',
          RESU=(_F(NOM_CHAM=('SIEF_NOEU', 'SIEQ_NOEU'),
                   RESULTAT=unnamed),
                _F(RESULTAT=reslin)),
          UNITE=2)

FIN()

----

メッシュの設定

あらかじめ、Meshの操作画面にて円筒の上面、下面の接点(node)グループを作成してから、LIAESON_UNIFの設定する際にこの接点グループを指定します。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3782081/2aec07c5-0b58-770b-cc8c-c03b00e9b040.png)