Salome-Meca 2019を用いたモーダル解析(SDLS)


目的

シェル要素を用いたモーダル解析

この資料はオープンCAE勉強会@岐阜で公開されているFS氏ご提供の「SALOME-Mecaの使用法解説10.0モーダル解析」をSalome-Meca 2019(Code_Aster 14.4)を用いてシェル要素(1次)で実行しました。

ジオメトリ

  • Salome-Meca 2019を起動します。
  • Shaperモジュールを起動します。

Sketchを使用してワイヤーを作成します。

  • 新規Partを作成します (メニューより、Part/New Part)。
  • スケッチの作成を開始します(メニューより、Sketch/Sketch)。
  • ビューでXOZ平面を選択します。
  • 「Sketch」プロパティパネルの「Set plane View」ボタンをクリックします。

  • 四角形を作成します(メニューより、Sketch/Rectangle)。

  • ビュー内の2つのポイントを選択し、四角形を作成します。

  • 四角形の左端と原点を一致させます(Skethc/Coincident)。

  • Skechツールバーの「Length」ボタンから寸法拘束を作成します。

  • Y方向を「100」、Z方向を「20」に設定します。

  • Skechプロパティパネルの「Apply」ボタンをクリックして、スケッチの作成を終了します。

Faceを作成します。

  • Face1を作成します(メニューより、Build/Face)
  • オブジェクトブラウザでSketch_1を選択します。
  • プロパティパネルの「Apply」ボタンをクリックします。

グループを設定します

  • グループを設定します(Features/Group)。
  • Nameを「fix」に設定、Typeに「Edge」を選択、X=0上の線を選択し、「Apply and continue」をクリックします。
  • Nameを「divZ」に設定、Typeを「Edge」を選択したままで、X=0、X=100上のZ方向の2線を選択し(SHIFTキーを押しながら)、「Apply and continue」をクリックします。
  • Nameを「shell」に設定、Typeに「Faces」を選択、ビュー内の「Face_1_1」を選択、「Apply」をクリックします。

GEOMモジュールにエキスポート

  • グループ設定をGEOMモジュールにエキスポートします(メニューより、Features/Export to GEOM)

メッシュ

Meshモジュールを起動します。

Mesh_1を作成:(メニューより、Mesh/Create Mesh)

  • ジオメトリ:Face_1_1
  • 2Dアルゴリズム:自動四角形メッシュ化(Quadrangle:Mapping)
  • 1Dアルゴリズム:セグメント数=20
  • ダイアログをApplyし、Mesh_1をComputeします。

サブメッシュを作成:(メニューより、Mesh/Create Sub-mesh)

  • メッシュ:Mesh_1
  • ジオメトリ:divZ
  • アルゴリズム:Wire Discretisation
  • Hypothesis(仮設)にNumber of Segmentsを設定(4分割、等分布)します。
  • Mesh_1をComputeします。

ジオメトリよりグループを作成します(メニューより、Mesh/Create Groups from Geometry)

  • メッシュ:Mesh_1
  • Elements:Geometryのfixshell
  • ダイアログを「Apply and Close」します。

Asterコマンドファイルを作成

Asterコマンドファイルの雛形作成

AsterStudyモジュールを起動します。

アシスタントも用いてコマンドファイルの雛形を作成します(メニューより、Operations/Add Stage with Assistant/Modal analysis)

  • メッシュ:Mesh_1
  • 解析モデル:3D(のちほどDKTに変更します)
  • 材料定数:
    • ヤング率:132000
    • 質量密度:8.96e-9
    • ポアソン比:0.343
  • 拘束条件:
    • グループ:fix
    • DX=DY=DZ=0
  • 固有モード探索の基準:「N first eigenmodes」を選択、周波数の数を「5」に設定
  • 結果ファイル(.rmed)の保存場所を指定します。

Asterコマンドファイルを修正

有限要素モデルを3DからDKTに変更します。

有限要素の選択
model = AFFE_MODELE(AFFE=_F(MODELISATION=('DKT', ), # シェルを指定
                            PHENOMENE='MECANIQUE',
                            TOUT='OUI'),
                    MAILLAGE=mesh)

shellグループに板厚を設定します(メニューより、Commands/Model Definition/AFFE_CARA_ELEM)。

シェルの設定
elemprop = AFFE_CARA_ELEM(COQUE=_F(EPAIS=10.0, # シェルの厚さを設定
                                   GROUP_MA=('shell', )),
                          MODELE=model)

境界条件に回転自由度を追加します。
LIAISON='ENCASTRE'を用いて全自由度拘束でも可能です。

mecabc = AFFE_CHAR_MECA(DDL_IMPO=_F(DRX=0.0, # 追加
                                    DRY=0.0, # 追加
                                    DRZ=0.0, # 追加
                                    DX=0.0,
                                    DY=0.0,
                                    DZ=0.0,
                                    GROUP_MA=('fix', )),
                        MODELE=model)

モーダル解析の前処理を修正

モーダル解析の前処理
ASSEMBLAGE(CARA_ELEM=elemprop, # 追加
           CHAM_MATER=materfl,
           CHARGE=(mecabc, ),
           MATR_ASSE=(_F(MATRICE=CO('rigidite'),
                         OPTION='RIGI_MECA'),
                      _F(MATRICE=CO('masse'),
                         OPTION='MASS_MECA')),
           MODELE=model,
           NUME_DDL=CO('numeddl'))

結果の出力を修正します。

結果出力
IMPR_RESU(FORMAT='MED',
          RESU=_F(CARA_ELEM=elemprop, # 追加
                  RESULTAT=result),
          UNITE=80)

結果(変形の形状)

1次:630.2Hz

2次:1225.34Hz

3次:3946.98Hz

4次:6167.8Hz

5次:6633.12Hz

ソースコード

以下にソースコードを示します。

ここから(1次メッシュの場合)
DEBUT(LANG='EN')

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

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

elemprop = AFFE_CARA_ELEM(COQUE=_F(EPAIS=10.0,
                                   GROUP_MA=('shell', )),
                          MODELE=model)

mater = DEFI_MATERIAU(ELAS=_F(E=132000.0,
                              NU=0.343,
                              RHO=8.96e-09))

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

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

ASSEMBLAGE(CARA_ELEM=elemprop,
           CHAM_MATER=materfl,
           CHARGE=(mecabc, ),
           MATR_ASSE=(_F(MATRICE=CO('rigidite'),
                         OPTION='RIGI_MECA'),
                      _F(MATRICE=CO('masse'),
                         OPTION='MASS_MECA')),
           MODELE=model,
           NUME_DDL=CO('numeddl'))

result = CALC_MODES(CALC_FREQ=_F(NMAX_FREQ=5),
                    MATR_MASS=masse,
                    MATR_RIGI=rigidite,
                    OPTION='PLUS_PETITE')

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

FIN()