1
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

Salome-Meca 2019でWizardを用いた接触解析

Last updated at Posted at 2021-01-31

はじめに

  • Salome-Meca 2017ではAsterStudyモジュールの採用とともに4種類のCode_Asterコマンドファイル作成用Wizard機能が廃止
  • Salome-Meca 2019では廃止になった4種類と新たに追加された3種類の合計7種類のWizard(Add Stage with Assistant)が採用
    • Liner thermal analysis:線形熱解析
    • Isotropic liner elasticity:等方性線形弾性
    • Modal analysys:モーダル解析
    • Thermo-mechanical analysis:熱-構造解析(New)
    • Contact analysis:接触解析(New)
    • Fracture mechanics:破壊力学
    • Reinforced concrete beam:鉄筋コンクリート梁(New)

今回、新たに追加されたContact analysis:接触解析を実施

例題の実施

接触による応力分布1

次図のようなスタンプ台にスタンプを押し付ける軸対称問題を考える。
スタンプ台、スタンプともに材料はS45Cとする。

geom.png

メッシュ条件

スタンプ、スタンプ台をそれぞれ次の条件でメッシュ分割

  • 2D:Algorithm=Quadrangle Mapping(四面体)
  • 1D:Algorithm=Wire Discretisation
  • 1D:Hypothesis=Max Size 3mm

Compound Meshを作成、このとき「Merge coincident nodes and elements」のチェックを外しておく

Compound.png

mesh.png

Wizardの実施

  • AsterStudyモジュールで「Operations」>「Add Stage with Assistant」>「Contact analysis」を選択
  • Introductionが表示されるので、「Next>」をクリック

Contact analysis_001.png

  • 「Compound_Mesh_1」を選択
  • 「Next>」をクリック

Contact analysis_002.png

  • 軸対称問題なので「AXIS」を選択
  • 「Next>」をクリック

Contact analysis_003.png

  • 材料定数を設定
    • ヤング率に「2e5」MPa
    • ポアソン比に「0.3」を入力
  • 「Next>」をクリック

Contact analysis_004.png

  • 拘束条件を設定
    • グループに「fix」を選択
    • 「DX=DY=0」を入力
  • 「Next>」をクリック

Contact analysis_005.png

  • 圧力荷重条件を設定
    • グループに「press」を選択
    • 「100」MPaを入力
  • 「Next>」をクリック

Contact analysis_006.png

  • 接触アルゴリズム「Standard method」を選択
  • Master Zoneに「contLo」を選択
  • Slave Zonenに「contUp」を選択
  • 「Finish」を選択

Contact analysis_007.png

Wizardを終了するとエラーが発生

error.png

「Yes」をクリックすると、

  • 解析ケース内でStage_1とStage_2に分離、
  • Stage_2はテキストモードでしか編集できず、
  • GUIで設定するグラフィカルモードに変更できず...

textmode.png

「Show Details...」をクリックすると、次のように表示されMODI_MAILLAGEでエラーが発生しているよう

str, near the line 6:
For keyword ORIE_PEAU_2D/GROUP_MA: Unexpected type: <class 'tuple'>,
expecting: [<class 'code_aster.Cata.Language.DataStructure.grma'>]

Line is: ORIE_PEAU_2D =_F (GROUP_MA =("contUp","contLo",("press",)),),)

コマンドの修正

Wizardから出力されたコマンドファイルの以下のMODI_MAILLAGE

修正前
mesh = MODI_MAILLAGE(
    reuse=mesh,
    MAILLAGE=mesh,
    ORIE_PEAU_2D=_F(GROUP_MA=("contUp", "contLo", ("press", )), ),
)

次のようにテキストモードで修正

修正後
mesh = MODI_MAILLAGE(
    reuse=mesh,
    MAILLAGE=mesh,
    ORIE_PEAU_2D=_F(GROUP_MA=("contUp", "contLo", "press" ))
)

以後はグラフィカルモードで編集が可能だが、

  1. Stage_1をテキストモードに変更、
  2. Stage_2の内容をStage_1にカット&ペースト
  3. Stage_2を削除

を実行して一つのStageにまとめてからグラフィカルモードにしたほうがコマンドファイルの管理がしやすい。

コマンドファイルの追加

Wizardのデフォルトでは、Post処理、結果出力設定がないので追加が必要

Post処理
result = CALC_CHAMP(reuse=result,
                    CHAM_MATER=materfl,
                    CONTRAINTE=('SIGM_ELNO', 'SIGM_NOEU'),
                    CRITERES=('SIEQ_ELNO', 'SIEQ_NOEU'),
                    MODELE=model,
                    RESULTAT=result)
結果出力
IMPR_RESU(FORMAT='MED',
          RESU=_F(MAILLAGE=mesh,
                  NOM_CHAM=('DEPL', 'SIEQ_NOEU', 'SIGM_NOEU'),
                  RESULTAT=result),
          UNITE=80)

計算結果

変位

displacement.png

相当応力

VMIS.png

Asterコマンド

Wizardのデフォルト設定
DEBUT(LANG='EN')

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

mesh = MODI_MAILLAGE(reuse=mesh,
                     MAILLAGE=mesh,
                     ORIE_PEAU_2D=_F(GROUP_MA=('contUp', 'contLo', 'press')))

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

mater = DEFI_MATERIAU(ELAS=_F(E=200000.0,
                              NU=0.3))

materfl = AFFE_MATERIAU(AFFE=_F(MATER=(mater, ),
                                TOUT='OUI'),
                        MODELE=model)

lst = DEFI_LIST_REEL(DEBUT=0.0,
                     INTERVALLE=_F(JUSQU_A=1.0,
                                   NOMBRE=2))

mult = DEFI_FONCTION(NOM_PARA='INST',
                     VALE=(0.0, 0.0, 1.0, 1.0))

times = DEFI_LIST_INST(DEFI_LIST=_F(LIST_INST=lst))

mecabc = AFFE_CHAR_MECA(DDL_IMPO=_F(DX=0.0,
                                    DY=0.0,
                                    GROUP_MA=('fix', )),
                        MODELE=model)

mecach = AFFE_CHAR_MECA(MODELE=model,
                        PRES_REP=_F(GROUP_MA=('press', ),
                                    PRES=100.0))

contact = DEFI_CONTACT(ALGO_RESO_CONT='NEWTON',
                       FORMULATION='CONTINUE',
                       MODELE=model,
                       ZONE=_F(ALGO_CONT='STANDARD',
                               GROUP_MA_ESCL='contUp',
                               GROUP_MA_MAIT='contLo'))

result = STAT_NON_LINE(CHAM_MATER=materfl,
                       CONTACT=contact,
                       EXCIT=(_F(CHARGE=mecabc,
                                 FONC_MULT=mult),
                              _F(CHARGE=mecach,
                                 FONC_MULT=mult)),
                       INCREMENT=_F(LIST_INST=times),
                       MODELE=model)

FIN()
  1. マルチフィジックスの実験/計算技術の高度化に関する研究会/CAE設計演習問題「接触による応力分布」https://www.fml.t.u-tokyo.ac.jp/multiphysics/prob/index.htm

1
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?