sfepy HEXA1要素 1軸引張・圧縮解析
以下の例題を改変して線形弾性体、Neohook、Mooney-Rivlinについて引張・圧縮解析をやってみた。http://sfepy.org/doc-devel/examples/large_deformation-compare_elastic_materials.html1辺1mmの立方体HEXA1要素で、Z方向に荷重を与え、Z変位を取得する。↓荷重-変位グラフ↓引張アニメーション(Mooney Rivlin)↓圧縮アニメーション(Mooney Rivlin)以下、備忘録的にポイントをメモ(インデントが壊れる)メッシュの定義def mesh_hook(mesh, mode): """ Generate the block mesh. """ mesh = gen_block_mesh([1.0, 1.0, 1.0], [2, 2, 2], [0.5, 0.5, 0.5], name='el3', verbose=False) #size, number of nodes, center position return mesh filename_mesh = UserMeshIO(mesh_hook)材料の定義materials = { 'solid' : ({ 'K' : 8.333, # bulk modulus 'mu_nh' : 3.846, # shear modulus of neoHookean term 'mu_mr' : 1.923, # shear modulus of Mooney-Rivlin term 'kappa' : 1.923, # second modulus of Mooney-Rivlin term # elasticity for LE term 'D' : stiffness_from_lame(dim=3, lam=5.769, mu=3.846), },), 'load' : 'empty', }境界条件の定義ebcs = { 'Fix' : ('origin', {'u.all' : 0.0}), 'xyz100' : ('xyz100', {'u.[1,2]' : 0.0}), 'xyz010' : ('xyz010', {'u.[0,2]' : 0.0}), 'xyz001' : ('xyz001', {'u.[0,1]' : 0.0}), 'xyz110' : ('xyz110', {'u.[2]' : 0.0}),}解くべき支配方程式equations = { 'linear' : """dw_lin_elastic.i.Omega(solid.D, v, u) = dw_surface_ltr.isurf.Top(load.val, v)""", 'neo-Hookean' : """dw_tl_he_neohook.i.Omega(solid.mu_nh, v, u) + dw_tl_bulk_penalty.i.Omega(solid.K, v, u) = dw_surface_ltr.isurf.Top(load.val, v)""", 'Mooney-Rivlin' : """dw_tl_he_neohook.i.Omega(solid.mu_mr, v, u) + dw_tl_he_mooney_rivlin.i.Omega(solid.kappa, v, u) + dw_tl_bulk_penalty.i.Omega(solid.K, v, u) = dw_surface_ltr.isurf.Top(load.val, v)""", }にほんブログ村