こんにちは(@t_kun_kamakiri)
Altairのサイトにこれまで商用利用としていたRadiossを2022年9月からオープンソース化するという内容の記事が投稿されていました。RadiossといえばLS-DYNAやPAM-Crashなどと並ぶAltairの衝突系(衝撃解析)の解析ソフトのイメージが強いですが、それが無償で使えるようになったというのはなかなかの衝撃でした。
今回解説するのはこちらのOpenRadiossの公式が例題として用意しているサッカーボールンをゴールネットに向けてシュートを決めるという解析です。
この設定を理解することで、いろいろなスポーツへのシミュレーションの展開が期待でき、非常に面白いかなと思い、まずはサッカーボールのシュートの解析設定を解説することにしました。
こういう盛りだくさんのシミュレーションを考えている。 pic.twitter.com/0EsO51xFK8
— カマキリ🐲計算力学頑張る (@t_kun_kamakiri) May 31, 2025
例えばバスケットボールの抗力だけは流体解析(OpenFOAM)で求めていき、軌道は1D CAE(OpenModelica)で求め、最後のシュートを決める部分だけをOpenRadiossで行うなど。
抗力係数を求める部分が中途半端ですが、おいおい再開します。
↓こんな感じでサッカーボールのシュートが決めれるなら、バスケットボールもできるだろうと。。。
サッカーボールシミュレーション#OpenRadioss pic.twitter.com/o8lMnhvEIW
— カマキリ🐲計算力学頑張る (@t_kun_kamakiri) June 5, 2025
モデル入手先
モデルはこちらより入手できます。
1 2 3 4 5 |
. ├── Bathenay_circular ├── Bathenay_square ├── Santini_circular └── Santini_square |
今回はBathenay_circular
を確認します。
解析設定の手順
解析設定にはStarterファイルとEngineファイルの作成が必要です。
今回は以下のファイル名で設定ファイルを作成します。
-
BAT_CIR_0000.rad:Starter ファイル(解析設定ファイル)
-
BAT_CIR_0001.rad:Engine ファイル(解析制御と出力設定ファイル)
- BAT_CIR_0002.rad:Engine ファイル(解析制御と出力設定ファイル)
- BAT_CIR_0003.rad:Engine ファイル(解析制御と出力設定ファイル)
単位系
物理量の値の大きさには単位系を意識する必要があります。
今回はmm-g-msecの単位系で解析設定を行います。
PART、材料特性、プロパティの確認
プロパティと材料特性はPARTに関連付けられています。
PARTは要素(ビーム要素、シェル要素、ソリッド要素)で構成されており、PARTへはプロパティのIDと材料のIDを指定します。
まずは、PART数が多いですがひとつずつ確認していきます。
※設定は10カラム(10行)ごとに区切られているので、記述する位置を間違えないようにしましょう。
ゴールネット
1 2 3 4 5 |
/PART/5 #part_title filet # prop_ID mat_ID subset_ID Thick 1 1 5 |
材料特性は以下となります。
1 2 3 4 5 6 7 |
##HWCOLOR materials 1 11 /MAT/ELAST/1 filet # RHO_I RHO_O 1.00000000000000E-04 0.0 # E nu 20.0 0.0 |
等方性の線形弾性材料で密度やヤング率を設定しています。
続いてプロパティの設定です。
1 2 3 4 5 6 7 8 9 |
##HWCOLOR properties 1 11 /PROP/SHELL/1 filet # Ishell Ismstr Ish3n Idrill Ipinch P_Thick_Fail 24 0 0 0 # Hm Hf Hr Dm Dn 0.0 0.0 0.0 0.0 0.0 # N Thick Ashear Ithick Iplas 0 1.0 0.0 0 0 |
こちらは3節点または4節点のシェル要素で使用されるシェルプロパティセットになります。特性として効いてくるのが、Ishell のシェルの要素とThick(厚み)なので確認しておきましょう。
ゴールネットのフレーム
1 2 3 4 5 6 7 |
##HWCOLOR materials 12 59 /MAT/VOID/12 void # ##HWCOLOR properties 12 59 /PROP/VOID/12 void |
こちらは「形状はあるが、解析では無視する」といったときに使います。要素の定義はされていても、剛性や質量は持たないため、解析には寄与しません。
サッカーボール
1 2 3 4 5 6 7 8 9 10 11 12 13 |
##HWCOLOR components 121 2 /PART/121 #part_title white # prop_ID mat_ID subset_ID Thick 10 10 1 #---1----|----2----|----3----|----4----|----5----|----6----|----7----|----8----|----9----|---10----| ##HWCOLOR components 122 1 /PART/122 #part_title black # prop_ID mat_ID subset_ID Thick 10 10 1 |
材料特性は、弾性直交異方性材料を定義し、シェル要素のみで使用できます。エアバッグ繊維のモデル化に使用されます。
1 2 3 4 5 6 7 8 9 10 11 |
##HWCOLOR materials 10 43 /MAT/FABRI/10 leather # RHO_I RHO_O 0.00201 0.0 # E11 E22 NU12 20000.0 20000.0 0.29 # G12 G23 G31 10000.0 10000.0 10000.0 # R_E ZEROSTRESS FSCALE_POR SENS_ID 1.00000000000000E-03 0.0 0.0 0 |
この材料特性とセットでプロパティは、直交異方性シェルロパティの定義に使用されます。
1 2 3 4 5 6 7 8 9 10 11 |
##HWCOLOR properties 10 43 /PROP/SH_ORTH/10 Thickness: 1.5mm # Ishell Ismstr Ish3n Idrill P_Thick_Fail 0 0 0 0 # Hm Hf Hr Dm Dn 0.01 0.01 0.01 0.0 0.0 # N Thick Ashear skew_ID ITHICK IPLAS 1 1.5 0.0 0 0 # Vx Vy Vz Phi Ip 0.0 0.0 0.0 0.0 |
こちらの設定はエアバッグのシミュレーションをした際に使用したキーワードです。
あとで説明しますが、サッカーボール内の空気もエアバッグシミュレーションで使用したキーワードと同じものを使用しています。
グラウンドとライン
こちらも材料とプロパティはVOIDを使用されているので、形だけ見せているものになります。
1 2 3 4 5 6 7 8 9 10 11 12 13 |
##HWCOLOR components 124 2 /PART/124 #part_title lines # prop_ID mat_ID subset_ID Thick 12 12 2 #---1----|----2----|----3----|----4----|----5----|----6----|----7----|----8----|----9----|---10----| ##HWCOLOR components 125 55 /PART/125 #part_title lawn # prop_ID mat_ID subset_ID Thick 12 12 2 |
スプリング
このスプリングは何のために設定しているのかよくわかりませんでした。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 |
##HWCOLOR components 127 63 /PART/127 #part_title SPRING_1 # prop_ID mat_ID subset_ID Thick 13 0 4 #---1----|----2----|----3----|----4----|----5----|----6----|----7----|----8----|----9----|---10----| ##HWCOLOR components 128 3 /PART/128 #part_title SPRING_2 # prop_ID mat_ID subset_ID Thick 13 0 4 #---1----|----2----|----3----|----4----|----5----|----6----|----7----|----8----|----9----|---10----| ##HWCOLOR components 131 3 /PART/131 #part_title SPRING_5 # prop_ID mat_ID subset_ID Thick 13 0 4 #---1----|----2----|----3----|----4----|----5----|----6----|----7----|----8----|----9----|---10----| ##HWCOLOR components 132 4 /PART/132 #part_title SPRING_6 # prop_ID mat_ID subset_ID Thick 13 0 4 |
MAT ID = 0なので材料特性は特になく、プロパティに剛性などを設定しています。
1 2 3 4 5 6 7 8 9 10 11 |
##HWCOLOR properties 13 59 /PROP/SPRING/13 New PROP 13 # MASS sens_ID Isflag Ileng 1.0 0 0 0 # K1 C1 A1 B1 D1 10000.0 0.0 0.0 0.0 0.0 # fct_ID11 H1 fct_ID21 fct_ID31 fct_ID41 DeltaMin DeltaMax 0 0 0 0 0 0.0 0.0 # F1 E1 AScale1 Hscale1 0.0 0.0 0.0 0.0 |
1つの並進自由度を持つスプリングプロパティを定義します。このスプリングでは、非線形剛性、減衰、異なる除荷が考慮されます。変形に基づく破壊基準を使用できます。
- fct_ID11=0の場合、線形載荷および除荷剛性。
- k1 = 10000の線形剛性
ここまででPARTとそれに関連したプロパティと材料特性を確認しました。
SUBSETの設定
subsetの使い方を理解していないですが、PARTに関連付けられているので、もう少し理解が進んだら解説します。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 |
##HWCOLOR assemblies 1 4 /SUBSET/1 #subset_title BALL #---1----|----2----|----3----|----4----|----5----|----6----|----7----|----8----|----9----|---10----| ##HWCOLOR assemblies 2 5 /SUBSET/2 #subset_title GROUND #---1----|----2----|----3----|----4----|----5----|----6----|----7----|----8----|----9----|---10----| ##HWCOLOR assemblies 3 3 /SUBSET/3 #subset_title BART_CIR # sub_ID1 sub_ID2 sub_ID3 sub_ID4 sub_ID5 sub_ID6 sub_ID7 sub_ID8 sub_ID9 sub_ID10 2 1 #---1----|----2----|----3----|----4----|----5----|----6----|----7----|----8----|----9----|---10----| ##HWCOLOR assemblies 4 4 /SUBSET/4 #subset_title TIRLOINR # sub_ID1 sub_ID2 sub_ID3 sub_ID4 sub_ID5 sub_ID6 sub_ID7 sub_ID8 sub_ID9 sub_ID10 3 #---1----|----2----|----3----|----4----|----5----|----6----|----7----|----8----|----9----|---10----| ##HWCOLOR assemblies 5 5 /SUBSET/5 #subset_title FILET |
ここからは荷重設定、境界条件など解析に必要な設定を解説します。
いろいろなフラグ
計算ファイルの一番上の方に解析を行う上での細かい設定が書かれている場合がありますので、確認します。
必要に応じてマニュアルを確認すれば良いですが、これらのせってが無くても計算できる場合があります。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 |
/ANALY # N2D3D Iparith Isubcycle 0 0 0 #---1----|----2----|----3----|----4----|----5----|----6----|----7----|----8----|----9----|---10----| /DEF_SHELL # Ishell Ismstr Ithick Iplas Ish3n Idrill 0 0 0 0 0 0 #---1----|----2----|----3----|----4----|----5----|----6----|----7----|----8----|----9----|---10----| /DEF_SOLID # Isolid Ismstr Itetra4 Itetra10 Imas 0 0 #---1----|----2----|----3----|----4----|----5----|----6----|----7----|----8----|----9----|---10----| /IOFLAG # Ipri Igtyp Ioutp OutyyFmT Irootyy Idrot 1 0 0 0 0 0 #---1----|----2----|----3----|----4----|----5----|----6----|----7----|----8----|----9----|---10----| /SPMD # Domdec Nspmd Dkword Nthread 0 0 0 0 ## |
重力の設定
1 2 3 4 5 |
##HWCOLOR loadcollectors 1 11 /GRAV/1 gravity #funct_IDT DIR skew_ID sensor_ID grnod_ID Ascale_x Fscale_Y 1 Z 0 1 41 1.01.00000000000000E-03 |
こちらが重力の設定です。
FUNCTIONカーブをIDで指定しています。
注意点としては、今回の解析設定がSI単位系ではないのでスケール変換しています。
- 横軸スケールは1
- 縦軸スケールは1E-3倍
重力の単位はSI単位系で$\text{m}/\text{s}^2$であるので、単位系がg, mm, ms
ならば$-9.81 \times 10^{-3} \text{mm}/\text{ms}^2 = -9.81 \times 10^{-3} 10^{-3}\text{m}/10^{-3}\text{s}^2 = -9.81 \text{m}/\text{s}^2$となり正しい数値で計算されていることになります。
重力を与えるのがサッカーボールの節点グループになっています。
また、重力を与える時間にセンサーを使用しており、$99.5009\text{ms}$後にサッカーボールに$z$方向の重力が発生する設定になっています(なぜか不明)。
拘束条件
拘束条件は以下のように設定します。
ひとつの例を取るとテキストでは以下のようにします。
1 2 3 4 5 |
##HWCOLOR loadcollectors 1 11 /BCS/3 BCS 1 # Tra rot skew_ID grnod_ID 001 000 0 8 |
001 000
は、変位方向がZ軸並進が固定されており、X, Y軸並進方向とすべての回転がフリーであることを意味します。
接触定義
今回使われている接触定義は節点グループとサーフェスグループでの接触定義です。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 |
##HMGROUP 1 4 /INTER/TYPE7/1 #Title New INTER 1 # grnod_id surf_id Istf Ithe Igap Ibag Idel Icurv Iadm 65 14 0 0 0 0 0 0 0 # Fscale_gap Gap_max Fpenmax 0.0 0.0 0.0 # Stmin Stmax dtmin Irem_gap Irem_i2 0.0 0.0 0.0 0 # Stfac Fric Gapmin Tstart Tstop 0.0 0.0 1.5 0.0 0.0 # IBC Inacti VisS VisF Bumult 000 0 0.0 0.0 0.0 # Ifric Ifiltr Xfreq Iform sens_ID fct_IDF Ascale_F fric_ID 0 0 0.0 0 0 |
どことどこが接触しているのかを確認する作業がとても大変です。
今回の例のように、節点グループ自体をグループ化(あるいはサーフェスグループをグループ化)して接触定義している場合もあります。
初速度
続いてサッカーボールに初速を与える設定です。
以下の設定で節点グループの並進と回転の両方の速度を与えることができます。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 |
##HMNAME LOADCOLS 1misc1 ##HWCOLOR loadcollectors 1 11 /INIVEL/AXIS/2 New INIVEL 2 # DIR FRAME_ID GRNOD_ID Z 2 72 # Vxt Vyt Vzt VR 1.249906 25.067105 4.785515 0.14317821 # X1 Y1 Z1 = Y' # X2 Y2 Z2 = Z' /FRAME/FIX/2 #frame_title New FRAME 2 # Ox Oy Oz -2531.6000309924 437.45037007732 293.79002359428 # X1 Y1 Z1 1.0 0.0 0.0 # X2 Y2 Z2 0.0 -0.977802413638385 -0.209529090779654 |
/FRAME/FIXで新たな座標系を設定しています。
グループを設定して初速度を与えています。
初速度を与える設定をまとめると以下になります。
Dir | 回転軸を定義するフレームのX、Y、Z方向の定義(テキスト) | |
frame_ID | フレーム識別子frame_IDは、必ず入力する必要があります。 与えられない場合、初速度は全体座標系に関して作用します。 (整数) |
|
grnd_ID | 指定の初速度が適用される節点グループ(整数) | |
Vxt | 並進速度の局所フレームでのX成分(実数) | [ms] |
Vyt | 並進速度の局所フレームでのY成分(実数) | [ms] |
Vzt | 並進速度の局所フレームでのZ成分(実数) | [ms] |
Vr | 回転軸周りの回転速度(実数) | [rads] |
サッカーボールの空気
ここが一番ややこしいところかもしれませんが、エアバッグシミュレーションでガスを扱う際のシミュレーションと同じものを使っています。
詳しくは上記のブログをお読みください。
何をしているのかザックリ解説すると「サッカーボールの袋体に$pV=nRT$に従う理想気体を解き、圧力をサッカーボールに与えて空気を再現している」ということです。
剛体壁
/RWALL/により無限平面、無限円筒、球形、および平行四辺形の剛壁を定義します。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 |
/RWALL/PLANE/4 #rwall_title plane # node_ID Slide grnd_ID1 grnd_ID2 0 2 55 0 # Dsearch fric phi ifq 50.0 0.5 0.0 0 # XM YM ZM 0.0 -1968.0 -2375.0 # XM1 YM1 ZM1 0.0 -1968.0 -2374.0 #---1----|----2----|----3----|----4----|----5----|----6----|----7----|----8----|----9----|---10----| /RWALL/CYL/5 #rwall_title cylinder with friction # node_ID Slide grnd_ID1 grnd_ID2 0 2 57 0 # Dsearch fric phi ifq 50.0 0.45 120.0 0 # XM YM ZM 190.0 0.0 130.0 # XM1 YM1 ZM1 190.0 1.0 130.0 |
少しわかりにくいですが、OpenRadiossの計算実行後にVTKフィルをParaViewで確認するとゴールのフレームに無限に長い円柱がモデル化されていることがわかります。
こちらの/RWALL/はモデル作成しているわけではなく、キーワードだけで平面や円柱の形を再現しています。
さらに、サッカーボールとの接触定義にもなっています。
Dsearchで接触の距離をサーチしています。
詳しくは以下の記事に書いていますので、ご参考ください。
節点のヒストリー
節点の時刻歴変化などの情報を出力するために節点を設定しておきます。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 |
/TH/MONV/1 #thgroup_name airbag # var_ID1 var_ID2 var_ID3 var_ID4 var_ID5 var_ID6 var_ID7 var_ID8 var_ID9 var_ID10 DEF # Obj_ID1 Obj_ID2 Obj_ID3 Obj_ID4 Obj_ID5 Obj_ID6 Obj_ID7 Obj_ID8 Obj_ID9 Obj_ID10 1 #---1----|----2----|----3----|----4----|----5----|----6----|----7----|----8----|----9----|---10----| /TH/NODE/2 #thgroup_name main node rigid body # var_ID1 var_ID2 var_ID3 var_ID4 var_ID5 var_ID6 var_ID7 var_ID8 var_ID9 var_ID10 DEF XYZ # node_ID skew_ID node_name 2153 0main node rigid body_group_0 |
/TH/NODEを確認して、必要に応じて設定を追加すれば良いでしょう。
以上までの設定をBAT_CIR_0000.radに保存します。
これがRadiossのstarter inputファイルになります。
Engine設定
以上まではRadiossのstarter inputファイルの設定でしたが、Radioss Engineファイルはシミュレーションの解析制御と出力を記述するファイルです。
ここでは最低限の設定だけを記述します。
- /RUN:計算実行に関するキーワード。99.0ms (0.09秒)、111.0ms (0.11秒)、400.0ms (0.4秒)までの解析でファイルが分かれています。
- /DT/NODA/CST:モデルの時間ステップを増やすためのマススケーリング
- /TFILE:時刻歴ファイルであるT-ファイルの書き出し時間間隔
- /ANIM/DT:アニメーションファイル(A-ファイル)を出力する開始時間と出力間隔(3ms)
例:BAT_CIR_0001.rad(99.0ms まで)
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 |
/RUN/BAT_CIR/1/ 99.0000000000000 /PRINT/-100/0 /VERS/2023 /DT/NODA/0 0.900000000000000 0.000000000000000 /RBODY/ON 2153 /TFILE/0 0.100000000000000 /ANIM/DT 0.000000000000000 12.5000000000000 /ANIM/ELEM/ENER /ANIM/ELEM/VONM /ANIM/ELEM/P /ANIM/ELEM/HOURG /ANIM/ELEM/TEMP /ANIM/ELEM/THIC /ANIM/KEEPD /ANIM/MASS /ANIM/VECT/CONT /ANIM/VECT/VEL |
さらに詳しく知りたい方はマニュアルを参考にしましょう。
代表的なものをいかにまとめています。
- /ANIM/ELEM/EPSP:塑性歪み
- /ANIM/ELEM/VONM:フォン・ミーゼス応力
- /ANIM/ELEM/ENER:比エネルギー密度
- /ANIM/ELEM/HOURG:アワーグラスエネルギー
- /ANIM/VECT/DISP:変位
- /ANIM/VECT/FOPT:剛体、剛壁、および断面の力とモーメント
- /ANIM/VECT/CONT:接触力
- /ANIM/NODA/DMAS:ダンピング
必要に応じて追加すると良いでしょう。
解析実行
以上により解析の設定が終わりました。
解析に必要なファイルは以下の2つです。
- BAT_CIR_0000.rad:Starter ファイル(解析設定ファイル)
- BAT_CIR_0001.rad:Engine ファイル(解析制御と出力設定ファイル)
OpenRadiossの計算実行は、こちらで公開されているPythonで作られたGUIを使うと簡単に行えます。
WSLを使っているのでLinux環境での実行方法を参考にします。
結果の確認
結果はご覧の通りサッカーボールのシュートのシミュレーションができました。
サッカーボールシミュレーション#OpenRadioss pic.twitter.com/o8lMnhvEIW
— カマキリ🐲計算力学頑張る (@t_kun_kamakiri) June 5, 2025
LS-PrePostで確認
今回はOpenRadiossで計算した結果をLS-PrePostで読み込めるように変換しています。
まとめ
本記事ではOpenRadiossの設定をできるだけマニュアルを見ながら、テキストのみで解析実行できるように解説を行いました。