爱气象,爱气象家园! 

气象家园

 找回密码
 立即注册

QQ登录

只需一步,快速开始

新浪微博登陆

只需一步, 快速开始

搜索
查看: 3520|回复: 1

在对台风的24小时变化分类时,fortran程序出现了下面的错误

[复制链接]

新浪微博达人勋

发表于 2016-5-3 10:33:46 | 显示全部楼层 |阅读模式
Fortran
系统平台: vs2010
问题概况: 在对台风的24小时变化分类时,fortran程序出现了下面的错误,具体主程序如下
问题截图:
我看过提问的智慧: 看过
自己思考时长(天): 1

登录后查看更多精彩内容~

您需要 登录 才可以下载或查看,没有帐号?立即注册 新浪微博登陆

x
program main
    implicit none
    integer,parameter :: t=60,ni=201,nj=201   
    integer i,j,i2,j2,m,n,a,b
    integer nn_ri,nn_si,nn_n,nn_w     !这些是四类ri,si,n,w,的数量
    real wind_24h(t),tc_Lat(t),tc_Lon(t),tbb_lat(301,t),tbb_lon(301,t),dis(301,301),d
    !     风速24h变化,台风中心纬度,台风中心经度,301*301个格点的经纬度,与台风中心的距离
    integer IR(301,301,t),IR_ri(ni,nj),IR_si(ni,nj),IR_n(ni,nj),IR_w(ni,nj)
    integer num_ri(ni,nj),num_si(ni,nj),num_n(ni,nj),num_w(ni,nj)
    integer tclon_grid(t),tclat_grid(t),mingrid(2)  !台风中心所在格点
    real mean_ri(ni,nj),mean_si(ni,nj),mean_n(ni,nj),mean_w(ni,nj)
    real :: fimiss=-20100.
   
    open(7, file='D:\HURSAT\BANYAN\2005\wind_24h0.txt')
    open(8, file='D:\HURSAT\BANYAN\2005\centlat.txt')
    open(9, file='D:\HURSAT\BANYAN\2005\centlon.txt')
    open(10, file='D:\HURSAT\BANYAN\2005\irwin.grd',form='binary')
    open(12, file='D:\HURSAT\BANYAN\2005\tbb_lat.grd',form='binary')
    open(13, file='D:\HURSAT\BANYAN\2005\tbb_lon.grd',form='binary')
    open(14, file='D:\HURSAT\BANYAN\2005\meanri.txt')
    open(15, file='D:\HURSAT\BANYAN\2005\meansi.txt')
    open(16, file='D:\HURSAT\BANYAN\2005\meann.txt')
    open(17, file='D:\HURSAT\BANYAN\2005\meanw.txt')

    do m=1,t                   ! t=60,wind_24中的个数
        read(7,*) wind_24h(m)
        read(8,*) tc_lat(m)        !台风中心坐标均与wind_24h初始时刻相对应
        read(9,*) tc_lon(m)
   
          do b=1,301
           read(12) tbb_lat(b,m)
              do a=1,301
                read(10) IR(a,b,m)     !  这里的IR与wind_24h初始时刻相对应
              end do
          end do
          do a=1,301
          read(13) tbb_lon(a,m)
          end do
    end do
   

      nn_ri=0
      nn_si=0
      nn_n=0
      nn_w=0
      IR_ri(i,j)=0
      IR_si(i,j)=0
      IR_n(i,j)=0
      IR_w(i,j)=0
      num_ri(i,j)=0
      num_si(i,j)=0
      num_n(i,j)=0
      num_w(i,j)=0

    do n=1,t
     do a=1,301
      do b=1,301
    call distance(tc_lon(n), tc_lat(n), tbb_lon(a,n), tbb_lat(b,n), d)
    dis(a,b)=d
      enddo
     enddo
    mingrid=minloc(dis)
   
    tclon_grid(n)=mingrid(1)           !台风中心经度格点
    tclat_grid(n)=mingrid(2)            !台风中心纬度格点     
   
!         各类的某范围内的tbb求和
!         Calculate the mean and construct a time series for Rapidly intensifying TC samples
         
         if ( wind_24h(n)>=30 ) then
         nn_ri=nn_ri+1
          do i=1,201
              do j=1,201
                     i2=tclon_grid(n)+i-101
                     j2=tclat_grid(n)+j-101
                     if ( (i2>=1 .and.i2<=301) .and. (j2>=1 .and.j2<=301) .and. IR(i2,j2,n)/=fimiss ) then
                       IR_ri(i,j)=IR_ri(i,j)+IR(i2,j2,n)
                       num_ri(i,j)=num_ri(i,j)+1
                     endif
          enddo
          enddo
          print*,'RI',nn_ri,num_ri(100,100),IR_ri(100,100)
     else if ( wind_24h(n)<30  .and. wind_24h(n)>=10  ) then
         nn_si=nn_si+1
          do i=1,201
              do j=1,201
                     i2=tclon_grid(n)+i-101
                     j2=tclat_grid(n)+j-101
                     if ( (i2>=1 .and.i2<=301) .and. (j2>=1 .and.j2<=301) .and. IR(i2,j2,n)/=fimiss ) then
                       IR_si(i,j)=IR_si(i,j)+IR(i2,j2,n)
                       num_si(i,j)=num_si(i,j)+1
                     endif
          enddo
          enddo
          print*,'SI',nn_si,num_si(100,100),IR_si(100,100)

         else if ( wind_24h(n)<10  .and. wind_24h(n)>-10 ) then
         nn_n=nn_n+1
          do i=1,201
              do j=1,201
                     i2=tclon_grid(n)+i-101
                     j2=tclat_grid(n)+j-101
                     if ( (i2>=1 .and.i2<=301) .and. (j2>=1 .and.j2<=301) .and. IR(i2,j2,n)/=fimiss ) then
                       IR_n(i,j)=IR_n(i,j)+IR(i2,j2,n)
                       num_n(i,j)=num_n(i,j)+1
                     endif
          enddo
          enddo
          print*,'N',nn_n,num_n(100,100),IR_n(100,100)

         else if ( wind_24h(n)<=-10 ) then
          nn_w=nn_w+1
          do i=1,201
              do j=1,201
                     i2=tclon_grid(n)+i-101
                     j2=tclat_grid(n)+j-101
                     if ( (i2>=1 .and.i2<=301) .and. (j2>=1 .and.j2<=301) .and. IR(i2,j2,n)/=fimiss ) then
                       IR_w(i,j)=IR_w(i,j)+IR(i2,j2,n)
                       num_w(i,j)=num_w(i,j)+1
                     endif
          enddo
          enddo
          print*,'W',nn_w,num_w(100,100),IR_w(100,100)
          end if
    end do
!   求某范围各类的tbb平均值
    do i=1,201
          do j=1,201
             if (num_ri(i,j)>0) then
             mean_ri(i,j)=IR_ri(i,j)/num_ri(i,j)
             else
             mean_ri(i,j)=-999.
             endif
             write(14,*) mean_ri(i,j)
             if (num_si(i,j)>0) then
             mean_si(i,j)=IR_si(i,j)/num_si(i,j)
             else
             mean_si(i,j)=-999.
             endif
             write(15,*) mean_si(i,j)
             if (num_n(i,j)>0) then
             mean_n(i,j)=IR_n(i,j)/num_n(i,j)
             else
             mean_n(i,j)=-999.
             endif
             write(16,*) mean_n(i,j)
             if (num_w(i,j)>0) then
             mean_w(i,j)=IR_w(i,j)/num_w(i,j)
             else
             mean_w(i,j)=-999.
             endif
             write(17,*) mean_w(i,j)
          end do
    end do
    close(7)
    close(8)
    close(9)
    close(11)
    close(12)
    close(13)
    close(14)
    close(15)
    close(16)
    close(17)
end

read.f90

5.62 KB, 阅读权限: 255, 下载次数: 0

密码修改失败请联系微信:mofangbao

新浪微博达人勋

发表于 2016-5-3 12:26:34 | 显示全部楼层
按照报错说的去找那个数组,看看在什么地方越界了。
密码修改失败请联系微信:mofangbao
您需要登录后才可以回帖 登录 | 立即注册 新浪微博登陆

本版积分规则

Copyright ©2011-2014 bbs.06climate.com All Rights Reserved.  Powered by Discuz! (京ICP-10201084)

本站信息均由会员发表,不代表气象家园立场,禁止在本站发表与国家法律相抵触言论

快速回复 返回顶部 返回列表