爱气象,爱气象家园! 

气象家园

 找回密码
 立即注册

QQ登录

只需一步,快速开始

新浪微博登陆

只需一步, 快速开始

搜索
查看: 7931|回复: 1

[求助] 雨滴谱Fortran程序报错,有大佬能来看看吗?

[复制链接]

新浪微博达人勋

发表于 2020-4-9 00:21:54 | 显示全部楼层 |阅读模式

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

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

x
本帖最后由 wtydfg 于 2020-4-9 00:24 编辑

我找不出哪儿错了,新手求助,下面是程序      program raindr
          parameter(pi=3.14159)
      integer raindrop2(32,32),n,nn
          real dipu(32,32),s(10000,32),v(32),dia(32),dbz(100000),
     *inten(100000),dipu1(32,32),s1(10000,32)
      character*2000 c,cc(2000)
          character*19 time1(10000)
      character*2 raindrop(32,32)
          character*7 intensity(100000), precipitation(100000),
     *radar(100000),visibility(100000),particles(100000)
      open(10,file='20070827.mis')
          open(30,file='diameter.txt')
          open(40,file='dbz.txt')
          do j=1,32
          read(30,*) dia(j)
          write(*,*) j,dia(j)
          enddo
      i=1
      do while(.not.eof(10))
      read(10,*)c
      time1(i)=c(1:19)
        print *, c
      i_number=0
      do i2=21,100
          if(c(i2:i2)==';')then
             i_number=i_number+1
          select case (i_number)
                   case(1)
                   i2_1=i2-1
                   intensity(i)=c(21:i2_1)
               case(2)
                   i2_2=i2-1
                 precipitation(i)=c(i2_1+2:i2_2)
               case(5)
                   i2_5=i2-1
               case(6)
                   i2_6=i2-1
                   radar(i)=c(i2_5+2:i2_6)
               case(7)
                   i2_7=i2-1
                 visibility(i)=c(i2_6+2:i2_7)
               
                   !case(8)
                !   i2_8=i2-1
               !case(9)
                   !i2_9=i2-1
                ! particles(i)=c(i2_8+2:i2_9)

      end select
      end if
          enddo
          cc='-'!赋初值,防止循环使用cc时出现覆盖不完全的情况

      do j=1,1000
      if(c(j:j+7)=='SPECTRUM')then
      if(c(j+9:j+12)==';;;;')then
          n=j+9
      nn=1
      do while(c(n:n)/='<')
             if((c(n:n)/=';').and.(c(n+1:n+1)==';'))then
           cc(nn)=c(n:n)
                 n=n+2
             elseif((c(n:n)/=';').and.(c(n+1:n+1)/=';'))then
             cc(nn)=c(n:n+1)
                 n=n+3
             else
           cc(nn)=c(n:n)
             n=n+1
             endif
             nn=nn+1
          enddo

        !write(*,*)cc(nn-1),nn
      ! cc=c(j+9:j+9+32*32-1)
      do ii=1,32
            do kk=1,32
            raindrop(ii,kk)=cc(kk+32*(ii-1))
                enddo
          enddo
       else
          go to 100
          endif
          endif
          enddo


          do ii=1,32
            do kk=1,32
               if(raindrop(ii,kk)==';')then
                     raindrop2(ii,kk)=0
                         else
             !raindrop2(ii,kk)=int(raindrop(ii,kk))
          read(raindrop(ii,kk),*)raindrop2(ii,kk)
                         endif
                enddo
          enddo
c      write(3,200)((raindrop2(ii,kk),ii=1,32),kk=1,32)                !jxc
                   
          do ii=1,32
      select case(ii)
          case(1:10)
          v(ii)=(ii-1)*0.1+0.05
          case(11:16)
      v(ii)=1.0+(ii-11)*0.2+0.1
      case(17:20)
      v(ii)=2.0+(ii-17)*0.4+0.2
      case(21:25)
      v(ii)=4.0+(ii-21)*0.8+0.4
      case(26:30)
      v(ii)=8.0+(ii-26)*1.6+0.8
      case(31:32)
      v(ii)=16.0+(ii-31)*3.2+1.6
          end select
          do kk=1,32
             dipu(ii,kk)=raindrop2(ii,kk)/(180*30*v(ii)*10.0)*1e6
          dipu1(ii,kk)=raindrop2(ii,kk)/(180*30*10.0)*1e6
              enddo
          enddo
          do kk=1,32
          do ii=1,32
          s(i,kk)=s(i,kk)+dipu(ii,kk)
        s1(i,kk)=s1(i,kk)+dipu1(ii,kk)
       enddo
      dbz(i)=dbz(i)+(s(i,kk)*dia(kk)**6.)
          inten(i)=inten(i)+pi/6*(s1(i,kk)*dia(kk)**3)*3600*1e-6
          enddo
          dbz(i)=10*log10(dbz(i))
      !write(*,'(32i5)')s


        !deallocate s
       
      !write(20,*)

      !deallocate(cc)

      i=i+1
100  enddo
c 200  format(1024(f5,1x))
!write(*,*)cc(nn-1),nn
          open(20,file='result-0827.txt')
          write(*,'(a19)')(time1(iii),iii=1,i-1)
!write(20,'(a19,32(i5,1x))')(time1(iii),iii=1,i-1),
*!        (s(iii,ii),ii=1,32),iii=1,i-1)
!(s(iii,ii),ii=1,32)),
     *!        iii=1,i-1)
          write(20,*)'       时间             雨强        雨量    雷达发射率
     *           能见度    每档粒子数'
          do ik=1,i-1
      write(20,'(a21,4x,4(a7,4x),32(f8.3,1x))')time1(ik),intensity(ik),
     *        precipitation(ik),radar(ik),visibility(ik),
     *        (s(ik,ii),ii=1,32)
          write(40,'(a21,4x,2(a7,4x,f8.3,4x))')time1(ik),radar(ik),dbz(ik)
     *,intensity(ik),inten(ik)
          enddo
      end

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

新浪微博达人勋

 成长值: 0
发表于 2020-4-9 08:58:15 | 显示全部楼层
.not. 应该只针对整型变量。你可以判断它是否为零代替
另外如果你是南信大的话 可以加QQ 1563126666
密码修改失败请联系微信:mofangbao
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册 新浪微博登陆

本版积分规则

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

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

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