在UMAT子程序k">ABAQUS中使用UMAT子程序时有时会使用到最大主应力进行计算。通过查阅帮助文档,ABAQUS实用子程序SPRINC可以在UMAT中计算最大主应力和最大主应变,SPRIND可以计算最大主应力和最大主应变的方向。
下面是ABAQUS帮助文档关于实用子程序SPRINC的介绍:
SPRINC (calculate principal values)
Interface
CALL SPRINC(S,PS,LSTR,NDI,NSHR)
Variables to be provided to the utility routine
S
Stress or strain tensor.
LSTR
An identifier. LSTR=1 indicates that S contains stresses; LSTR=2 indicates that S contains strains.
NDI
Number of direct components.
NSHR
Number of shear components.
Variables returned from the utility routine
PS(I), I=1,2,3
The three principal values.
调用的时候直接在UMAT子程序中输入:CALL SPRINC(S,PS,LSTR,NDI,NSHR)
需要提供给该实用子程序的变量包括:
实用子程序返回UMAT的变量
实例:
CALL SPRINC(S,PS,LSTR,NDI,NSHR) 可以直接写成
CALL SPRINC(STRESS,PS,1,3,3)或CALL SPRINC(STRESS,PS,1, NDI,NSHR)
这行代码的意思是将UMAT中的应力分量数组STRESS提供给实用子程序SPRINC计算;1表示LSTR=1,表明提供给实用子程序SPRINC的为应力分量数组;后面的两个“3”分别表示正应力分量个数为3和切应力分量个数为3,也可以不用改变直接使用NDI和NSHR,因为在三维模型的UMAT中NDI和NSHR已经被赋予了值为3。PS数组储存返回的计算得到的主应力,这个需要自己在umat程序中定义数组PS.
下面是关于返回主应力顺序的验证:
CALL SPRINC(STRESS,PS,1,3,3)
STATEV(4)=PS(1)
STATEV(5)=PS(2)
STATEV(6)=PS(3)
需要注意以下点:
1.PS数组一般需要在程序中自定义数组变量;
2.S数组一般也需要自定义数组变量,且需要为S数组赋予应力分量或应变分量的值;
3.如果SPRINC或SPRIND返回的主应力为零,检查输入的变量或数组是否未定义或者未赋值,其次检查输出数组是否未定义。
免责声明:本文系网络转载或改编,未找到原创作者,版权归原作者所有。如涉及版权,请联系删