错误:'x'参数pf'dtime'在< 1>处固有必须是善良的

时间:2015-06-18 18:11:38

标签: fortran gfortran

我对编程的理解非常有限,所以我希望我有意义。

我对程序中的固定变量进行了更改(该程序名为NAFnoise;我使用的是.exe,但它附带了源代码,我在那里进行了更改)。该程序是用Fortran编写的,并且是多个文件。我正在使用gfortran编译它,大多数文件都没有问题。然而,一个文件给我带来了麻烦。我甚至没有对它进行任何修改。它给出的错误消息如下:

  

错误:'x'参数pf'dtime'在< 1>处固有必须是善良的4

etime显示相同的消息。那些(我猜它们是)中的函数和变量的唯一时间被引用如下所示:

IMPLICIT                        NONE                                  

   ! Local variables.                                                 

INTEGER(4)                   :: klo,khi,i,n_in,nvar,nj,j1,j2,ivar,nok,nbad
REAL(DbKi)                   :: kk2, Isumwell, Isum, Itot,eps,h1,hmin
REAL(DbKi)                   :: ys1,ys2,poverall,phipot
REAL(DbKi)                   :: bigben(2),bigben2(2),dtime,etime
REAL(DbKi)                   :: phif(10)

COMPLEX(DbKi)                :: value,dval1,dval2,dval11,dval12,dval22 
COMPLEX(DbKi)                :: btrans,btrans1,btrans2,btrans11,btrans12,btrans22
COMPLEX(DbKi)                :: bbb,bbb1,bbb2

  write(*,*) etime(bigben2),dtime(bigben)

 write(*,*) etime(bigben2),dtime(bigben)

我猜这个程序是在作者将它包含在源文件夹中时找到的,所以我不确定出了什么问题。我改变的变量应该与此无关。它与编译器有关吗?如何解决?

1 个答案:

答案 0 :(得分:2)

DTIME是手册https://gcc.gnu.org/onlinedocs/gfortran/DTIME.html中描述的非标准GNU功能。它需要一个类型为4的参数。这是gfortran默认设置下的单精度。

可能DbKi代表双精度。变化

REAL(DbKi)                   :: bigben(2),bigben2(2),dtime,etime

REAL                  :: bigben(2),bigben2(2)

(或real(4))如果您使用GNU内在扩展名。

如果你真的想要调用一些你自己的外部dtime,你必须为它声明一个接口块。

同样适用于来自https://gcc.gnu.org/onlinedocs/gfortran/ETIME.html

etime