这个回答,比较的冗长,从隐式分析的一般概念,到编写刚度矩阵。
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 中定义切线刚度矩阵。