wufeng9 发表于 2010-4-9 20:02:53

关于vusdfld中 call vgetvrm的问题

在call vgetvrm( 'S', rData, jData, cData, jStatus )这个调用函数中为什么rData(maxblk*nrData)是定义为一维的数组呢?它和每个单元的应力是如何对应的?

18354223911 发表于 2017-7-9 16:30:32

过了好多年了,我也来说一下我的理解,欢迎探讨。在fortran里面,数组虽然可以定义成多维的,但其实他储存方式为一维储存的。就是说rdata在读取的时候可以是以一维形式读取 而在使用子程序 setfield时,又重新对rdata定义了尺寸(nblock,nrData) 只要总体长度是一样的,应该是都可以的。

yanzhen0206 发表于 2013-5-2 20:44:44

希望能够有大牛解决这个问题

diesure 发表于 2013-5-2 20:55:49

对照一下usersub manual 里的vgetvrm 顺序和standard稍有不同

apogee724 发表于 2013-5-21 09:17:43

嗯,我也有相同的疑惑
我看了manual(Abaqus User Subroutines Reference Manual 1.2.19)里面的example,在vusdfld中又调用了一个子程序setField(.....)
对应了一下参数发现rData对应的是strain是一个二维数组,我不是很了解fortran,但是我觉得似乎rData是个二维数组更符合我们的需求啊
我后来自己做了一个例子就直接把rData声明成为一个二维数组。。居然也能算。。

Tao_Tony 发表于 2018-5-24 15:16:16

我也有个关于vgetvrm的疑惑:我使用vgetvrm提取应力,那么stress(1)应该对应着S11?但是为什么在odb中却不相等

六哥 发表于 2019-2-15 10:00:50

Tao_Tony 发表于 2018-5-24 15:16
我也有个关于vgetvrm的疑惑:我使用vgetvrm提取应力,那么stress(1)应该对应着S11?但是为什么在odb中却 ...

stress(1)是积分点的应力,,在odb不知道你看的是不是节点的
页: [1]
查看完整版本: 关于vusdfld中 call vgetvrm的问题