Fortran90中的一个程序

时间:2013-05-19 13:13:09

标签: fortran90

我在fortran 90中有这个代码我认为代码没有任何问题,

    PROGRAM xfitexy
!   driver for routine fitexy
    USE nrtype
    USE nr
    USE ran_state, ONLY : ran_seed
    IMPLICIT NONE
    INTEGER(I4B), PARAMETER :: NPT=30
    REAL(SP) :: a,b,chi2,harvest,q,sa,sb,siga,sigb
    REAL(SP), DIMENSION(NPT) :: x,y,dx,dy,dz
    INTEGER(I4B) :: i
    call ran_seed(sequence=1411)
    dz(:)=0.0
    do i=1,NPT
        call ran1(harvest)
        dx(i)=0.1_sp+harvest
        call ran1(harvest)
        dy(i)=0.1_sp+harvest
        call gasdev(harvest)
        x(i)=10.0_sp+10.0_sp*harvest
        call gasdev(harvest)
        y(i)=2.0_sp*x(i)-5.0_sp+dy(i)*harvest
        call gasdev(harvest)
        x(i)=x(i)+dx(i)*harvest
    end do
    write(*,*) 'Values of a,b,siga,sigb,chi2,q:'
    write(*,*) 'Fit with x and y errors gives:'
    call fitexy(x,y,dx,dy,a,b,siga,sigb,chi2,q)
    write(*,'(1x,6f12.6)') a,b,siga,sigb,chi2,q
    write(*,*)
    write(*,*) 'Setting x errors to zero gives:'
    call fitexy(x,y,dz,dy,a,b,siga,sigb,chi2,q)
    write(*,'(1x,6f12.6)') a,b,siga,sigb,chi2,q
    write(*,*) '...to be compared with fit result:'
    call fit(x,y,a,b,siga,sigb,chi2,q,dy)

    sa=sqrt(siga**2+sigb**2*(a/b)**2)/b
    sb=sigb/b**2
    write(*,'(1x,6f12.6)') -a/b,1./b,sa,sb,chi2,q
    END PROGRAM xfitexy

当我编译它时,我收到以下错误:

USE nrtype; USE nrutil                                                                                      1                                                                                                           
    Fatal Error: Can't open module file 'nrtype.mod' for reading at (1): No such file or directory  

请告诉我如何解决它 非常感谢你

1 个答案:

答案 0 :(得分:1)

我可能错了,但我猜你从其他来源复制了这个程序。不要误会我的意思,仿真是开始学习任何代码的好方法,因为它会导致像这样的学习错误。 USE命令指示编译器查找另一个名为模块的文件,该文件包含多个子程序(函数或子程序),这些子程序必须与正在编译的程序存储在同一文件中。标题为nrtype.f90,nr.f90和ran_state.f90的模块必须与xfitxy程序位于同一文件中,因此编译器可以将它们转换为nrtype.mod,nr.mod和ran_state.mod文件,以便编译成单个程序与主程序。