Code_Asterのコマンドファイル解説

この資料はオープンCAE勉強会＠岐阜で公開されているFS氏ご提供の「[SALOME-Mecaの使用法解説：1.0 基本 Salomeの使い方](http://opencae.gifu-nct.ac.jp/pukiwiki/index.php?plugin=attach&refer=SALOME-Meca%A4%CE%BB%C8%CD%D1%CB%A1%B2%F2%C0%E2&openfile=01-00.pdf)」をSalome-Meca 2018（Code_Aster 13.6）のAsterStudyモジュールを用いて設定したコマンドファイルについて解説したものです。

- Code_Asterのコマンドファイルは「Python」形式で記述されています。
- コマンドはフランス語を元に設定されています。

コマンドファイルの詳細は次の通りです。

---
# DEBUT（Start）

```python
DEBUT(LANG='EN')
```

DEBUT（「コマンドファイル」を開始します。）

- LANG（メッセージファイルの言語）=EN（英語）

---
# LIRE_MAILLAGE（Read a mesh）

```python
mesh = LIRE_MAILLAGE(identifier=u'0:1',
                     FORMAT='MED',
                     UNITE=20)
```

mesh = LIRE_MAILLAGE（「メッシュ」の形式設定と読み込み）

- FORMAT=MED（読み込むメッシュ形式にMED形式を指定）
- UNITE（論理ユニット番号）=20

---
# AFFE_MODELE（Assign finite element）

```python
model = AFFE_MODELE(identifier=u'1:1',
                    AFFE=_F(MODELISATION=('3D', ),
                            PHENOMENE='MECANIQUE',
                            TOUT='OUI'),
                    MAILLAGE=mesh)
```
model = AFFE_MODELE（有限要素の選択）

- MODELISATION（モデル化）=3D（３次元ソリッド要素）
- PHENOMENE（現象）=MECANIQUE（機械的力学）
- TOUT（全体）=OUI（Yes）
- MAILLAGE=mesh（meshに割り当て）

---
# DEFI_MATERIAU（Define a material）

```python
mater = DEFI_MATERIAU(identifier=u'2:1',
                      ELAS=_F(E=130300.0,
                              NU=0.343))
```
mater = DEFI_MATERIAU（材料の定義）

- ELAS（等方性弾性材料）
  - E（ヤング率）=130,300（MPa）
  - NU（ポアソン比）=0.343

---
# AFFE_MATERIAU（Assign a material）

```python
fieldmat = AFFE_MATERIAU(identifier=u'3:1',
                         AFFE=_F(MATER=(mater, ),
                                 TOUT='OUI'),
                         MAILLAGE=mesh)
```

fieldmat = AFFE_MATERIAU（材料の割り当て）

- MATER=mater（割り当てる材料）
- TOUT（全体）=OUI（Yes）
- MAILLAGE=mesh（meshに割り当て）

---
# AFFE_CHAR_MECA（Assign mechanical load）

```python
load = AFFE_CHAR_MECA(identifier=u'4:1',
                      DDL_IMPO=_F(DX=0.0,
                                  DY=0.0,
                                  DZ=0.0,
                                  GROUP_MA=('fix', )),
                      MODELE=model,
                      PRES_REP=_F(GROUP_MA=('load', ),
                                  PRES=0.1))
```

load = AFFE_CHAR_MECA（機械的境界条件の割り当て）

- DDL_IMPO（強制変位）
  - DX=0.0（X方向変位を0.0）
  - DY=0.0（Y方向変位を0.0）
  - DZ=0.0（Z方向変位を0.0）
  - GROUP_MA=fix（強制変位を与えるグループ名）
- MODELE=model
- PRES_REP（圧力荷重）
  - GROUP_MA=load（圧力荷重を与えるグループ名）
  - PRES=0.1（圧力0.1MPa）

---
# MECA_STATIQUE（Static mechanical analysis）

```python
reslin = MECA_STATIQUE(identifier=u'5:1',
                       CHAM_MATER=fieldmat,
                       EXCIT=_F(CHARGE=load),
                       MODELE=model)
```

reslin = MECA_STATIQUE（解析の種類として静的線形構造解析を設定）

- CHAM_MATER=fieldmat（材料の場）
- EXCIT（活性化する荷重）
- CHARGE（荷重）=load
- MODELE=model

---
# CALC_CHAMP

```python
reslin = CALC_CHAMP(identifier=u'6:1',
                    reuse=reslin,
                    CONTRAINTE=('SIGM_ELNO', 'SIGM_NOEU'),
                    CRITERES=('SIEQ_ELNO', 'SIEQ_NOEU'),
                    RESULTAT=reslin)
```
reslin = CALC_CHAMP（場の量の計算）

- reuse（使う結果名）=reslin（ここでは再利用）
- CONTRAINTE（応力）
   - SIGM_ELNO（応力（要素））
   - SIGM_NOEU（応力（節点））
- CRITERES（基準）
  - SIEQ_ELNO（相当応力（要素））
  - SIEQ_NOEU（等価応力（節点））
- RESULTAT=reslin

<!--
SIGM_NOEU：要素ごとのノードの値からノードで平均化された応力場。Stress field averaged on nodes from values on nodes per elements
SIEQ_NOEU：要素ごとのノードの値からノードで平均化された等価応力場。
SIGM_ELGA：ガウスポイントの応力（実際には方程式から計算）
SIEQ_ELGA：ガウスポイントの等価応力 
SIGM_ELNO：ガウスポイントの値から外挿することで取得したノードの応力Stress on nodes obtained by extrapolation from values in Gauss points

バージョン	 応力（要素）	 相当応力（要素）	 応力（節点）	 等価応力（節点）
STA10.3以前	 SIGM_ELNO_DEPL	 EQUI_ELNO_SIGM	 SIGM_NOEU_DEPL	 EQUI_NOEU_SIGM
STA10.5以降	 SIGM_ELNO	 SIEQ_ELNO	 SIGM_NOEU	 SIEQ_NOEU
-->

---
# IMPR_RESU（Set output results）

```python
IMPR_RESU(identifier=u'7:1',
          FORMAT='MED',
          RESU=_F(NOM_CHAM=('SIGM_NOEU', 'SIEQ_NOEU', 'DEPL'),
                  RESULTAT=reslin),
          UNITE=80)
```
IMPR_RESU（結果の出力）

- FORMAT=MED（出力するバイナリ形式にMED形式を指定）
- NOM_CHAM
  - SIGM_NOEU（応力（節点））
  - SIEQ_NOEU（等価応力（節点））
  - DEPL（変位量）
-   RESULTAT=reslin
-   UNITE（論理ユニット番号）=80

---
# FIN（End）

```python
FIN()
```
FIN（「コマンドファイル」を終了します。）

---
# 参考文献

1. PE構造力学研究所. [Salome-Mecaによる軸対称体の弾性解析（圧力容器の耐圧設計）](https://www.slideshare.net/stebee19/ax-symmetricpressurevesselelasticstressanalysis),(accessed 2020-02-09).
2. オープンCAE 学会資料翻訳委員会. [Code_Aster training/Module 1/01-overview](http://www.opencae.or.jp/wp-content/uploads/2019/12/01-overview.pdf),(accessed 2020-02-09).
3. オープンCAE 学会資料翻訳委員会. [Code_Aster training/Module 1/03-stepbystepcalculation](
http://www.opencae.or.jp/wp-content/uploads/2019/12/03-stepbystepcalculation.pdf),(accessed 2020-02-09).
4. [Code_Aster & Salome-Meca 日本語解説.バージョンによる違い](https://sites.google.com/site/codeastersalomemeca/home#TOC--15),(accessed 2020-02-09).