ABAQUS实用子程序SPRINC提取主应力

实用子程序SPRINC

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)

需要提供给该实用子程序的变量包括:

ABAQUS实用子程序SPRINC提取主应力的图1

实用子程序返回UMAT的变量

ABAQUS实用子程序SPRINC提取主应力的图2

实例:

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)

ABAQUS实用子程序SPRINC提取主应力的图3

SDV4_MAX.png

ABAQUS实用子程序SPRINC提取主应力的图5

SDV5_MIN.png

ABAQUS实用子程序SPRINC提取主应力的图7

SDV6_MID.png

需要注意以下点:

1.PS数组一般需要在程序中自定义数组变量;

2.S数组一般也需要自定义数组变量,且需要为S数组赋予应力分量或应变分量的值;

3.如果SPRINC或SPRIND返回的主应力为零,检查输入的变量或数组是否未定义或者未赋值,其次检查输出数组是否未定义。

(4条)
默认 最新
请问,这个源文件有吗,想学习一下
评论 点赞
想请问一下为啥在umat中用spinc函数输出的主应变一直为零,请问这个函数是在本构计算前调用还是本构计算后调用
评论 2 点赞
回复
还有一点就是S数组是一个输入量,你要给这个主程序一个应力数组,在umat中可以直接用stress数组或令S数组等于stress数组
评论 点赞
回复
我也是在umat中调用的,我在上文也强调了一点就是你必须自己定义一个PS数组,没有定义的话可能就会得到的值为0
评论 点赞

查看更多评论 >

点赞 14 评论 6 收藏 13
关注