Code_Aster入門
理論:コマンドファイルの流れと検証の考え方
概要
Code_Asterは無料でも、使いこなすのが難しいと聞きます。何が違うのですか?
書き方の独特さと、検証資料の多さだ。Code_Asterはフランス電力公社が原子力プラントの構造評価のために作ったソルバーで、解析をコマンドファイル(.comm)という一種のPythonのスクリプトで記述する。命令の名前はフランス語の略語(LIRE_MAILLAGE=メッシュを読む、AFFE_MODELE=モデルを割り当てる、など)で、最初は戸惑う。一方で、数千件の検証例題と、その理論的な説明が公開されていて、「この機能はどの例題で確かめられているか」をたどれる。これは他のオープンソースにはない強みだ。入口としては、Salome-Mecaという統合環境で、メッシュを作り、AsterStudyでコマンドを組み立て、結果を見る、という一連の作業を、理論解のある簡単な問題で一度通してみるのがいい。
静解析のコマンドの流れ
- LIRE_MAILLAGE:メッシュ(MED形式)を読み込む。
- AFFE_MODELE:要素の種類を指定する(PHENOMENE='MECANIQUE'、MODELISATION='3D'など)。
- DEFI_MATERIAU・AFFE_MATERIAU:材料(ヤング率・ポアソン比)を定義し、メッシュのグループに割り当てる。
- AFFE_CHAR_MECA:拘束(DDL_IMPO)と荷重を与える。
- MECA_STATIQUE で解き、CALC_CHAMP で応力などを計算し、IMPR_RESU で結果を出力する。
照合に使う梁の理論
P は先端荷重、L は長さ、E はヤング率、I は断面二次モーメント、b と h は断面の幅と高さ、G はせん断弾性係数、A は断面積、k はせん断補正係数。
原子力の検証から生まれた公開ソルバー
Code_Asterは1989年からフランス電力公社で開発され、2001年にオープンソースとして公開された。原子力の規制当局に解析の根拠を示す必要から、機能を追加するたびに検証例題と理論資料を書くことが開発の規則になっている。その結果、オープンソースでありながら、品質保証の資料の厚さでは商用ソルバーにも引けを取らない、珍しい存在になった。
計算例
例1:鋼の片持ち梁(幅50 mm・高さ100 mm、先端に1 kN、単位はN・mm・MPa)
| 長さ(長さ/高さ) | 曲げのたわみ | せん断の寄与 | 合計 | 最大曲げ応力 |
|---|---|---|---|---|
| 1,000 mm (10) | 0.3810 mm | 0.0030 mm(0.8%) | 0.3839 mm | 12.0 MPa |
| 500 mm (5) | 0.0476 mm | 0.0015 mm(3.1%) | 0.0491 mm | 6.0 MPa |
E = 210,000 MPa、ポアソン比0.3、断面二次モーメントは4.167×10⁶ mm⁴。梁が短いほどせん断変形の割合が増え、3次元要素の結果は梁理論より少し大きくなる。
例2:単位の取り違え
メッシュをmmで作ったのにヤング率を210×10⁹(Paの値)で入れると、たわみは3.81×10⁻⁷ mmになり、正しい値の100万分の1になる。Code_Asterは単位を持たないので、この誤りはエラーにならない。
3次元のメッシュで解いたら、たわみが0.30 mmくらいしか出ませんでした。何が悪いのですか?
要素の次数を疑う。1次の四面体要素(4節点)は曲げを表すのが苦手で、変形を実際より小さく見積もる「硬すぎる」振る舞いをする。梁の高さ方向に数個しか要素がないと、たわみが理論値より2割以上小さくなることも珍しくない。2次の四面体(10節点)や2次の六面体に変えると、同じくらいの要素数でも0.38 mm前後に近づくはずだ。Code_Asterでは、メッシュを2次にする(Salomeで2次要素を指定する、またはCREA_MAILLAGEで変換する)だけで、モデルの指定(MODELISATION='3D')はそのまま使える。さらに、要素を細かくしたときに値が変わらなくなるかを確かめれば、この例題の検証は完了だ。理論解との差が0.8%(せん断の寄与)程度に収まれば、境界条件と荷重の与え方も正しいと判断できる。
始め方の流れ
- Salome-Mecaを導入し、付属の例題を1つ実行する。
- 片持ち梁の形状とメッシュを作り、拘束面・荷重面のグループを定義する。
- AsterStudyでコマンドを組み、単位系を決めて材料と荷重を入れる。
- 結果のたわみと応力を梁理論と比べる。
- 同じ機能を使う公式の検証例題を探し、設定の参考にする。
「荷重が1000倍になっていた解析」
ある受託解析で、Code_Asterの結果の応力が、手計算の1000倍になっていた。メッシュはmで作られていたのに、荷重は図面どおりkNのつもりで「1」ではなく、Nに直そうとして1000を掛けた値を圧力として面に与え、さらに面積はm²で計算されていた。単位を持たないソルバーでは、どの量をどの単位で入れたかを入力の冒頭にコメントで明記し、最初に片持ち梁のような既知の問題で桁を確かめる手順を決めて、同じ誤りは出なくなった。
よくある間違い
間違いと対策
| 間違い | 起きること | 対策 |
|---|---|---|
| 単位系が不統一 | 桁違いの結果 | N・mm・MPa等で統一 |
| 1次四面体で曲げ | たわみを過小評価 | 2次要素 |
| グループ名の不一致 | 荷重が掛からない | メッシュとコマンドで確認 |
| 拘束不足 | 剛体運動でエラー | 自由度を確認 |
| 既知解で確かめない | 誤りに気づかない | 片持ち梁で検証 |
関連する内容も知りたいです。
関連するページはCode_Aster構造解析、Code_Aster接触解析、CalculiX入門、SALOMEメッシュ、片持ち梁の曲げ(集中荷重)が参考になる。
関連トピック
なった
詳しく
報告