はじめに†
- Salome-Mecaで行う(FEM解析全般に言えることだけど)計算は、「弾性解析」と「弾塑性解析」があります。
- 弾性解析→物体にかかる力がゼロになったときに、もとの形に戻る
- 弾塑性解析→物体にかかる力がゼロになったときに、もとの形に戻らない(変形したまま)
- また、弾性線形解析は荷重-変位のグラフが直線になるのに対し、弾塑性解析はグラフが直線になりません。このことから弾塑性解析の方法を「材料非線形」とも言います。
- モデルについて、今回はシンプルな鋼材、片持ち梁、先端荷重で行います。
- 使用ツールについて、今回の説明ではSalome-Meca2019を使用しています。
Salome-Mecaの起動→ジオメトリの作成†
Salome-Meca2019を起動†
プルダウンメニューから「Geometry」を選択†
ボックスの作成†
- Dx=100,Dy=10,Dz=20→適用して閉じる
ジオメトリのグループの作成†
- 後で載荷面、固定面の設定をするために必要な箇所について、この段階でグループを作成します。
- オブジェクトブラウザーの「Box_1」のところで右クリック→「グループを作成」をクリック
固定面†
- 「オブジェクトの種類」のところで右から2番目の□にチェックを入れる
- 原点側の面をクリック→追加
- 名前をわかりやすいようにつける(ここでは「kotei」とする)→適用して閉じる
載荷面†
- 「オブジェクトの種類」のところで右から2番目の□にチェックを入れる
- 載荷面の反対の面をクリック→追加
- 名前をわかりやすいようにつける(ここでは「saika」とする)→適用して閉じる
メッシュの作成†
メッシュの切り方の設定†
- プルダウンメニューから「Mesh」を選択
- オブジェクトブラウザーで、上で作成した「Box_1」を選択→メッシュを作成(左側にある方)を選択
- 3D→アルゴリズム「NETGEN 3D」を選択→詳細設定セットの割当て→「3D Automatic Tetrahedralization」をクリック
- 要素長設定(メッシュの細かさの設定)をする。モデルに対してあまりにも大きいと思ったような解析結果にならず、逆に細かいと計算に時間がかかったりエラーが出たりする。
- 今回はDx=100,Dy=10,Dz=20のモデルのため、最大要素長=2とする。長さのところに「2」を入力→ok
メッシュを切る†
- オブジェクトブラウザーで、上で作成した「Mesh_1」を選択→メッシュを作成(右側にある方)を選択
グループの作成†
- ジオメトリで作成したグループをメッシュに反映させる
- 「Mesh_1」で右クリック→「ジオメトリのグループを作成」をクリック
- Geometryで作成したBox_1のグループ「saika」「kotei」を選択→適用して閉じる
- オブジェクトブラウザーに反映され画像のようになっていれば成功
- メッシュの作成は以上
AsterStudyの設定†
メッシュの読み込み†
- メッシュファイルを読み込む設定をします
- 「メッシュ」→「Read a Mesh」を選択
- Mesh file location:Mesh_1(作成したメッシュ)、Mesh file format:Med を選択してok
- 左下のInfomationにこのように表示されればok
mesh = LIRE_MAILLAGE(
FORMAT='MED',
UNITE=20
Model Definition (解析方法について)†
- 解析の方法の設定をします
- 「Model Definition」→「Assign finite element」を選択
- 「メッシュ」が「mesh(LIRE_MAILLAGE)」になっているか確認
- 「Finite element assignement」を1itemに増やす→「Edit」
- Everywhere:Yes Phenomenon:Mechanic Modelisation:3Dを選択→ok
- 左下のInfomationにこのように表示されればok
model = AFFE_MODELE(
AFFE=_F(
MODELISATION=('3D', ),
PHENOMENE='MECANIQUE',
TOUT='OUI'
),
MAILLAGE=mesh
)
Material(材料の設定)†
- 上のメニューの「Function and Lists」から「Define function」を選択
- Parameter name:EPSI(ひずみ),Resu_name:SIGM(応力)を入力
- 座標→editをクリック
| EPSI | SIGM |
1 | 0.0015 | 105 |
2 | 0.05 | 200 |
3 | 0.2 | 300 |
- ↑のように入力
- 最初の座標が(0.0015,105)なので、EPSI(歪)が 0.0015 までは、弾性であり、0.0015 以上は塑性となる。(降伏点が 105Mpa となる。)
- ok
- functionの設定は以上。
func = DEFI_FONCTION(
NOM_PARA='EPSI',
NOM_RESU='SIGM',
VALE=(0.0015, 105.0, 0.05, 200.0, 0.2, 300.0)
)
- 上のメニューの「Material」から「Define a material」を選択
- 「Linear isotropic elastcity」を選択
- Young's modulus=ヤング率
- Puisson's ratio=ポアソン比
- それぞれ入力→ok→わかりやすい名前をつける(ここでは「kou」)→ok
- ここでは鋼材をヤング率=20.0kN/mm2、ポアソン比=0.3とする
kou = DEFI_MATERIAU(
ELAS=_F(
E=200000.0,
NU=0.3
),
TRACTION=_F(
SIGM=func
)
)
- 上のメニューの「Material」から「Assign a material」を選択
- 「Model」にチェック→Model=model(AFFE_MODELE)になってることを確認
- 「Material assignment」を追加→編集
- Everywhere:yesを選択(全体が1つの材料のため)
- Material:kou(DEFI_MATERIAU)を選択→ok
fieldmat = AFFE_MATERIAU(
AFFE=_F(
MATER=(kou, ),
TOUT='OUI'
),
MODELE=model
)
Function and Lists†
DEFI_LIST_REEL(解析の間隔の設定)†
- 今回は、1回の解析を何回かに分けて解析します。
- どれくらいの細かさに分けるか設定します。
- 上のメニューの「Function and Lists」から「DEFI_LIST_REEL」を選択
- DEBUT:0を入力(DEBUTは開始時間の設定。基本的に0にする)
- 「INTERVALLE」をクリック→edit
- Until:1,Interbal type:Step length,Value:0.1を入力→ok(この設定にすると、1.0倍の変化を0.1倍刻みで変化させて10回分の解析結果を見ることができる)
- ok
listr = DEFI_LIST_REEL(
DEBUT=0.0,
INTERVALLE=_F(
JUSQU_A=1.0,
PAS=0.1
)
)
DEFI_LIST_INST (解析のオプションなど)†
- timeを分けて解析するときのオプションを設定しますが、ここではオプションは必要ないので基本の設定を行います。
- 上のメニューの「Function and Lists」から「DEFI_LIST_INST」を選択
- Method:MANUELを選択
- DEFI_LISTのeditをクリック
- Time step list:listr(DEFI_LIST_REEL)を選択→ok→ok
times = DEFI_LIST_INST(
DEFI_LIST=_F(
LIST_INST=listr
),
METHODE='MANUEL'
)
Define function (変化の度合いについて)†
- 変化の度合いを設定します。
- 上のメニューの「Function and Lists」から「Define function」を選択
- Parameter name:Timeを選択
- 座標を選びedit
- 図のように入力→ok→ok
- この設定だとtimeが0のとき0倍、1のときに1倍になる(基本的にこの設定)
func0 = DEFI_FONCTION(
NOM_PARA='INST',
VALE=(0.0, 0.0, 1.0, 1.0)
)
BC and Load (荷重と固定について)†
- 荷重と固定についての設定
- 上のメニューから「BC and Load」→「Assign mechanical load」を選択
Enforce DOF(固定)†
- 固定についての設定(Enforce DOF=強制変位 ここでは強制変位の設定を0にする=固定ということにしている)
- 「Enforce DOF」を選択
- 「Group of element」でジオメトリで設定した固定面を選択(ここでは「kotei」)
- DX,DY,DZ=0を入力→ok
FORCE_FACE(面載荷)†
- 荷重についての設定(FORCE_FACE=面載荷 どこか1つの面に荷重をかける場合これを選択)
- 「FORCE_FACE」を選択(Enforce DOFよりもかなり下にある)
- 「Group of element」でジオメトリで設定した載荷面を選択(ここでは「saika」)
- FZ=-10を入力(面載荷の場合は載荷する荷重を載荷する面積で割る ここでは10.0N/mm2、方向を考慮してマイナスとする)
- ok→ok
load = AFFE_CHAR_MECA(
DDL_IMPO=_F(
DX=0.0,
DY=0.0,
DZ=0.0,
GROUP_MA=('kotei', )
),
FORCE_FACE=_F(
FZ=-10.0,
GROUP_MA=('saika', )
),
MODELE=model
)
- 荷重の設定は以上
Analysys(設定をまとめる)†
- 今までのモデルの設定、材料の設定、荷重と固定の設定を紐付け、弾塑性解析(材料非線形)のための諸設定をします。
STAT_NON_LINE(非線形解析)†
- 上のメニューの「Analysys」から「STAT_NON_LINE(非線形解析)」を選択
- Model:model(AFFE_MODELE),Material field:fieldmatを選択
- Loadsのところを1itemに増やしedit
- Load:load(設定した荷重),Multipiler function:func0(上のFunctions and Listsで設定した0倍→1倍に変化するよう設定したfunctionを選択 材料の降伏点を設定したfunctionと間違えないように)を設定→ok
- Timestapping:listr(上のFunctions and Listsで設定したtimeの変化のリスト)を選択
COMPORTEMENT(計算モデル、適用する式の設定)†
- 下の方へスクロールし、「COMPORTEMENT」のところを1itemに増やしedit
- RELATION(構成式):VMIS_ISOT_TRAC(Von Mises降伏条件、等方硬化則、多直線近似)を選択
- DEFORMATION(座標変換モデル):SIMO_MIEHE(大変形解析)を選択→ok
NEWTON(ニュートン法の設定)†
- 今回はニュートン法の弾塑性解析をします。
- Method:NEWTON(ニュートン法)を選択
- 下の「NEWTON」のところのeditを押す
- MATRICE:TANGENTE(接線剛性)を入力
- REAC_ITER:1を入力(ニュートン法の接線の傾きを何ステップごとに更新するか 1にしといたほうがいい、デフォルトは0)→ok
CONVERGENCE(収束判定の設定)†
- CONVERGENCEで収束判定の設定をします。
- 下の「CONVERGENCE」のところのeditを押す
- RESI_GLOB_RELA(相対誤差):1.0e-6を入力
- ITER_GLOB_MAXI(最大反復数):100を入力→ok
- この2つはあくまで目安なので、解析がうまくいかないときなど、必要に応じて変更します。
- okを押す
resnonl = STAT_NON_LINE(
CHAM_MATER=fieldmat,
COMPORTEMENT=_F(
DEFORMATION='SIMO_MIEHE',
RELATION='VMIS_ISOT_TRAC'
),
CONVERGENCE=_F(
ITER_GLOB_MAXI=100,
RESI_GLOB_RELA=1e-06
),
EXCIT=_F(
CHARGE=load,
FONC_MULT=func0
),
INCREMENT=_F(
LIST_INST=listr
),
METHODE='NEWTON',
MODELE=model,
NEWTON=_F(
MATRICE='TANGENTE',
REAC_ITER=1
)
)
Post Processing(どの数値を計算するか)†
CALC_CHAMP†
- 上のメニューから「Post Processing」→「CALC_CHAMP」を選択
- CONTRAITE:SIGM_NOEU(節点の応力(6成分))を選択
- DEFORMATION:EPSI_NOEU (節点のひずみ)を選択
- CRETERES:SIEQ_NOEU (節点の応力(ミーゼス応力や主応力など)) を選択
- FORCE:REAC_NODA(節点の反力)を選択
- 補足:ちなみにNOEUは節点(NOEUd(フランス語))、ELGAはガウスの積分点(ELement GAuss point)、ELNOは要素(のどこか?)(ELement Node)だとかで、ParaVisでコンター図を描きたいときは Point Data であるNOEUを出力する必要がある。ELGAやELNOは、ParaVis上でSpredSheetViewを開き、Field Data や Cell Data を選択すれば値が見れる。
- Result:resnonl(STAT_NON_LINE)になってるのを確認→ok
unnamed = CALC_CHAMP(
CONTRAINTE=('SIGM_NOEU', ),
CRITERES=('SIEQ_NOEU', ),
DEFORMATION=('EPSI_NOEU', ),
FORCE=('REAC_NODA', ),
RESULTAT=resnonl
)
Output(出力設定)†
- 上のメニューから「Output」→「Set output results」を選択
- Result file location:パソコン上の任意の場所を選択(そこにparavisを見るための.medファイルが保存される)
- Resultsを追加→編集
- Result:resnonl(STAT_NON_LINE)を選択→「NOM_CHAM」という欄が出る
- NOM_CHAM:DEPL(変位)を選択→ok
- 同じようにResult:unnamed(CALC_CHAMP)を選択→「NOM_CHAM」が出る
- NOM_CHAM:CALC_CHAMPで選択した4つの要素(SIGM_NOEU,EPSI_NOEU,SIEQ_NOEU,REAC_NODA)を選択→ok
IMPR_RESU(
FORMAT='MED',
RESU=(_F(
NOM_CHAM=('DEPL', ),
RESULTAT=resnonl
), _F(
NOM_CHAM=('EPSI_NOEU', 'SIGM_NOEU', 'SIEQ_NOEU', 'REAC_NODA'),
RESULTAT=unnamed
)),
UNITE=80
)
History Viewで計算†
- ここまで来たら、一度.hdfファイル(salomeの設定ファイル)を保存しておく。
- Casesの中の「CurrentCase」をクリック→Stage_1の横の+をクリック→下のほうにある「Run」をクリック→計算開始
- Auto Refresh:5s にすると計算の経過を見れる(5秒ごとに更新してくれる)
- 成功すると緑色、失敗すると赤になる。
- 補足:Salome-Meca2017(だったと思う)以前では失敗すると赤色か黄色になるとのことです。そのときの赤色は深刻なエラー(ソフト構成上の問題とか)、黄色は計算エラー(パラメータのミス等)らしい。
Paravisで計算結果の確認†
- プルダウンメニューから「Paravis」を選択
- 左側のパイプのブラウザーにある「builtin:」を右クリック→「open」を選択→先ほどの計算結果(.medファイル)を開く
- 計算結果が出てくる
- 初期設定で「Solid Color」となっているところをプルダウンで「reslin_DEPL(変位)」や「unnamed_EPSI_NOEU(ひずみ)」等に変えると、任意のパラメータを確認することができる
変形の確認†
- 任意のパラメータに変更(ここではreslin_DEPL)
- オブジェクトインスペクターの一番上にある「適用」を押す
- 上のメニューの「フィルター」から、「common」→「Warp By Vector」を選択
- パイプのブラウザーに「WarpByVector1」が追加される→選んでオブジェクトインスペクターの一番上にある「適用」を押す
- 構造物の変形が確認できる
数値の確認†
- 右上の「RenderView1」の横にあるボタンを押す(どちらでもよい)
- 一番下の「SpreadSheet View」を選択
- メッシュを切った際のノード(節点)ごとの各パラメータの数値が表示される
任意の点の数値を確認したい場合†
- Select Points ○○ (変位を見たい節点を選択する)
- (上の方にある)Show only selected Elements.
変化の度合いを10段階で確認†
- 今回はDEFI_LIST_REELで設定したtime step listの通りに10段階で解析されており、右上の方にある「Time」を設定するとその段階での変化の度合いを確認することができる。
- 参考までに、縦軸が荷重(time step list)、横軸が先端の変位のグラフをgnuplotで作成してみた。
- 途中まで線形で、ある程度変化したところで非線形になっているのがわかる。
- 補足:timeを変化させて数字を抽出することで、いろいろなグラフを作ることができます。(応力-ひずみ曲線とか)