爱气象,爱气象家园! 

气象家园

 找回密码
 立即注册

QQ登录

只需一步,快速开始

新浪微博登陆

只需一步, 快速开始

搜索
查看: 2504|回复: 4

[求助] 合成程序第二版——子程序第一次调用没有问题,而第二次一直提示越界(从第一句开始)

[复制链接]

新浪微博达人勋

发表于 2013-4-29 17:12:39 | 显示全部楼层 |阅读模式

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

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

x

        parameter(m=180,n=89,nyr=8,num=55,undef=32767)

        real x(m,n,num),aa(m,n),x1(m,n,nyr)
        real s(m,n),ax(m,n),sx(m,n),t(m,n)
        integer  na(nyr)
          !            data na/19,37,42,43,45,47,52,53,54,55/
                   data na/3,6,10,11,12,17,21,34/

        open(1,file='ssts.grd',form='binary')
        read(1)(((x(i,j,k),i=1,m),j=1,n),k=1,num)

      do k=1,nyr
        do j=1,n
        do i=1,m
        if(x(i,j,k)/=undef)then
        x1(i,j,k)=x(i,j,na(k))
        else
        x1(i,j,k)=undef
        endif
        enddo
        enddo
        enddo

        call jps(x1,aa,s,undef,nyr,m,n)
        call jps(x,ax,sx,undef,num,m,n)

        do i=1,m
        do j=1,n
        if(aa(i,j)/=undef)then
        t(i,j)=(aa(i,j)-ax(i,j))/sqrt(s(i,j))*sqrt(real(nyr))
      else
        t(i,j)=undef
        endif
        enddo
        enddo

        open(2,file='qiang.grd',form='binary')
        write(2)((aa(i,j),i=1,m),j=1,n)
        write(2)((t(i,j),i=1,m),j=1,n)
        end

        subroutine jps(x1,aa,s,undef,num,m,n)
        real p(m,n,num),s(m,n),ave(m,n),aa(m,n),x1(m,n,num)
      do k=1,num
        do j=1,n
        do i=1,m
        if(x1(i,j,k)/=undef)then
        ave(i,j)=ave(i,j)+x1(i,j,k)/num
        else
        ave(i,j)=undef
        endif
        enddo
        enddo
        enddo

      do k=1,num
        do j=1,n
        do i=1,m
        if(x1(i,j,k)/=undef)then
        p(i,j,k)=x1(i,j,k)-ave(i,j)
        else
        p(i,j,k)=undef
        endif
        enddo
        enddo
        enddo

        do i=1,m
        do j=1,n
        do k=1,num
        if(x1(i,j,k)/=undef)then
      aa(i,j)=aa(i,j)+p(i,j,k)/num
        s(i,j)=s(i,j)+p(i,j,k)**2/num
        else
        aa(i,j)=undef
        s(i,j)=undef
        endif
        enddo
        enddo
        enddo

        end




               





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

新浪微博达人勋

 成长值: 0
发表于 2013-4-29 17:48:37 | 显示全部楼层
程序太长,直接不容易看出来···你再检测看看吧,如果子程序没有出错,可能调用的时候出错了,
call jps(x1,aa,s,undef,nyr,m,n)
call jps(x,ax,sx,undef,num,m,n)
这边的两个#5都对?一个是nyr,一个是num···慢慢查查总能找出来的···
密码修改失败请联系微信:mofangbao

新浪微博达人勋

 楼主| 发表于 2013-4-29 21:06:46 | 显示全部楼层

我是调用第二个出图啦 第一个没有错 第二个进入子程序real 、、、、、、、、、、第一句就说超界 好奇怪啊。。。。。。。。。
密码修改失败请联系微信:mofangbao

新浪微博达人勋

 成长值: 0
发表于 2013-4-30 09:17:48 | 显示全部楼层
dzxconan 发表于 2013-4-29 21:06
我是调用第二个出图啦 第一个没有错 第二个进入子程序real 、、、、、、、、、、第一句就说超界 好奇怪啊 ...

子程序这一句real p(m,n,num),s(m,n),ave(m,n),aa(m,n),x1(m,n,num)分开了定义,看看具体到哪一个数组出错了···
密码修改失败请联系微信:mofangbao

新浪微博达人勋

 楼主| 发表于 2013-4-30 14:05:21 | 显示全部楼层
言深深 发表于 2013-4-30 09:17
子程序这一句real p(m,n,num),s(m,n),ave(m,n),aa(m,n),x1(m,n,num)分开了定义,看看具体到哪一个数组出错 ...

发现到x1那个数组停了 可是看不出来哪儿越界啦 因为读入数组就是这么大呀~~好奇怪!而且把x1换个名字还是到这儿就错啦~~
密码修改失败请联系微信:mofangbao
您需要登录后才可以回帖 登录 | 立即注册 新浪微博登陆

本版积分规则

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

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

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