OpenRadioss

【OpenRadioss入門】 サッカーボールでゴールを決める解析

こんにちは(@t_kun_kamakiri

Altairのサイトにこれまで商用利用としていたRadiossを2022年9月からオープンソース化するという内容の記事が投稿されていました。RadiossといえばLS-DYNAやPAM-Crashなどと並ぶAltairの衝突系(衝撃解析)の解析ソフトのイメージが強いですが、それが無償で使えるようになったというのはなかなかの衝撃でした。

今回解説するのはこちらのOpenRadiossの公式が例題として用意しているサッカーボールンをゴールネットに向けてシュートを決めるという解析です。
この設定を理解することで、いろいろなスポーツへのシミュレーションの展開が期待でき、非常に面白いかなと思い、まずはサッカーボールのシュートの解析設定を解説することにしました。

例えばバスケットボールの抗力だけは流体解析(OpenFOAM)で求めていき、軌道は1D CAE(OpenModelica)で求め、最後のシュートを決める部分だけをOpenRadiossで行うなど。

↓こんな感じでサッカーボールのシュートが決めれるなら、バスケットボールもできるだろうと。。。

モデル入手先

モデルはこちらより入手できます。

今回は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行)ごとに区切られているので、記述する位置を間違えないようにしましょう。

ゴールネット

パートはプロパティと材料とIDで関連付けれています。

材料特性は以下となります。

等方性の線形弾性材料で密度やヤング率を設定しています。

続いてプロパティの設定です。

こちらは3節点または4節点のシェル要素で使用されるシェルプロパティセットになります。特性として効いてくるのが、Ishell のシェルの要素とThick(厚み)なので確認しておきましょう。

ゴールネットのフレーム

こちらはMATPROPERTYもVOIDになっています。

こちらは「形状はあるが、解析では無視する」といったときに使います。要素の定義はされていても、剛性や質量は持たないため、解析には寄与しません

サッカーボール

材料特性は、弾性直交異方性材料を定義し、シェル要素のみで使用できます。エアバッグ繊維のモデル化に使用されます。

この材料特性とセットでプロパティは、直交異方性シェルロパティの定義に使用されます。

こちらの設定はエアバッグのシミュレーションをした際に使用したキーワードです。

あとで説明しますが、サッカーボール内の空気もエアバッグシミュレーションで使用したキーワードと同じものを使用しています。

グラウンドとライン

こちらも材料とプロパティはVOIDを使用されているので、形だけ見せているものになります。

スプリング

このスプリングは何のために設定しているのかよくわかりませんでした。

MAT ID = 0なので材料特性は特になく、プロパティに剛性などを設定しています。

1つの並進自由度を持つスプリングプロパティを定義します。このスプリングでは、非線形剛性、減衰、異なる除荷が考慮されます。変形に基づく破壊基準を使用できます。

  • fct_ID11=0の場合、線形載荷および除荷剛性。
  • k1 = 10000の線形剛性

ここまででPARTとそれに関連したプロパティと材料特性を確認しました。

SUBSETの設定

subsetの使い方を理解していないですが、PARTに関連付けられているので、もう少し理解が進んだら解説します。

ここからは荷重設定、境界条件など解析に必要な設定を解説します。

いろいろなフラグ

計算ファイルの一番上の方に解析を行う上での細かい設定が書かれている場合がありますので、確認します。
必要に応じてマニュアルを確認すれば良いですが、これらのせってが無くても計算できる場合があります。

重力の設定

こちらが重力の設定です。

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$方向の重力が発生する設定になっています(なぜか不明)。

拘束条件

拘束条件は以下のように設定します。

ひとつの例を取るとテキストでは以下のようにします。

001 000は、変位方向がZ軸並進が固定されており、X, Y軸並進方向とすべての回転がフリーであることを意味します。

接触定義

今回使われている接触定義は節点グループとサーフェスグループでの接触定義です。

どことどこが接触しているのかを確認する作業がとても大変です。
今回の例のように、節点グループ自体をグループ化(あるいはサーフェスグループをグループ化)して接触定義している場合もあります。

初速度

続いてサッカーボールに初速を与える設定です。
以下の設定で節点グループの並進と回転の両方の速度を与えることができます。

/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/により無限平面、無限円筒、球形、および平行四辺形の剛壁を定義します。

少しわかりにくいですが、OpenRadiossの計算実行後にVTKフィルをParaViewで確認するとゴールのフレームに無限に長い円柱がモデル化されていることがわかります。

こちらの/RWALL/はモデル作成しているわけではなく、キーワードだけで平面や円柱の形を再現しています。
さらに、サッカーボールとの接触定義にもなっています

Dsearchで接触の距離をサーチしています。
詳しくは以下の記事に書いていますので、ご参考ください。

節点のヒストリー

節点の時刻歴変化などの情報を出力するために節点を設定しておきます。

/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 まで)

さらに詳しく知りたい方はマニュアルを参考にしましょう。
代表的なものをいかにまとめています。

  • /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環境での実行方法を参考にします。

※ファイル名はご自身の設定したファイル名に読み替えてください。

結果の確認

結果はご覧の通りサッカーボールのシュートのシミュレーションができました。

LS-PrePostで確認

今回はOpenRadiossで計算した結果をLS-PrePostで読み込めるように変換しています。

まとめ

本記事ではOpenRadiossの設定をできるだけマニュアルを見ながら、テキストのみで解析実行できるように解説を行いました。

 

関連記事もどうぞ

COMMENT