Fortran里面的一些问题我有一个老程序,里面有几个部分是读数到一个数组中,以前的数组不是动态的,大致类似于这样的定义:DOUBLE PRECISION US_T1(NX,NY,NZ),US_T2(NX,NY,NZ)其中NX,NY,NZ都是提前定义好的P
来源:学生作业帮助网 编辑:作业帮 时间:2024/11/28 23:12:05
Fortran里面的一些问题我有一个老程序,里面有几个部分是读数到一个数组中,以前的数组不是动态的,大致类似于这样的定义:DOUBLE PRECISION US_T1(NX,NY,NZ),US_T2(NX,NY,NZ)其中NX,NY,NZ都是提前定义好的P
Fortran里面的一些问题
我有一个老程序,里面有几个部分是读数到一个数组中,以前的数组不是动态的,大致类似于这样的定义:
DOUBLE PRECISION US_T1(NX,NY,NZ),US_T2(NX,NY,NZ)
其中NX,NY,NZ都是提前定义好的PARAMETER (NX=33,NY=56,NZ=64)
现在我想改成动态数组,于是出现问题了,我是这么修改的:
DOUBLE PRECISION,allocatable::US_T1(:,:,:),US_T2(:,:,:)
OPEN (111000,FILE='MOLD.BX')
READ (111000,*)
READ (111000,*)
READ (111000,*) NX,NZ,NY
\x05CLOSE(111000)
allocate(US_T1(NX,NY,NZ),US_T2(NX,NY,NZ))
然后出现了这样的问题:
A specification statement cannot appear in the executable section
Fortran里面的一些问题我有一个老程序,里面有几个部分是读数到一个数组中,以前的数组不是动态的,大致类似于这样的定义:DOUBLE PRECISION US_T1(NX,NY,NZ),US_T2(NX,NY,NZ)其中NX,NY,NZ都是提前定义好的P
这句话的意思是,有一个声明语句,它不能在执行语句的部分.
一段Fortran代码,应该先是全部的声明语句,然后是全部的执行语句.
比如
real ::a
integer b
real ::c
a = b * 1.0
而不能是
real ::a
integer b
a = b * 1.0
real ::c