module 传输数据
我放弃COMMON了改用MODULE了,现在出现了点问题 传输过来的数据依旧是最后一步计算的数据
求大神帮我看看我程序哪里有问题
MODULE COMMON_DATA
IMPLICIT NONE
SAVE
REAL::X(32)
END MODULE
SUBROUTINE 1…………
…………
USECOMMON_DATA
DO i=1,4,1
IF(i==NOEL)THEN
DO j=1,8,1
IF(j==NPT)THEN
X((i-1)*8+j)=STATEV(2)
END IF
END DO
END IF
END DO
END SUBROUTINE1
SUBROUTINE 2…………
…………
USECOMMON_DATA
DO i=5,8,1
IF(i==NOEL)THEN
DO j=1,8,1
IF(j==NPT)THEN
L=X((i-5)*8+j)
END IF
END DO
END IF
END DO
END SUBROUTINE2 没有错,x 是全域变量。不知道你想要什么效果?
call subroutine1 ! 设定 X
call subroutine2 !读取 X
call subroutine1 !设定新的X
call subroutine2 !读取新的X 这要看你的 SUBROUTINE 1 和 SUBROUTINE 2 的执行顺序是怎样的。 风平老涡 发表于 2020-11-4 02:10
没有错,x 是全域变量。不知道你想要什么效果?
call subroutine1 ! 设定 X ...
但是传输过来的数据不对1~4是 subroutine1计算的结果
5~8是subroutine2读取的结果 1 1 1.00000000000000 313.2038
1 2 1.00000000000000 313.2038
1 3 1.00000000000000 300.0083
1 4 1.00000000000000 300.0083
1 5 1.00000000000000 313.2038
1 6 1.00000000000000 313.2038
1 7 1.00000000000000 300.0083
1 8 1.00000000000000 300.0083
2 1 1.00000000000000 313.2038
2 2 1.00000000000000 313.2038
2 3 1.00000000000000 300.0083
2 4 1.00000000000000 300.0083
2 5 1.00000000000000 313.2038
2 6 1.00000000000000 313.2038
2 7 1.00000000000000 300.0083
2 8 1.00000000000000 300.0083
3 1 1.00000000000000 313.2038
3 2 1.00000000000000 313.2038
3 3 1.00000000000000 300.0083
3 4 1.00000000000000 300.0083
3 5 1.00000000000000 313.2038
3 6 1.00000000000000 313.2038
3 7 1.00000000000000 300.0083
3 8 1.00000000000000 300.0083
4 1 1.00000000000000 313.2038
4 2 1.00000000000000 313.2038
4 3 1.00000000000000 300.0083
4 4 1.00000000000000 300.0083
4 5 1.00000000000000 313.2038
4 6 1.00000000000000 313.2038
4 7 1.00000000000000 300.0083
4 8 1.00000000000000 300.0083
5 1 1.00000000000000 300.0083
5 2 1.00000000000000 300.0083
5 3 1.00000000000000 300.0083
5 4 1.00000000000000 300.0083
5 5 1.00000000000000 300.0083
5 6 1.00000000000000 300.0083
5 7 1.00000000000000 300.0083
5 8 1.00000000000000 300.0083
6 1 1.00000000000000 300.0083
6 2 1.00000000000000 300.0083
6 3 1.00000000000000 300.0083
6 4 1.00000000000000 300.0083
6 5 1.00000000000000 300.0083
6 6 1.00000000000000 300.0083
6 7 1.00000000000000 300.0083
6 8 1.00000000000000 300.0083
7 1 1.00000000000000 300.0083
7 2 1.00000000000000 300.0083
7 3 1.00000000000000 300.0083
7 4 1.00000000000000 300.0083
7 5 1.00000000000000 300.0083
7 6 1.00000000000000 300.0083
7 7 1.00000000000000 300.0083
7 8 1.00000000000000 300.0083
8 1 1.00000000000000 300.0083
8 2 1.00000000000000 300.0083
8 3 1.00000000000000 300.0083
8 4 1.00000000000000 300.0083
8 5 1.00000000000000 300.0083
8 6 1.00000000000000 300.0083
8 7 1.00000000000000 300.0083
8 8 1.00000000000000 300.0083 fcode 发表于 2020-11-4 08:34
这要看你的 SUBROUTINE 1 和 SUBROUTINE 2 的执行顺序是怎样的。
应该是先1后2的情况 如果你在 subroutine 1 ,subroutine 2 中又一次定义了 X,那么会覆盖掉module中的X
尝试取消在subroutine中对X的定义 916115735 发表于 2020-11-4 11:10
但是传输过来的数据不对1~4是 subroutine1计算的结果
5~8是subroutine2读取的结果 ...
在subroutine1中把X显示出来,与Subroutine2进行比较。 fcode 发表于 2020-11-4 11:38
如果你在 subroutine 1 ,subroutine 2 中又一次定义了 X,那么会覆盖掉module中的X
尝试取消在subroutine ...
确实是 1中重新定义了 谢谢
页:
[1]