我正在尝试添加两个数组,但由于某种原因,目标数组只包含零。当我编译并运行程序时,我没有收到任何错误,但输出文件是错误的。在代码中,我调用 dhscf 用值填充数组 Gnaatm 和 Gnascf,我(尝试)将它们保存在 givenaa 和 givenas 中,然后再次调用 dhscf 以获取 Gnaatm 和 Gnascf 的新值。当我将所有这些数组写入文件时,尽管 Gnaatm 和 Gnascf 不是,但 givenas en givenaa 似乎是空的。
我正在使用的代码是:
模块变量
real(dp), dimension(:), allocatable :: Gnaatm(:), Gnascf(:), gavenaa(:), &
& gavenas(:)
端模块
grdsam.f:
allocate (Gnaatm(nasize))
allocate (Gnascf(nasize))
allocate (gavenaa(nasize))
allocate (gavenas(nasize))
call dhscf(.....)
gavenaa = Gnaatm
gavenas = Gnascf
do ipt = 1, npt
call dhscf(....)
gavenaa = Gnaatm + gavenaa
gavenas = Gnascf + gavenas
enddo
open(unit=12, file="Zgavenaatm.txt", status="replace")
do iwrite = 1, nasize
write(12, *), iwrite, gavenaa(iwrite), Gnaatm(iwrite)
enddo
close(12)
open(unit=12, file="Zgavenascf.txt", status="replace")
do iwrite = 1, nasize
write(12, *), iwrite, gavenas(iwrite), Gnascf(iwrite)
enddo
close(12)
deallocate (Gnaatm)
deallocate (Gnascf)
deallocate (gavenaa)
deallocate (gavenas)
结束毕业典礼
当我运行程序时,我没有收到错误,但输出文件是错误的。典型的输出是这样的:
10 0.0000000000000000 -2.35488624992556957E-015
11 0.0000000000000000 -4.75822627213221874E-017
12 0.0000000000000000 -7.16040821425613171E-014
13 0.0000000000000000 8.33283089385797112E-021
14 0.0000000000000000 -1.04121906025281556E-014
第二列只包含零,但第三列确实包含数字。所以数组 'Gnaatm' 和 'Gnascf' 包含数字,但是以某种方式将它们添加到 'gavenaa' 和 'gavenas' 会出错。谁能告诉我我做错了什么?
附言。我在 Ubuntu 12 上使用 gfortran 编译器。