如何解决在Abaqus FORTRAN UMAT代码中,PROP数组与PROPS数组有何关系?
我一直在研究可公开获得的晶体可塑性FORTRAN subroutine,但是,我不明白输入材料如何通过子例程和函数传递。
因此,在主UMAT中,变量PROPS指向在输入文件的* USER MATERIAL选项中输入的材料常数。对于子例程,该值为125。
现在,由UMAT调用的子例程定义了另一个变量PROP,它具有不同的值,例如
在 1430行中;
C PROP(1) - PROP(3) -- direction of the first vector in
C local cubic crystal system
在第2167行中,(对于i = 1)
C PROP -- material constants characterizing the self- and latent-
C hardening law (INPUT)
C
C For the HYPER SECANT hardening law
C PROP(1,i) -- initial hardening modulus H0 in the ith
C set of slip systems
C PROP(2,i) -- saturation stress TAUs in the ith set of
C slip systems
C PROP(3,i) -- initial critical resolved shear stress
C TAU0 in the ith set of slip systems
虽然我在代码中找不到PROPS和PROP之间的任何关系,但我可以看到PROP正在实现适当的材质常量。
我无法理解PROP如何从输入文件中获取属性常量?有人可以解释它的工作原理吗?
fortran code。
解决方法
ROTATION
子例程在L.1404中定义(为清楚起见删除了注释):
SUBROUTINE ROTATION (PROP,ROTATE)
IMPLICIT REAL*8 (A-H,O-Z)
DIMENSION PROP(16),ROTATE(3,3),TERM1(3,TERM2(3,INDX(3)
[...]
Fortran遵循``传递引用''的原理工作,即函数参数实际上接收指向变量在内存中的任何位置的指针。因此,子例程ROTATION
将其第一个参数解释为16元素双精度数组(的起始地址),而第二个参数则是3x3双精度数组的地址。
在L.569上,您看到该函数被调用:
CALL ROTATION (PROPS(57),ROTATE)
因此,给出的地址是PROPS
的第57个元素的地址。这意味着子例程实际上可以访问PROPS(57)
-PROPS(72)
的内容。根据开始时的评论(L.385),
PROPS(57) - PROPS(72) -- parameters characterizing the initial
C orientation of a single crystal in
C global system
子例程结束时,其结果在L.569接收的数组ROTATE
中。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。