爱气象,爱气象家园! 

气象家园

 找回密码
 立即注册

QQ登录

只需一步,快速开始

新浪微博登陆

只需一步, 快速开始

搜索
查看: 2132|回复: 4

[求助] fortran编程过程中出现的错误,不知道怎么改了

[复制链接]

新浪微博达人勋

发表于 2016-2-20 15:52:55 | 显示全部楼层 |阅读模式

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

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

x
原来有个大程序,里面有一个三维数组level(,,)

我想加进去些程序,然后让三维数组中的数值和一个二维数组中的数值进行比较,可以直接比较吗?

if (level(ibj,jbj,kbj).ne.shzrwlb(izd))then
goto 3004

这样编完程序之后就出现了错误

the shapes of the array expressions do not conform

拜托各位帮忙解决下,在下也算是刚刚学,还不太懂,万分感谢!!!
1.png
密码修改失败请联系微信:mofangbao

新浪微博达人勋

发表于 2016-2-20 17:09:17 | 显示全部楼层
按照楼主的表述这个比较应该是可行的,但从你给的信息上,看不出问题,建议贴出全部代码。
密码修改失败请联系微信:mofangbao

新浪微博达人勋

 楼主| 发表于 2016-2-21 10:51:35 | 显示全部楼层
四叶草 发表于 2016-2-20 17:09
按照楼主的表述这个比较应该是可行的,但从你给的信息上,看不出问题,建议贴出全部代码。

全部代码实在是太多了。我自己编的倒是不多,
    do 3006 ir=1,200
         imax(ir)=2
         jmax(ir)=2
         kkmax(ir)=2

         imin(ir)=nrow-1
         jmin(ir)=nrow-1
         kkmin(ir)=nrow-1

         izhx(ir)=(nrow+1)/2
         jzhx(ir)=(nrow+1)/2
         kzhx(ir)=(nrow+1)/2

         shzrwlb(ir)=1
         ryx(ir)=0
         lyx(ir)=0
         nb(ir)=0

3006 continue、


上面是第一段


         ixzh=i
         jxzh=j
         kxzh=k

2002  do 2003 ixz=1,ibl
        ibian=level(ixzh,jxzh,kxzh)
        ibianbian=shzrwlb(ixz)
        if(ibian.ne.ibianbian)then
        goto 2002
      
         iq=(ixzh-izhx(ixz))**2
         iw=(jxzh-jzhx(ixz))**2
         ie=(kxzh-kzhx(ixz))**2

         D=(iq+iw+ie)**(.5)

          ryx(ixz)=0.34*nb(ixz)
          lyx(ixz)=L/R*ryx(ixz)
         
          xzh=ryx(ixz)-lyx(ixz)
        end if

        if(D.lt.xzh)then
        goto 2001
        end if
2003  continue

第二段

ibl=ibl+(inabrs-1)
        
3000     do 3001 ib=ibl-inabrs+2,ibl
        shzrwlb(ib)=inewlb+i-inblev
3001  continue


        inblev=ibl

        do 3002 kkk=2,nrow-1
          do 3002 jjj=2,nrow-1
             do 3002 iii=2,nrow-1

             if (u(iii,jjj,kkk).gt.0)then

               ibj=iii
               jbj=jjj
               kbj=kkk

3004           do 3003 izd=1,ibl
                 
                 ibianbianbian=level(ibj,jbj,kbj)
                 ibianbianbianbian=shzrwlb(izd)
                 if (ibianbianbian.ne.ibianbianbianbian)then
                 goto 3004

                 if(ibj.gt.imax(izd))then
                 imax(izd)=ibj
                 else if(ibj.lt.imin(izd))then
                        imin(izd)=ibj
                 end if

                 if(jbj.gt.jmax(izd))then
                 jmax(izd)=jbj
                 else if(jbj.lt.jmin(izd))then
                        jmin(izd)=jbj
                 end if

                 if(kbj.gt.kkmax(izd))then
                 kkmax(izd)=kbj
                 else if(kbj.lt.kkmin(izd))then
                        kkmin(izd)=kbj                    
                 end if

                 end if
3003    continue
              
              end if

3002  continue



             do 3005 izx=1,ibl
             izhx(izx)=(imax(izx)+imin(izx))/2
             jzhx(izx)=(jmax(izx)+jmin(izx))/2
             kzhx(izx)=(kkmax(izx)+kkmin(izx))/2

             ibc=imax(izx)-imin(izx)
             jbc=jmax(izx)-jmin(izx)
             kbc=kkmax(izx)-kkmin(izx)

             ibbjj=ibc
             jbbjj=jbc
             kbbjj=kbc

             bbjj=ibbjj

             if (jbbjj.lt.bbjj)then
             bbjj=jbbjj
             else if (kbbjj.lt.bbjj)then
                  bbjj=kbbjj
             end if

             nb(izx)=bbjj

3005        continue
第三段

上面的是插入到原来的长程序里的,原来的程序没有问题,就是代码太长了
密码修改失败请联系微信:mofangbao

新浪微博达人勋

 楼主| 发表于 2016-2-21 10:54:20 | 显示全部楼层
level的最开始定义

integer level(71,71,71)

中间我看也有用level直接比较的代码
比如:
if(level(ii,jj,kk).eq.max)goto 151
里面max是等于20000的数值

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

新浪微博达人勋

发表于 2016-2-21 11:21:33 | 显示全部楼层
lindaleehy 发表于 2016-2-21 10:54
level的最开始定义

integer level(71,71,71)

   if (ibianbianbian.ne.ibianbianbianbian)then
      goto 3004
上面的两语句和你提问的语句表达的是一个意思,你的程序里用的是哪一种?你的程序错误提示出在level()这个数组,你回过去好好看看,这个数组的定义是否正确?以前的程序定义了,是动态数组level(,,) ?你又重新定义过,integer level(71,71,71)
密码修改失败请联系微信:mofangbao
您需要登录后才可以回帖 登录 | 立即注册 新浪微博登陆

本版积分规则

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

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

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