OpenRadiossでゴム製のくりまんじゅうを落下させてみた - 後編
お盆休みに触り始めたOpenRadiossが面白かったのでくりまんじゅう(※)をポヨンポヨンさせてみました。
※ちいかわ©naganoのキャラクター。お酒が大好き。
#openradioss #python #ちいかわ #オープンCAE
前編
FreeCADで作ったくりまんじゅうのモデルをLS-PrePostを用いてメッシュ作成しLS-DYNA Keyword fileとして出力
出力したファイルのメッシュ情報をRadioss形式に変換するアプリをPythonで作成し変換
後編(本記事)
前編で変換したファイルを用いてstarterファイルおよびengineファイルを作成
計算の実行と可視化
概要
OpenRadiossを使ってゴムでできたくりまんじゅうを初速度ありで固定平面に落下させたときのシミュレーションを行ってみます。
後編では前編で作成したファイルを用いてOpenRadiossのstarter, engineファイルの作成と計算および可視化を行います。
ファイル構成
下記のようにstarterファイル(_0000.rad)とengineファイル(_0001.rad)および前編で作成したファイル(node.inc, solid_t4_brick.inc)を同じディレクトリの中に置いておきます。
└── kurimanju_drop/
├── kurimanju_drop_0000.rad
├── kurimanju_drop_0001.rad
├── node.inc
└── solid_t4_brick.inc
starterファイルの作成
公式の例題集(振り子)のファイルを参考にしながら作成しました。
Altair Radioss 例題集 RD-E: 700 振り子
単位系と材料の設定
くりまんじゅう全体を一つのPART(ID=1)として設定。
材質は天然ゴムとして下記を参考にしながら密度・ヤング率・ポアソン比を設定しました。
wikipedia ゴム - 物理的特徴
MONOWEB 機械設計エンジニアの基礎知識 - 材料の密度一覧
#RADIOSS STARTER
#---1----|----2----|----3----|----4----|----5----|----6----|----7----|----8----|----9----|---10----|
/BEGIN
kurimanju_drop
2022 0
g mm ms
g mm ms
#---1----|----2----|----3----|----4----|----5----|----6----|----7----|----8----|----9----|---10----|
#- 0. CONTROL CARDS:
#---1----|----2----|----3----|----4----|----5----|----6----|----7----|----8----|----9----|---10----|
/TITLE
kurimanju_drop
#---1----|----2----|----3----|----4----|----5----|----6----|----7----|----8----|----9----|---10----|
#- 1. PARTS:
#---1----|----2----|----3----|----4----|----5----|----6----|----7----|----8----|----9----|---10----|
/PART/1
kurimanju_body_all
# prop_ID mat_ID
2002 2001 0
#---1----|----2----|----3----|----4----|----5----|----6----|----7----|----8----|----9----|---10----|
#- 2. MATERIALS:
#---1----|----2----|----3----|----4----|----5----|----6----|----7----|----8----|----9----|---10----|
/MAT/ELAST/2001
gom
# RHO_I
0.00093 0
# E nu
1.000 .50
/PROP/SOLID/2002
kurimanju_solid_prop
# Isolid Ismstr Icpre Itetra10 Inpts Itetra4 Iframe dn
0 0 0 0 0 0 0 0
# q_a q_b h LAMBDA_V MU_V
0 0 0 0 0
# dt_min
0
/NODEと/TETRA4部分のインクルード
ここで前編で作成したファイルをインクルードします。
非コメント行を余分に入れるだけでエラーとなるので要注意。
#---1----|----2----|----3----|----4----|----5----|----6----|----7----|----8----|----9----|---10----|
#- 3. NODES and ELEMENTS:
#---1----|----2----|----3----|----4----|----5----|----6----|----7----|----8----|----9----|---10----|
#include node.inc
#---1----|----2----|----3----|----4----|----5----|----6----|----7----|----8----|----9----|---10----|
#- TETRA4 elements of /PART/1:
#---1----|----2----|----3----|----4----|----5----|----6----|----7----|----8----|----9----|---10----|
#include solid_t4_brick.inc
#---1----|----2----|----3----|----4----|----5----|----6----|----7----|----8----|----9----|---10----|
重力と初期速度の設定
重力加速度はZ方向に-9.81[m/s^2] ⇔ -0.00981[mm/ms^2]で、FUNCTION設定の通り時間によって変動しないものとしています。
初期速度は/INIVEL/TRAで平行移動の速度とし、方向は(Vx = 0, Vy = 0, Vz = -5.0[m/s]⇔-5.0[mm/ms])で与えています。
#---1----|----2----|----3----|----4----|----5----|----6----|----7----|----8----|----9----|---10----|
#- 4. BOUNDARY CONDITIONS:
#---1----|----2----|----3----|----4----|----5----|----6----|----7----|----8----|----9----|---10----|
#---1----|----2----|----3----|----4----|----5----|----6----|----7----|----8----|----9----|---10----|
#- 5. FUNCTIONS:
#---1----|----2----|----3----|----4----|----5----|----6----|----7----|----8----|----9----|---10----|
/FUNCT/5001
gravity
# X Y
0 -.00981
10000000 -.00981
#---1----|----2----|----3----|----4----|----5----|----6----|----7----|----8----|----9----|---10----|
#- 6. INITIAL VELOCITIES:
#---1----|----2----|----3----|----4----|----5----|----6----|----7----|----8----|----9----|---10----|
/INIVEL/TRA/6001
inivel
# Vx Vy Vz Gnod_id Skew_id
0 0 -5.0 6002 0
/GRNOD/PART/6002
#title
kurimanju_all_nodes
# item_ID1 item_ID2 item_ID3 item_ID4 item_ID5 item_ID6 item_ID7 item_ID8 item_ID9 item_ID10
1
#---1----|----2----|----3----|----4----|----5----|----6----|----7----|----8----|----9----|---10----|
#- 7. GRAVITIES:
#---1----|----2----|----3----|----4----|----5----|----6----|----7----|----8----|----9----|---10----|
/GRAV/7001
gravity_setting
#funct_IDT DIR skew_ID sensor_ID grnod_ID Ascale_x Fscale_Y
5001 Z 0 0 6002 0 1
くりまんじゅうが着地する平面の設定
リファレンスマニュアルのRWALLの項を参考に、
くりまんじゅうは X=0, Y=0 を中心軸としてZ=0の平面上に立っており、着地する平面を1.0[mm]下方(-Z方向)に設定してやります。今回は特に着地面の傾きは設定しないので法線ベクトルは垂直に設定しておきます。(傾けると面白いです)
#---1----|----2----|----3----|----4----|----5----|----6----|----7----|----8----|----9----|---10----|
#- 8. RIGID WALLS:
#---1----|----2----|----3----|----4----|----5----|----6----|----7----|----8----|----9----|---10----|
/RWALL/PLANE/8001
floor
# node_ID Slide grnod_ID1 grnod_ID2
2 0 0
# D_search fric Diameter ffac ifq
20.000000 .3 0 0 0
# XM YM ZM
0.00000000 0.00000000 -1.000000
# X_M1 Y_M1 Z_M1
0.00000000 0.00000000 1.000000
接触設定
くりまんじゅうと平面の接触の設定を行います。
とりあえず参考にした例題集(振り子)を踏襲して設定しましたが・・・接触設定はTYPEが多岐にわたっており各TYPEごとの詳細な違いがよく理解できてないです。
要勉強です(´・ω・`)
#---1----|----2----|----3----|----4----|----5----|----6----|----7----|----8----|----9----|---10----|
#- 9. INTERFACES:
#---1----|----2----|----3----|----4----|----5----|----6----|----7----|----8----|----9----|---10----|
/INTER/TYPE24/9001
kurimanju_inter_type24
# Surf_ID1 Surf_ID2 Istf Irem_i2 Idel
9002 0 2 0 0
# grnd_IDS Iedge Edge_angle Gap_max_s Gap_max_m
0 0 0 0 0
# Stmin Stmax Igap0 Ipen0 Ipen_max
0 0 0 0 0
# Stfac Fric Tstart Tstop
0 .05 0 0
# IBC Inacti ViscS
000 5 0
# Ifric Ifiltr Xfreq sens_ID fric_ID
0 0 0 0 0
/SURF/PART/EXT/9002
kurimanju_surface
1
#---1----|----2----|----3----|----4----|----5----|----6----|----7----|----8----|----9----|---10----|
/END
#---1----|----2----|----3----|----4----|----5----|----6----|----7----|----8----|----9----|---10----|
starterファイルはこれで完成です。
engineファイルの作成
特記することは特にありません。
0.0[ms]の初期状態から10.0[ms]まで、0.1[ms]ごとにアニメーションファイルを出力させる設定にしました。
このあたりの終了時間とDTの設定はシミュレーション結果を確認しながら特に見たい部分が細かい刻みで見れるようにちょっとずつ調整しました。
/RUN/kurimanju_drop/1/
10.00000000000
/VERS/2022
/DT/NODA/CST/0
0.900000000000000 0.000000000000000 0.000000000000000
/TFILE/0
0.010000000000000
/ANIM/DT
0.000000000000000 0.1000000000
/PRINT/-100/55
/ANIM/ELEM/EPSP
/ANIM/ELEM/VONM
/ANIM/ELEM/ENER
/ANIM/ELEM/HOURG
/ANIM/VECT/VEL
/ANIM/VECT/DISP
/ANIM/VECT/FOPT
/ANIM/VECT/CONT
/ANIM/NODA/DMAS
/END/ENGINE
計算
こちらで公開されているPythonのGUIアプリを使用して計算を行いました。
OpenRadioss Confluence - python/tk guis for job submission, anim-vtk conversion and T01-csv conversion
Anim-vtkのチェックボックスにチェックを入れておくとAファイルが計算終了後にvtkファイルに変換されて便利です。
計算は自分のちょっと古めのゲーミングノートPCで(6コア使用)で約20分弱かかりました。
結果の可視化
Paraviewでvtkファイルを開いて可視化した結果は下記の通りです。(色はミーゼス応力)
着地してつぶれた部分、特に両足としっぽ?に高い(圧縮)応力がかかっていることが確認できます。また、最も変形が大きい時点では頭のてっぺんまでうっすら変色して応力が及んでいる様子も確認できます。
その応力が解放されながらポヨンとくりまんじゅうが跳ね返っていく様子がかわいいです^p^