-2

我在文件 4 中写入了一些值,我需要再次读取它们以进行新计算,但是在运行代码时收到分段错误错误,该问题出现在读取命令“read (4,*) NNrow(I) ,Niz(I),NNbin(I),Nfi(I),NfiStdDev(I),NfiAvr(I),NMagbin(I),Nzup(I)" 我该如何解决这个问题?

        do j=1,nmax
            if (zb(iz,im,j).ne.0) then

              call Romberg (dix,dDistCa,zb(iz,im,j),zup(iz))                    !COMOVING DISTANCE
              Vmax=dix*S                                    !COMOVINF VOLUME
              fi=fi+1/Vmax                                    !LUMINOSITY FUNCTION
write(2,'(i5,2x,f9.4,2x,f8.5,2x,3f14.10)')j,magbin,zbin,S,Vmax,dix
            endif

        enddo

            if (Nbin.ge.n_thresh) then
    Nrow=Nrow+1
write(4,'(3i7,2x,f25.8,2x,2f20.8,2x,f9.4,2x,f8.5)')Nrow,iz,Nbin,fi,fiStdDev,fiAvr,magbin,zup(iz)
            endif
              enddo loopmag

rewind(4)
close(4)


write(*,*)Nrow 
open(4,file='luminosity_func_I.asc')

allocate (fiStdDev2(Nrow),stat=ok)
allocate (fi_expected(Nrow),stat=ok)
allocate (DFI(Nrow),stat=ok)
allocate (CHISQ(Nrow),stat=ok)
! Ln10=2.3025
 A=0.4*2.3025
            do I=1,Nrow        ! NDATA=NMAX
            write(*,*)I
                read (4,*) NNrow(I),Niz(I),NNbin(I),Nfi(I),NfiStdDev(I),NfiAvr(I),NMagbin(I),Nzup(I)

                  fiStdDev2(I)=1/NfiStdDev(I)*NfiStdDev(I)
            write(*,*)fiStdDev2(I)
                  fi_expected(I)=A*fi_star*10**(0.4*(alpha+1)*(M_star-NMagbin(I)))*exp(-10**(0.4*(M_star-NMagbin(I))))
                  DFI(I)=fi_expected(I)-NFI(I)
                  CHISQ(I)=DFI(I)*DFI(I)*fiStdDev2(I)
            END DO
4

1 回答 1

-1

我不是 fortran 专家,但根据我在 Linux 上的 C 经验,我想说的是继续调试直到找到原因,可能是其中一个变量没有正确初始化并像那样使用。

I的代码中有什么?你初始化了吗??

于 2013-10-16T10:14:34.147 回答