任何人都可以修改我的代码或告诉我如何制作“可以访问的一维数组”吗?目前,我无法访问一维数组中的每个元素。
代码:
MODULE PARAMETERS
INTEGER :: FILE
INTEGER :: X=3,Y=3,Z=9
INTEGER :: I, J, K, L = 1
INTEGER :: B(9)
INTEGER :: A(3,3)
DATA A/ 1,2,3,4,5,6,7,8,9/
END MODULE PARAMETERS
PROGRAM CLUSTER
USE PARAMETERS
IMPLICIT NONE
OPEN(UNIT=11,FILE="2D.TXT",ACTION="WRITE")
DO J = 1,Y
DO I = 1,X
B(L) = A(I,J)
WRITE(11,*) , B(L)
END DO
L = L + 1
END DO
CLOSE(11)
END PROGRAM CLUSTER
答案 0 :(得分:1)
我修好了,这就是主程序应该是......
PROGRAM CLUSTER
USE PARAMETERS
IMPLICIT NONE
OPEN(UNIT=11,FILE="2D.TXT",ACTION="WRITE")
L = 1
IF ( L .LT. 10) THEN
DO J = 1,Y
DO I = 1,X
B(L) = A(I,J)
WRITE(11,*) , B(L)
L = L + 1
END DO
END DO
ELSE
WRITE(11,*), "NOTHING TO DO HERE"
END IF
CLOSE(11)
END PROGRAM CLUSTER
答案 1 :(得分:1)
如果您只是想将2d数组放入1d数组,请使用reshape
内在函数。与您的自答案相当的代码是:
PROGRAM CLUSTER
USE PARAMETERS
IMPLICIT NONE
OPEN(UNIT=11,FILE="2D.TXT",ACTION="WRITE")
B = reshape(A, [ 9 ])
write (11,'(i8)'), (b(i),i=1,9)
CLOSE(11)
END PROGRAM CLUSTER
正如对你的答案和你的问题的评论中所指出的,对于你在MPI中的预期用途,你可以直接使用A来重塑这种重塑。