Fortran里面的一些问题
来源:学生作业帮 编辑:大师作文网作业帮 分类:综合作业 时间:2024/11/16 23:23:50
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
我有一个老程序,里面有几个部分是读数到一个数组中,以前的数组不是动态的,大致类似于这样的定义:
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代码,应该先是全部的声明语句,然后是全部的执行语句.
比如
real ::a
integer b
real ::c
a = b * 1.0
而不能是
real ::a
integer b
a = b * 1.0
real ::c
再问: 嗯,我最开始那一堆都放在‘common.inc’里面,然后 INCLUDE 'COMMON.INC' INTEGER I,J,K 本来‘common.inc’里面都是定义的变量,后来我加了 OPEN (111000,FILE='MOLD.BX') 就不行了,是这个原因吧。
一段Fortran代码,应该先是全部的声明语句,然后是全部的执行语句.
比如
real ::a
integer b
real ::c
a = b * 1.0
而不能是
real ::a
integer b
a = b * 1.0
real ::c
再问: 嗯,我最开始那一堆都放在‘common.inc’里面,然后 INCLUDE 'COMMON.INC' INTEGER I,J,K 本来‘common.inc’里面都是定义的变量,后来我加了 OPEN (111000,FILE='MOLD.BX') 就不行了,是这个原因吧。