Salome-Meca 2019を用いた境界条件の設定（SSLV）

# はじめに

この資料は[オープンCAE勉強会＠岐阜](http://opencae.gifu-nct.ac.jp/pukiwiki/index.php?OpenCAE%20Users%20Wiki)で公開されているFS氏ご提供の「[SALOME-Mecaの使用法解説](http://opencae.gifu-nct.ac.jp/pukiwiki/index.php?OpenCAE%20Users%20Wiki)：2.0 境界条件の設定」をSalome-Meca 2019で採用されたWizard（Add Stage with Assistant）を用いて設定し、同じく新しく採用されたPost-processを用いて結果評価を行います。

# 本演習の目的

[基本編](https://qiita.com/Jun_Tatsuno/items/d7246abcebaff3e99b72)では、既に設定された方法（Wizard（Add Stage with Assistant））を使って解析しました。
この方法では、荷重の負荷方法としては、面圧（面に垂直方向の圧力）の設定しかできません。
このため、この章では、点、線、面、体積に各方向の荷重を負荷する、あるいは変位を設定して解析する方法について説明します。

## ジオメトリ

モデルは、荷重の負荷方法で、どのように変化するかが良くわかるモデルにします。

* モデル形状内寸
   * 長さ：10mm
   * 深さ：5mm
   * 幅　：3mm
   * 板厚：0.5mm
のL字モデル

## 材料

* 材料Cu
   * ヤング率：130,300MPa
   * ポアソン比：0.343


# 解析手順

~/CAE/bar-2/というフォルダーを作り、この中で解析することにします。

## モデル形状のインポート

Salome-Meca2019を起動します。
Salome-Mecaの起動画面から、SALOMEモジュールの選択ドロップダウンリストを「Geometry」に変更します。

メニューバーより、「File」＞「Import」＞「STEP」で、L字モデル「bar-2.stp」をインポートします。

単位変換を行うかWarning画面が表示されますので、「No」をクリックします。

![2020-04-30-13-07-56.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/201403/7742e06f-0901-f151-c57d-d060ce57eef2.png)

## グループ化

境界条件を与えるためのグループ化を行います。
グループ化は、Salome-Mecaのメインツールバーで、「NewEntity」＞「Group」＞「Create Group」とし、「Create Group」画面上でトポロジ選択、グループ名の入力、メイン画面でジオメトリを選択して行います。

|トポロジ|グループ名|説明|
|:--|:--|:--|
|面|loadF||
|線|loadL|外側の3mmのライン|
|点|loadP|外側のコーナー部|
|体積|loadV|モデル全体|
|面|fix|根元の固定部|

![BC0002.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/201403/731ce0e6-b1f5-db40-aff8-14fc257ca7bc.png)

## メッシュ作成

Salome-Mecaのメインツールバーで、「Geometry」と表示されている下向き矢印をクリックし、「Mesh」を選択します。
メニューバーより、「Mesh」＞「Create Mesh」をクリックし、「Create Mesh」画面を表示します。
名前はデフォルトの「Mesh_1」のままにします。
「Product_1」がGeometryフィールドにあることを確認します（そうでない場合は、Geometryの横にある曲線矢印を選択し、オブジェクト・ブラウザ上より、「Product_1」を選択します）。
メッシュタイプは「Any」のままとします。
「Assiign a set of hypotheses」から「3D:Automatic Tetralization」を選択します。

![2020-04-30-13-11-21.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/201403/764ea8fc-3d59-87eb-eba6-8d7cb8e0fe9d.png)

「Hypothesis Construnction」画面が表示されますので、「キャンセル」をクリックします。

![thermo002.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/201403/3d142016-041a-e81f-8d11-ae27ca035540.png)

「1D」タブをクリックします。
「Hypothesis」のGear（歯車）ボタンをクリックし、「Automatic Length」を選択します。

![thermo003.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/201403/0234b92c-8b18-c72e-6b86-20ff4a8faa7e.png)

ポップアップ表示される「Hypothesis Construnction」画面で、「Fineess」を「0.2」に変更して、「OK」をクリックします。

![thermo004.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/201403/91387bd1-3911-13e5-c653-af90da7f0aa6.png)

「Create mesh」画面に戻ります。
「Apply and Close」をクリックします。

メニューバーより、「Mesh」＞「Compute」を選択してメッシュを作成します。

メッシュ作成が終了すると、「Mesh computation succeed」画面がでるので、「Close」をクリックします。

「Mesh_1」を右クリックし、「Create Groups from Geometry」を選択します。
この手順は、Geometryモジュールで追加したグループがメッシュでも使用するために必要です。

Geometryモジュールで作成したグループのうち「loadP」はNodesグループに、それ以外はElementsグループに追加します。

![BC001.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/201403/ad1c237f-e1c9-ef49-7a3c-c479cb41ed46.png)

「Apply and Close」をクリックします。

# 境界条件の設定

ここで、色々な境界条件を設定して、確認します。
最初に、Wizard（Add Stage with Assistant）を使って、デフォルトの面圧の境界条件を設定し、設定された境界条件（Code_Aster）を修正して、他の境界条件に変える方法をとります。

## 面圧で指定（Wizard（Add Stage with Assistant）の方法）

デフォルトの面圧で設定します。
デフォルトの設定（[基本編](https://qiita.com/Jun_Tatsuno/items/d7246abcebaff3e99b72)に記載してある方法）。

* ヤング率：130,300MPa
* ポアソン比：0.343
* 固定：fix 0, 0, 0
* 負荷：loadF 0.5（面圧）

以上の条件でCode_Asterコマンドファイルを作成します。
この条件で解析した結果、

* 最大変位：0.033mm
* 最大相当応力：31.0MPa

となります。

## 面に働く荷重で指定

前節でできあがったCode_Asterコマンドファイルを修正して、面に働く荷重を設定します。

Code_Asterコマンドファイルを修正するために、Salome-MecaをAsterStudyモジュールのCase Viewタブに変更します。

変更前、ツリー上の

```python:bar-2.com（面圧で指定）
mecabc = AFFE_CHAR_MECA(DDL_IMPO=_F(DX=0.0,               # 変位の設定、値を設定
                                    DY=0.0,
                                    DZ=0.0,
                                    GROUP_MA=('fix', )),  # 平面を指定
                        MODELE=model)

mecach = AFFE_CHAR_MECA(MODELE=model,
                        PRES_REP=_F(GROUP_MA=('loadF', ), # 面圧（面に垂直）の設定、平面を指定
                                    PRES=0.5))            # 値（0.5MPa）を指定
```
上記のPRES_REPをFORCE_FACEに入れ換えます。
（下記に従って、追加、削除して入れ換えます。）

### FORCE_FACE の追加
ツリー上のコンセプト名「mecach」のAFFE_CHAR_MECA上で右クリックし、「Edit」を選択します。
右側のウィンドに項目名のリストが表れるので、この中からFORCE_FACEをチェックし、「0 items」横のアイコンををクリックして、行を追加します。
追加された行より、「Edit」を選択します。

### GROUP_MA の追加
「Group of element」をチェックし、「Edit」を選択します。
「2D elements」より、「loadF」をチェックし、「OK」をクリックします。

### 荷重の方向と値を設定
荷重の方向と値を設定します。
方向は面圧と同じ方向とするため、Y方向とします。
値の指定は、面荷重の指定の為、単位面積当たり荷重を指定します。
→面圧と同じ値となります。
したがって、「FY」をチェックし、値「0.5」を入力し、「OK」をクリックします。

### PRES_REP の削除
「PRES_REP」のチェックを外して削除します。
「OK」をクリックします。
以上でAsterStudyの設定は完了しました。
以下が設定し直したAFFE_CHAR_MECAの内容となります。

```python:bar-2.comm（面荷重）
mecach = AFFE_CHAR_MECA(FORCE_FACE=_F(FY=0.5,               # 面荷重の設定、値を指定（単位面積当たりの荷重）
                                      GROUP_MA=('loadF', )),# 平面を指定
                        MODELE=model)
```

設定結果を「フロッピィ」のアイコンをクリックして保存します。
「HistoryView」タブを選択し、「Cases」画面より、「RunCase_1」上で右クリックして「Delete」を選択します。
「Delete」画面で、「Yes」を選択して、古い計算結果を削除します。
「CurrentCase」を選択し、「Run」をクリックして、計算を開始します。
すべてが正常に実行されると、解析が正常に完了したことを示す緑色の丸が表示されます。
結果を確認すると、以下の値であり、面圧の結果と同じ結果が得られた。

* 最大変位 0.033mm
* 最大相当応力 31.0MPa

面荷重を指定することによって、面に働く荷重の方向を自由に設定できる。
（今回は、FYを選択したので、Y方向でありますが、FX、FZも選択できます。）

## 線に働く荷重で設定

前節でできあがったCode_Asterコマンドファイルの内容を下記のように変更します。

```python:bar-2.com（線荷重の設定）
mecach = AFFE_CHAR_MECA(FORCE_ARETE=_F(FY=0.417,              # 線荷重の設定、値を指定（単位長さ当たりの荷重）
                                       GROUP_MA=('loadL', )), # 線を指定
                        MODELE=model)
```

荷重の設定は、線分の為、単位長さ当たりの荷重を入力することに注意します。
この設定で前節と同様に計算します。
計算開始に当たって、古い計算結果を削除します。
計算結果は、下記であり、若干大きな値となりました。荷重を負荷させるラインを面の外側に設定したため、板厚分大きくなっています。

* 最大変位 0.053mm
* 最大相当応力 50.4MPa

## 点に働く荷重で設定

この設定も、Code_Asterコマンドファイルの内容を修正して計算します。
この内容は、下記のように設定します。

```python:bar-2.com（点荷重の設定）
mecach = AFFE_CHAR_MECA(FORCE_NODALE=_F(FY=1.25,               # 点荷重の設定、値を指定（1点当たりの荷重）
                                        GROUP_NO=('loadP', )), # 点を指定（点の場合は、GROUP_NO になることに注意）
                        MODELE=model)
```

荷重の設定は、1点当たりの荷重を入力することに注意します。
この設定で計算します。
計算開始に当たって、古い計算結果は削除します。
計算結果は、下記であり、線に働く荷重とほぼ同じ結果となっています。

* 最大変位 0.055mm
* 最大相当応力 56.1MPa

荷重を負荷させるところが、非対称となっているので、はりにねじりが生じています。

## 重力加速度で設定

### 材料設定に質量密度を追加

重力加速度には、ヤング率やポアソン比とともに質量密度が必要です。
単位はSI[mm]系としています。従って、質量密度の単位がton/mm<sup>3</sup> になっていることに注意してください。
ここでは、ベリ銅の材料定数として、以下を入力します。（機械実用便覧 第5版 日本機械学会より引用）

- 密度：$\rho$=8.96e<sup>-9</sup> Ton/mm<sup>3</sup>

ツリー上のDEFI_MATERIAU（Define a material）上で右クリックし、「Linear isotropic elasticity」の「Edit」を選択します。
「Density」をチェックし、値に「8.96e-9」を入力し、「OK」をクリックします。
「OK」をクリックし、質量密度の追加を終了します。

```python:bar-2.com（質量密度の設定）
mater = DEFI_MATERIAU(ELAS=_F(E=130300.0,
                              NU=0.343,
                              RHO=8.96e-09)) # 質量密度
```

### PESANTEURの設定

Gravitational acceleration（PESANTEUR）を設定します。
「Gravitational constant（重力加速度）」に値「9800」(mm/s<sup>2</sup>)を設定します。
「Direction」の3 itemsは、それぞれ、X方向、Y方向、Z方向を示しますので、重力方向が-Y方向のときは、「0」、「-1」、「0」と設定します。



```python:bar-2.com（重力加速度で設定）
mecach = AFFE_CHAR_MECA(MODELE=model,
                        PESANTEUR=_F(DIRECTION=(0.0, -1.0, 0.0), # 体積に働く荷重の設定、重力加速度の方向を指定
                                     GRAVITE=9800.0))            # 重力加速度
```

## 変位の設定
前項の設定に対し、点の Y 方向変位を 0.1mm 与えてみます。
変位は、DDL_IMPO（Enforce DOF）で設定します。
Code_Asterの設定は、下記。

```python:bar-2.com（変位の設定）
mecach = AFFE_CHAR_MECA(DDL_IMPO=_F(DY=0.1,                # 変位の設定、値を指定
                                    GROUP_NO=('loadP', )), # 点を指定
                        MODELE=model)
```

このコードで計算した結果が、下記となります。

* 最大変位 0.130mm
* 最大相当応力 133MPa

最大変位が 0.1mm以上になっていますが、これはXYZ方向の合成変位が0.130mmであり、Y 方向単独変位では0.11mm になっています。

# まとめ

以下に境界条件を設定する「AFFE_CHAR_MECA」コマンドの代表的なオペランドを示します。
荷重関係は、全て単位（点、長さ、面積、体積）当たりに働く荷重で設定するので注意が必要です。
圧力以外の荷重は、XYZ各方向で設定できます。
圧力は、面に垂直方向にしか設定できません。
変位は、全ての方向（XYZ）、全てのジオメトリ（点、線、面、体積）で設定できます。

「AFFE_CHAR_MECA」の代表的なオペランド

|区分||オペランド|意味|
|:--|:--|:--|:--|
|荷重|点に働く荷重|FORCE_NODALE|1点当たりの荷重|
||線に働く荷重|FORCE_ARETE|単位長さ当たりの荷重|
||面に働く荷重|FORCE_FACE|単位面積当たりの荷重|
||体積に働く荷重|FORCE_INTERNE|単位体積当たりの荷重<br>密度の値にすると1Gの加速度が働くことと等価<br>自重のたわみを計算できる|
||圧力|PRES_REP|面に垂直方向に働く圧力|
|加速度|重力加速度|PESANTEUR|モデル全体<br>自重のたわみを計算できる|
|変位|各部|DDL_IMPO|変位|

# Link

[YouTube動画](https://youtu.be/YT6FuQDb9T4)