見出し画像

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方向)に設定してやります。今回は特に着地面の傾きは設定しないので法線ベクトルは垂直に設定しておきます。(傾けると面白いです)

Radioss2022リファレンスガイドのRWALL/PLANEより抜粋

Radioss2022日本語リファレンスガイド

#---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ファイルを開いて可視化した結果は下記の通りです。(色はミーゼス応力)

くりまんじゅう全体を50%透過で表示
半分にカットして内部の応力を観察

着地してつぶれた部分、特に両足としっぽ?に高い(圧縮)応力がかかっていることが確認できます。また、最も変形が大きい時点では頭のてっぺんまでうっすら変色して応力が及んでいる様子も確認できます。

その応力が解放されながらポヨンとくりまんじゅうが跳ね返っていく様子がかわいいです^p^

参考資料

  1. Altair Radioss 例題集 RD-E: 700 振り子

  2. wikipedia ゴム - 物理的特徴

  3. MONOWEB 機械設計エンジニアの基礎知識 - 材料の密度一覧

  4. Radioss2022日本語リファレンスガイド

  5. OpenRadioss Confluence - python/tk guis for job submission, anim-vtk conversion and T01-csv conversion

この記事が気に入ったらサポートをしてみませんか?