Fortran运行时错误:浮点读取期间的值错误(f7.0)



我正在尝试执行Fortran代码,但收到以下错误:

在文件prepmegan4cmaq_grwform.f90的第215行Fortran运行时错误:浮点读取时值错误

这就是我的.f90文件的第215行的样子:

read(shrubfillvalue,"(f7.0)") missing_value

我对Fortran编码没有任何经验,有人能告诉我它的含义以及我如何解决这个问题吗。提前感谢

此错误告诉您,它试图读取的文本不符合数值规则。代码本身很好,错误在输入中(您没有显示(。

F7.0格式将接受七个有效的数字字符,例如:-1234.5、2478bbb、3.15E24等(其中"b"表示空白(。所以,看看输入文件,看看那一行是什么。

程序可能在之前读取了错误数量的行之后,从文件中读取了错误的行。

我也一直在运行最新版本的MEGANv3.2,发现这是在MEGAN团队提供的4个输入文件中的3个文件中读取missing_value属性时出现的问题。

由于四个不同文件(即-128(之间的所有missing_value属性都是相同的,因此一个非常快速的解决方法是简单地更改prepmegan4cmaq_grwform.f90代码,使其仅读取四个数据集中每个数据集的树填充值:

!-----read growth form----------------------------------------------
scale_factor  = 1.
inpname       = trim(treefilename)
varname       = trim(treevarname)
!missing_value = -1.
read(treefillvalue,"(f7.0)") missing_value
CALL  megan2_bioemiss
inpname       = trim(shrubfilename)
varname       = trim(shrubvarname)
!      read(shrubfillvalue,"(f7.0)") missing_value
read(treefillvalue,"(f7.0)") missing_value
CALL  megan2_bioemiss
inpname       = trim(cropfilename)
varname       = trim(cropvarname)
!      read(cropfillvalue,"(f7.0)") missing_value
read(treefillvalue,"(f7.0)") missing_value
CALL  megan2_bioemiss
inpname       = trim(grassfilename)
varname       = trim(grassvarname)
!      read(grassfillvalue,"(f7.0)") missing_value
read(treefillvalue,"(f7.0)") missing_value
CALL  megan2_bioemiss
!     endif

然后简单地重新编译prepmegan4cmaq_grwform.f90代码。希望这能有所帮助。

最新更新