我已经经历了公开可用的晶体可塑性FORTRAN 子程序,然而,我无法理解输入材料是如何通过子程序和函数传递的。
因此,在主UMAT中,变量支持指向输入文件中*USER main选项中输入的物质常量。对于子例程,此值为125。
现在,UMAT调用的子例程定义了另一个变量支柱,它采用不同的值,如
行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虽然我在代码中找不到道具和道具之间的任何关系,但我可以看到,适当的物质常数是由支柱实现的。
我无法理解如何能够从输入文件中获取属性常量?有人能解释一下这是怎么回事吗?
fortran 代码.
发布于 2020-08-27 07:05:47
ROTATION子例程在L.1404处定义(为清晰起见删除注释):
SUBROUTINE ROTATION (PROP, ROTATE)
IMPLICIT REAL*8 (A-H,O-Z)
DIMENSION PROP(16), ROTATE(3,3), TERM1(3,3), TERM2(3,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中。
https://stackoverflow.com/questions/63607910
复制相似问题