Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/fortran/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Fortran 数组表达式的形状不一致_Fortran_Fortran90 - Fatal编程技术网

Fortran 数组表达式的形状不一致

Fortran 数组表达式的形状不一致,fortran,fortran90,Fortran,Fortran90,我正在尝试编写一个代码并定义一个运行MRQMIN子例程所需的函数 program mrqmin !ifort mrqmin.f90 module_cosmo.o gaussj.o covsrt.o nrtype.o nrutil.o nr.o -o mrqmin implicit none integer i,b,ok double precision,dimension(:),allocatable :: a,Nrow,iz,Nbin,fi,fiStdDev,fiAvr,

我正在尝试编写一个代码并定义一个运行MRQMIN子例程所需的函数

  program  mrqmin
  !ifort mrqmin.f90 module_cosmo.o gaussj.o covsrt.o nrtype.o nrutil.o nr.o -o mrqmin
  implicit none
  integer i,b,ok
  double precision,dimension(:),allocatable :: a,Nrow,iz,Nbin,fi,fiStdDev,fiAvr,Magbin,zup
  double precision,dimension(:),allocatable :: fiStdDev2,RfiStdDev2,fi_expected,DFI,CHISQ
  double precision fi_star,alpha,M_star
  open(1,file='new.asc')
  b=14
  ! Ln10=2.3025
   A=0.4*2.3025
        do I=1,b        

                read (1,*) Nrow(I),iz(I),Nbin(I),fi(I),fiStdDev(I),fiAvr(I),Magbin(I),zup(I)

                  fiStdDev2(I)=fiStdDev(I)*fiStdDev(I)
                  RfiStdDev2(I)=1/fiStdDev2(I)
            write(*,*)fiStdDev2(I),RfiStdDev2(I)
                  fi_expected(I)=A*fi_star*10**(0.4*(alpha+1)*(M_star-Magbin(I)))*exp(-10**(0.4*(M_star-Magbin(I))))
                  DFI(I)=fi_expected(I)-FI(I)
                  CHISQ(I)=DFI(I)*DFI(I)*RfiStdDev2(I)
            end do
  deallocate(a,Nrow,iz,Nbin,fi,fiStdDev,fiAvr,Magbin,zup,fiStdDev2,RfiStdDev2,fi_expected,CHISQ,DFI)

  end program mrqmin
但我意识到了错误:数组表达式的形状不一致。[FI_预期]


如果我在其他代码中使用了相同形状的函数,但没有问题,我可以理解我的错误在哪里?

编译器会准确地告诉您问题所在:在定义
fi\u expected
的行中:

fi_expected(I)=A*fi_star*10**(0.4*(alpha+1)*(M_star-Magbin(I)))&
                     *exp(-10**(0.4*(M_star-Magbin(I))))
请注意,
fi\u expected
具有维度
b
,而
A
具有维度
3
。这是因为Fortran不区分大小写,所以
a
a
是一回事,所以您需要以您认为最好的方式区分
a
a


还要注意的是,您在分配前定义了一个
A
,这将导致运行时错误。

至少要尽最小的努力使代码易于理解。消除注释掉的行,合理化缩进,删除不必要的空白。我为什么要努力理解你的代码?您的编译器或运行时系统是否告诉您发生错误的行?如果有,也告诉我们。