OpenRadiossのキーワードのヘルパーの機能を使ってみよう
オープンCAEのアドベントカレンダー2023の投稿記事です。
OpenRadiossは解析設定にGUIがないためインプットファイル作成には少々(いや、だいぶ)難があります。
オープンCAE@関西の勉強会幹事の@mmer547さんがOpenRadiossのインプットファイルのヘルパー機能を作ってくれました。
で、こちら・・・
OpenRadiossの設定は数が多いため、全てをサポートしていくには少々時間がかかるでしょうが、取っ掛かりを作ってくれたのは大変ありがたいことです。
このような恩恵にあずかりまして、ちょっと使ってみようと思います。
※既にVS Codeはインストール済みとします。
VS Codeから拡張機能を追加
使い方は非常に簡単です。
まずはVS Codeを起動して拡張機能から「openradioss」と検索すればすぐに見つかるでしょう。
インストールをするとすぐにOpenRadiossのヘルパーが使えるようになります。
解析対象
少しOpenRadiossのヘルパー機能を使ってみようと思います。
解析設定はこちらを参考にします。
以前に作成をしたモデルをOpenRadiossで計算させるとこちらのようになります。
Buckling of a Tube Using Half Tube Mesh
OpenRadiossのヘルパー機能
解析設定の全てはここでは行いません。
試しにPART, PROP(シェルなどのプロパティ),MAT(材料特性)をヘルパー機能を使って設定してみます。
BEGIN
PART
PROP
MAT
「/BEGIN」はOpenRadiossのファイルの一番上に書く「ランネーム、入力マニュアルのバージョン、Starterランおよび入力の数、そして作業単位系を設定します。」の部分です。
OpenRadiossヘルパー機能を使うと登録されているスニペットコードから自動で適切なフォーマットで記述してくれます。
とっても便利です。
次は、PARTもやってみましょう。
PARTもこの通り。
しかし、以下のキーワードは未登録のようでヘルパー機能では出てきませんでした。
/PROP/SHELL
/MAT/PLAS_JOHNS
追加機能:ユーザースニペットで登録する
OpenRadiossのヘルパー機能では未登録のものはユーザースニペットでひとまず登録することで対応します。
このあたりは、まずユーザースニペットで自身だけが使えるようにしておい
てgithubのissueとかに上げながらディスカッションするのが良いのでしょう・・・
では、足りない機能は自身のユーザースニペットに追加します。
こちらから引用させてもらっています。
{
"[スニペット1]": {
"prefix": "[呼び出すためのショートカット]",
"body": [
"[出力コードの1行目]",
"[出力コードの2行目]",
"[...]"
],
"description": "[スニペットの説明文]" //任意
}, //カンマを追加
"[スニペット2]": {
"prefix": "[呼び出すためのショートカット]",
"body": [
"[出力コードの1行目]",
"[出力コードの2行目]",
"[...]"
],
"description": "[スニペットの説明文]" //任意
} //最後のカンマは要らない
}
ここでrad.jsonという適当なファイルを作成して以下のように登録していきます。
rad.json
// シェルプロパティ
"/PROP/TYPE1(SHELL)":{
"prefix":"/PROP/TYPE1(SHELL)",
"body":[
"#https://2022.help.altair.com/2022/hwsolvers/ja_jp/rad/topics/solvers/rad/prop_type1_shell_starter_r.htm"
"#mm-kg-ms"
"/PROP/SHELL/${1:prop_ID}/${2:unit_ID}",
"${3:Pshell_title}",
"# Ishell Ismstr Ish3n Idrill P_thick_fail",
" 0 0 0 0 0",
"# hm hf hr dm dn",
" 0 0 0 0 0",
"# N Istrain Thick Ashear Ithick Iplas",
" 0 0 .914 0 0 0",
"#---1----|----2----|----3----|----4----|----5----|----6----|----7----|----8----|----9----|---10----|"
],
"description":"3節点または4節点のシェル要素で使用されるシェルプロパティセットを記述します。Belytschko、QBAT、またはQEPHのシェル定式化が利用可能です。"
},
// MATG 等方性弾塑性材料
"/MAT/LAW2 (PLAS_JOHNS)":{
"prefix":"/MAT/LAW2 (PLAS_JOHNS)",
"body":[
"#https://2022.help.altair.com/2022/hwsolvers/ja_jp/rad/topics/solvers/rad/mat_law2_plas_johns_starter_r.htm"
"#mm-kg-ms"
"/MAT/PLAS_JOHNS/${1:mat_ID}/${2:unit_ID}",
"${3:MAT_title}",
"# RHO_I",
" 7.85E-6 0",
"# E Nu Iflag",
" 210 .3 0",
"# a b n EPS_p_max SIG_max0",
" .206 .45 .5 0 0",
"# c EPS_DOT_0 ICC Fsmooth F_cut Chard",
" 0 0 0 0 0 0",
"# m T_melt rhoC_p T_r",
" 0 0 0 0",
"#---1----|----2----|----3----|----4----|----5----|----6----|----7----|----8----|----9----|---10----|"
],
"description":"この材料則は、Johnson-Cook材料モデルを使用して、等方性弾塑性材料を表します。
このモデルは、材料の応力をひずみ、ひずみ速度、および温度の関数で表します。最大塑性ひずみに基づくビルトインの破壊基準が用意されています。"
},
このように記述しておくと、ユーザースニペットによりOpenRadiossのヘルパー機能が出来上がります。
以下の点に留意しました。
URLの記載
デフォルト値の単位系の記載
設定値の上に「#からはじまるコメント」を記載
IDとタイトルは$を使い、その他はコメントとデフォルト値を設定しておく
こうすることでデフォルト値のままで計算ができるキーワードから付属するキーワードも記載(必ず必要になるキーワードに絞る)
追加機能:/PROP/SHELL
では、登録したものを使ってみます。
いい感じ。
はじめからデフォルトの値を入れておくと、解析設定がデフォルト値になってエラーが出にくいです。
追加機能:/MAT/PLAS_JOHNS
材料特性も同様。
拡張機能では難しそうなキーワード
このヘルパー機能だけでは難しそうなキーワードもあります。
節点グループ
Rigid Bodyの設定
節点グループは例えば拘束条件を与えるときに使います。
これをキーワードで書くと節点をひとずつ指定する必要があります。
#---1----|----2----|----3----|----4----|----5----|----6----|----7----|----8----|----9----|---10----|
/BCS/2
symmetry
# Tra rot skew_ID grnod_ID
100 011 0 3
/GRNOD/NODE/3
BCS_group_3_of_NODE
5 6 7 8 9 10 11 12 13 14
15 16 17 18 19 20 21 22 23 24
25 26 27 28 29 30 31 32 33 34
35 36 37 38 39 40 41 42 43 44
685 686 687 688 689 690 691 692 693 694
695 696 697 698 699 700 701 702 703 704
705 706 707 708 709 710 711 712 713 714
715 716 717 718 719 720 721 722 723 724
725 726 727 728 729 730 731 732 733 734
735 736 737 738 739 740 741 742 743 744
745 746 747 748 749 750 751 752 753 754
755 756 757 758 759 760 761 762 763 764
766 768 770 802
#---1----|----2----|----3----|----4----|----5----|----6----|----7----|----8----|----9----|---10----|
PART内の全ての節点グループを指定する場合は、以下のように設定する手もあります。
/GRNOD/PART/3
BCS_group_3_of_NODE
1
#---1----|----2----|----3----|----4----|----5----|----6----|----7----|----8----|----9----|---10----|
しかし、特定の節点をグループ化するとなるとちょっとしたGUIが必要なのですが、どういう手があるのか模索中です。
例えば、こちらの記事に書いたように「Gmsh」→「Nastran形式」→「LS-PrePostで節点グループ作成」→「Radiossフォーマットにコピペ」などができます。
正直だいぶ面倒なんで何かいい手はないかなーって考えています。
Rigid Bodyの設定も難しいです。
以下のように節点グループに対して重心のNODE ID(座標など)を指定する必要があります。
#---1----|----2----|----3----|----4----|----5----|----6----|----7----|----8----|----9----|---10----|
/RBODY/1
New RBODY 1
# RBID ISENS NSKEW ISPHER MASS Gnod_id IKREM ICOG Surf_id
803 0 0 0 0 1 0 0 0
# Jxx Jyy Jzz
0 0 0
# Jxy Jyz Jxz
0 0 0
# Ioptoff Ifail
0 0 0
/GRNOD/NODE/1
RBODY_group_1_of_NODE
765 767 769 771 773 775 777 779 781 783
785 787 789 791 793 795 797 799 801
重心のNODE IDは803です。
モデルの節点とは別にNODEとして加える必要があります。
#---1----|----2----|----3----|----4----|----5----|----6----|----7----|----8----|----9----|---10----|
/NODE
(省略)
803 -17.156124210526 19.0499985789474 0
#---1----|----2----|----3----|----4----|----5----|----6----|----7----|----8----|----9----|---10----|
NODEをまとめて剛体設定にしておくと便利なことが多いので、Rigid Bodyのキーワードが楽に設定できるといいなと思っています。
EasyIstrにOpenRadiosの変換アドオンが追加?
オープンCAE@岐阜の勉強会に参加されている方がEasyIstrにOpenRadiossの変換アドインを追加しているという情報がありました。
こちら
時間があれば使てみたいですね。
OpenRadiossの例題集の記事
Altairのチュートリアルや例題集を参考に解析設定の詳しい解説記事を書いています。
解析設定の際にはご参考ください。
X➡@t_kun_kamakiri
ブログ➡宇宙に入ったカマキリ(物理ブログ)
Youtube➡カマキリ理系ブログ