这个回答,比较的冗长,从隐式分析的一般概念,到编写刚度矩阵。
1. 隐式分析介绍
编写隐式分析的 UMAT 子程序,可以了解一下用户手册中的附录 A,关于隐式分析的说明。
这是一个弹性问题的隐式分析用户子程序 UMAT41 案例,也调用了用户子程序 utan41, 访问链接 ,后文附上 K 文件精简版。dyn21.f 中有多种的 utan xx 的调用示例。
进行隐式分析,不同单元的切线刚度矩阵子程序的入口:
- urtanh:体单元的三维材料模型
- urtans:壳单元的二维平面应力材料模型
- urtanb:三种不同的梁单元模型
这三个入口子程序根据各自的单元特点处理后,具体进入切线刚度矩阵 utan41~50,或者相应的矢量版子程序 utan41v~50v。
精简的 K 文件如下:
$ uses built-in umat41
$ To converge in static would likely require more transverse constraint
*keyword
*PART
umat41
2,1,1
$mat_001
$2,1,2
*control_implicit_dynamics
1
*control_implicit_auto
1
$---+----1----+----2----+----3----+----4----+----5----+----6----+----7----+----8
*CONTROL_IMPLICIT_GENERAL
$# imflag dt0 imform nsbs igs cnstn form
$ 1 0.001000
1,.0002
$---+----1----+----2----+----3----+----4----+----5----+----6----+----7----+----8
*CONTROL_TIMESTEP
0.0000 0.9000
*CONTROL_TERMINATION
0.0100E+00
$---+----1----+----2----+----3----+----4----+----5----+----6----+----7----+----8
*DATABASE_BINARY_d3plot
0.0010E+00
*DATABASE_NODAL_FORCE_GROUP
6
*DATABASE_HISTORY_SOLID_SET
3
*DATABASE_ELOUT
0.0001E+00
*DATABASE_NODFOR
0.0001E+00
$---+----1----+----2----+----3----+----4----+----5----+----6----+----7----+----8
*mat_elastic
2,7.89e-9, 2.1e5, .3
$---+----1----+----2----+----3----+----4----+----5----+----6----+----7----+----8
*MAT_USER_DEFINED_MATERIAL_MODELS
$# mid ro mt lmc nhv iortho ibulk ig
1 7.890E-09 41 4 0 0 3 4
$# ivect ifail itherm ihyper ieos
$ 1 0 0
$# p1 p2 p3 p4 p5 p6 p7 p8
2.100E+05 0.300000 175.0e3 80.769e3
$---+----1----+----2----+----3----+----4----+----5----+----6----+----7----+----8
*MAT_Plastic_kinematic
11 7.890E-09 2.100E+05 3.000E-01 4.400E+02 1.700E+03 1.000E+00
$---+----1----+----2----+----3----+----4----+----5----+----6----+----7----+----8
*SECTION_SOLID
1 1
$---+----1----+----2----+----3----+----4----+----5----+----6----+----7----+----8
*SET_NODE_LIST
5
$ for prescribed displacement
173 174 175 176 177 178 343 344
347 349 351 353
*SET_NODE_LIST
6
$ for constraint
17 18 19 20 25 26 187 188
191 193 195 197
$---+----1----+----2----+----3----+----4----+----5----+----6----+----7----+----8
$ elements at center
*SET_SOLID
3
71 72 73 74 75 76 77 78
79 80
$---+----1----+----2----+----3----+----4----+----5----+----6----+----7----+----8
$ line of center nodes for load
*SET_NODE_LIST
2
277 278 279 280 281 282
$---+----1----+----2----+----3----+----4----+----5----+----6----+----7----+----8
*DEFINE_CURVE
10
0.00000000000000E+00 0.0000000000000E+00
0.01000000000000E+00 10.000000000000E+00
*BOUNDARY_PRESCRIBED_MOTION_SET
5 1 2 10 1.000E-00
$---+----1----+----2----+----3----+----4----+----5----+----6----+----7----+----8
*BOUNDARY_SPC_SET
6 0 1 1 1 1 1 1
$---+----1----+----2----+----3----+----4----+----5----+----6----+----7----+----8
*NODE
1 10.000000000000 16.000000000000 0.0000000000000
2 10.000000000000 12.000000000000 0.0000000000000
3 10.000000000000 8.0000000000000 0.0000000000000
4 10.000000000000 4.0000000000000 0.0000000000000
$
*ELEMENT_SOLID
1 2 25 17 1 27 187 188 189 190
2 2 17 18 2 1 188 191 192 189
3 2 18 19 3 2 191 193 194 192
*END
2. 编写刚度矩阵
如何编写用户自定义材料的切线刚度矩阵?从 R102784 开始(2015),之后的版本,可以在 umatXXc 中定义切线刚度矩阵。