xiao. 发表于 2021-1-13 10:50:35

forrrt1:severe<408>数组超限怎么整呀



program co2h20n2
implicit none
integer,parameter::M=2966297,N=2,L=1227853
real ::cob(3000001,2)
real::co2(L,N)
real::h2o(M,N)
real ::k
integer::i,j,q,p,count


open(10,file='T_1800_P_25.0_CO2Mol_0.1_N2mol_0.9.data')
do i=1,1227852

    read(10,*)co2(i,:)

end do
close(10)


open(11,file='T_1800_P_25.0_H2OMol_0.1_N2mol_0.9.data')
do i=1,2966296

    read(11,*)h2o(i,:)
   
end do
close(11)


q=1
count=1
k=1000
do k=0,30000,0.01
   do p=count,1227852
      if (k-co2(p,1)<0)then
             cycle
      else if (k-co2(p,1)>0.01)then
   
   else
      cob(q,2)=cob(q,2)+co2(p,2)   
      count=count+1
      end if
   end do
   cob(q,1)=k
    q=q+1
   
end do




q=1
   count=1
do k=0,30000,0.01
do p=count,2966296
   if (k-co2(p,1)<0)then
    cycle
       else if (k-co2(p,1)>0.01)then
       else
      cob(q,2)=cob(q,2)+co2(p,2)
             count=count+1

       end if
end do

q=q+1
end do


open(12,file='hecheng.txt')
do i=1,3000000

    write (12,*)cob(i,:)

end do
close(12)
end





fcode 发表于 2021-1-13 10:59:54

错误提示仔细看看,英文翻译一下。
第57行,数组越界

co2 大小是 1227853,但p循环到 2966296

此外,既然你定义了 L 和 M,为什么代码里还要写一大堆 2966296 呢?这样你改这些数字多累啊??为何不写成 do p = count , M-1 呢?

do k=0,30000,0.01
do p=count,2966296
   if (k-co2(p,1)<0)then
    cycle
       else if (k-co2(p,1)>0.01)then
       else
      cob(q,2)=cob(q,2)+co2(p,2)
             count=count+1
       end if
end do

页: [1]
查看完整版本: forrrt1:severe<408>数组超限怎么整呀