Fortran Coder

查看: 3630|回复: 8
打印 上一主题 下一主题

[求助] common

[复制链接]

5

帖子

1

主题

0

精华

入门

F 币
37 元
贡献
15 点
跳转到指定楼层
楼主
发表于 2022-3-4 21:39:45 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
[Fortran] 纯文本查看 复制代码
REAL*8 AINTW(NNODE),XII(NNODE,2),XI(2),dNdxi(NNODE,2),
     1 VJACOB(2,2),dNdx(NNODE,2),VJABOBINV(2,2),AN(4),BP(2,NDOFEL),
     2 DP(2),SDV(NSTV),BB(3,NDOFEL),CMAT(3,3),EPS(3),STRESS(3),
     3 VNI(2,NDOFEL),ULOC(2),PHASENOD(NNODE)
     
       REAL*8 DTM,THCK,HIST,CLPAR,GCPAR,EMOD,ENU,PARK,ENG

       COMMON/KUSER/USRVAR(N_ELEM,NSTV,4)
C
C     ==================================================================
C     ******************************************************************
C     Constructing elemet TYPE 1 (phase)
C     ******************************************************************
C     ==================================================================
C      
       IF (JTYPE.EQ.ONE) THEN
C     ==================================================================
C     Time an iteration variables
C     ==================================================================
       TIMEZ=USRVAR(JELEM,17,1)
       IF (TIMEZ.LT.TIME(2)) THEN
        USRVAR(JELEM,17,1)=TIME(2)
        USRVAR(JELEM,18,1)=ZERO
       ELSE
        USRVAR(JELEM,18,1)=USRVAR(JELEM,18,1)+ONE
       ENDIF
       STEPITER=USRVAR(JELEM,18,1)
common是怎么使用?
分享到:  微信微信
收藏收藏 点赞点赞 点踩点踩

954

帖子

0

主题

0

精华

大师

F 币
184 元
贡献
75 点

规矩勋章元老勋章新人勋章水王勋章热心勋章

QQ
沙发
发表于 2022-3-5 12:42:48 | 只看该作者
看彭国伦的书第 8 章第 3 节 169页

5

帖子

1

主题

0

精华

入门

F 币
37 元
贡献
15 点
板凳
 楼主| 发表于 2022-3-5 17:08:12 | 只看该作者
vvt 发表于 2022-3-5 12:42
看彭国伦的书第 8 章第 3 节 169页

关键是后面的函数USRVSR(N_ELEM,NSTV,4)是怎么运用的;
而且这个函数全局中也没有声明;

954

帖子

0

主题

0

精华

大师

F 币
184 元
贡献
75 点

规矩勋章元老勋章新人勋章水王勋章热心勋章

QQ
地板
发表于 2022-3-7 08:28:58 | 只看该作者
USRVAR 是一个数组,USRVSR我没在你给出的代码里看到

5

帖子

1

主题

0

精华

入门

F 币
37 元
贡献
15 点
5#
 楼主| 发表于 2022-3-8 21:27:53 | 只看该作者
vvt 发表于 2022-3-7 08:28
USRVAR 是一个数组,USRVSR我没在你给出的代码里看到

大佬,那这个数组是怎么使用的,位置就在common后面,这个数组里面有三个参数,到底是怎么使用的?

5

帖子

1

主题

0

精华

入门

F 币
37 元
贡献
15 点
6#
 楼主| 发表于 2022-3-8 21:42:55 | 只看该作者
vvt 发表于 2022-3-7 08:28
USRVAR 是一个数组,USRVSR我没在你给出的代码里看到

REAL*8 DTM,THCK,HIST,CLPAR,GCPAR,EMOD,ENU,PARK,ENG

        COMMON / KUSER / USRVAR (N_ELEM,NSTV,4)


其中USRVAR (N_ELEM,NSTV,4)我感觉这是个函数,但是在代码中没有找到这个函数的用法,就只是在上面common这个位置说明一下,下文就直接调用了;这个for文件作为abaqus中的子程序来进行使用的。

954

帖子

0

主题

0

精华

大师

F 币
184 元
贡献
75 点

规矩勋章元老勋章新人勋章水王勋章热心勋章

QQ
7#
发表于 2022-3-9 08:14:41 | 只看该作者
是个数组,关于数组的用法,请参考彭国伦的书第 7 章

5

帖子

1

主题

0

精华

入门

F 币
37 元
贡献
15 点
8#
 楼主| 发表于 2022-3-9 08:33:48 | 只看该作者
vvt 发表于 2022-3-9 08:14
是个数组,关于数组的用法,请参考彭国伦的书第 7 章

       COMMON/KUSER/USRVAR(N_ELEM,NSTV,4)
C
C     ==================================================================
C     ******************************************************************
C     Constructing elemet TYPE 1 (phase)
C     ******************************************************************
C     ==================================================================
C      
       IF (JTYPE.EQ.ONE) THEN
C     ==================================================================
C     Time an iteration variables
C     ==================================================================
      
       TIMEZ=USRVAR(JELEM,17,1)


       IF (TIMEZ.LT.TIME(2)) THEN
        USRVAR(JELEM,17,1)=TIME(2)
        USRVAR(JELEM,18,1)=ZERO
       ELSE
        USRVAR(JELEM,18,1)=USRVAR(JELEM,18,1)+ONE
       ENDIF
       STEPITER=USRVAR(JELEM,18,1)
若是数组的话,为啥上下还会变?



954

帖子

0

主题

0

精华

大师

F 币
184 元
贡献
75 点

规矩勋章元老勋章新人勋章水王勋章热心勋章

QQ
9#
发表于 2022-3-9 08:42:47 | 只看该作者
COMMON/KUSER/USRVAR(N_ELEM,NSTV,4)
这个意思是,USRVAR是个三维数组,每个维度的大小分别是 N_ELEM , NSTV , 4。即总大小 N_ELEM*NSTV*4。这里 N_ELEM  NSTV  4 是每个维度的大小。

TIMEZ=USRVAR(JELEM,17,1)
这个意思是,让 TIMEZ 的值,变成 USRVAR 这个三维数组的第 JELEM ,17,1 个元素的值。这里 JELEM,17,1 是索引下标。
您需要登录后才可以回帖 登录 | 极速注册

本版积分规则

捐赠本站|Archiver|关于我们 About Us|小黑屋|Fcode ( 京ICP备18005632-2号 )

GMT+8, 2024-12-24 03:44

Powered by Tencent X3.4

© 2013-2024 Tencent

快速回复 返回顶部 返回列表