在子程序中完成数学运算后,我想要写入两个变量。我们说X和Y. 由于我的X,Y阵列的大小未知,我分配它。
重点是,如果我告诉fortran在IDE自己的输出终端中编写数组,它可以正常工作。 但是如果我想在.DAT文件中使用它,那么.DAT文件中只有前4行是正确的,这意味着值不为零。 另一侧的所有后续行都是零(大多数)或NaN(少数)。
这是相关的代码:
integer :: i
type YX
real :: Y
real :: X
end type
type(YX),allocatable, dimension(:) :: yx_array
allocate(yx_array(i))
i=0 !Start
dx=1.E-1
yx_array(i)%Y=Y0 !Y0 and X0 are known
yx_array(i)%X=X0
do while (yx_array(i)%Y>1.E-3)
i=i+1
yx_array(i)%X=X0+i*dx
yx_array(i)%Y= f( yx_array(i)%X ) ! just some math..
end do
open(UNIT=99,File='Values',status='Replace',position='rewind')
!Since i now defines the size of the array I can't overwrite it by i=0,
!therefore I start with n=0 and go up to i-1. Not i though, because Y(i=max) !is a negative value which I don't need in my data.
do n=0,i-1
write(99,100) vektor(n)%Y, vektor(n)%X
100 format(2(F8.3,2X)
end do
close(99)
我无法弄清问题可能是什么。