爱气象,爱气象家园! 

气象家园

 找回密码
 立即注册

QQ登录

只需一步,快速开始

新浪微博登陆

只需一步, 快速开始

搜索
查看: 9604|回复: 25

[求助] Fortran统计干旱天数求助。。。

[复制链接]

新浪微博达人勋

发表于 2013-5-13 23:53:41 | 显示全部楼层 |阅读模式

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

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

x
本帖最后由 aa22556688 于 2013-5-14 10:24 编辑

由于要统计,每个测站(17个站),每年(1974-2010),每个季度,每个季度各干旱等级(轻,中,重,特)的天数,编了了一个fortran程序,但运行结果不对,麻烦高手帮助看一下,哪里错了。。。cicici.txt文件,里共有37年数据,13514行,20列。
存储方式为(见下文或者图2):
年 月 日  测站1  测站2 ....... 测站17
1974 1 1  ... .... ...
1974 1 2  ... .... ...
1974 1 3   ... ... ..
.... ... ...
2012 12 31  .. .. ..

下面是程序代码:
integer i,j,k
real,dimension(13514,20)::ci
integer,dimension(37,17)::dongqing,dongmid,dongzhong,dongte   !冬季轻旱,冬季中旱,冬季重旱,冬季特旱,用来存37年每年冬季各等级干旱的天数!
integer,dimension(37,17)::chunqing,chunmid,chunzhong,chunte
integer,dimension(37,17)::xiaqing,xiamid,xiazhong,xiate
integer,dimension(37,17)::qiuqing,qiumid,qiuzhong,qiute

open(10,file='E:\aaa\cicici.txt')    !气象综合干旱指数ci,13514行,20列!
do i=1,13514              !行:年,月,日,测站一,测站二。。。测站17!
read(10,*)(ci(i,j),j=1,20)        !列:每个测站从1974.1.1~2012.12.31每天的CI值!
enddo
close(10)

k=1974              !起始年1974,终止年2010!
do m=1,37
  do i=1,13514         !统计个测站,每年,每个季节,各等级干旱天数!
   do j=4,20
    if((ci(i,1)==k.and.ci(i,2)==1.0).or.(ci(i,1)==k.and.ci(i,2)==2).or.(ci(i,1)==k-1.and.ci(i,2)==12))then    !冬季的条件!
      if(-1.2<ci(i,j).and.ci(i,j)<=-0.6)then         !轻旱!
       dongqing(m,j-3)=dongqing(m,j-3)+1             !冬季轻旱天数加一!
      else if(-1.8<ci(i,j).and.ci(i,j)<=-1.2)then     !中旱!
        dongmid(m,j-3)=dongmid(m,j-3)+1             !冬季中旱天数加一!     
      else if(-2.4<ci(i,j).and.ci(i,j)<=-1.8)then     !重旱!
       dongzhong(m,j-3)=dongzhong(m,j-3)+1       !冬季重旱天数加一!
        else if(ci(i,j)<=-2.4)then                     !特旱!
       dongte(m,j-3)=dongte(m,j-3)+1           !冬季特旱天数加一!
      endif
   else if(ci(i,1)==k.and.(ci(i,2)==3.or.ci(i,2)==4.or.ci(i,2)==5))then      !春季的条件!
      if(-1.2<ci(i,j).and.ci(i,j)<=-0.6)then
       chunqing(m,j-3)=chunqing(m,j-3)+1
      else if(-1.8<ci(i,j).and.ci(i,j)<=-1.2)then
       chunmid(m,j-3)=chunmid(m,j-3)+1
      else if(-2.4<ci(i,j).and.ci(i,j)<=-1.8)then
       chunzhong(m,j-3)=chunzhong(m,j-3)+1
        else if(ci(i,j)<=-2.4)then
       chunte(m,j-3)=chunte(m,j-3)+1
      endif
    else if(ci(i,1)==k.and.(ci(i,2)==6.or.ci(i,2)==7.or.ci(i,2)==8))then
        if(-1.2<ci(i,j).and.ci(i,j)<=-0.6)then
          xiaqing(m,j-3)=xiaqing(m,j-3)+1
        else if(-1.8<ci(i,j).and.ci(i,j)<=-1.2)then
          xiamid(m,j-3)=xiamid(m,j-3)+1
        else if(-2.4<ci(i,j).and.ci(i,j)<=-1.8)then
          xiazhong(m,j-3)=xiazhong(m,j-3)+1
          else if(ci(i,j)<=-2.4)then
          xiate(m,j-3)=xiate(m,j-3)+1
        endif
     else if(ci(i,1)==k.and.(ci(i,2)==9.or.ci(i,2)==10.or.ci(i,2)==11))then
      if(-1.2<ci(i,j).and.ci(i,j)<=-0.6)then
          qiuqing(m,j-3)=qiuqing(m,j-3)+1
        else if(-1.8<ci(i,j).and.ci(i,j)<=-1.2)then
          qiumid(m,j-3)=qiumid(m,j-3)+1
        else if(-2.4<ci(i,j).and.ci(i,j)<=-1.8)then
          qiuzhong(m,j-3)=qiuzhong(m,j-3)+1
          else if(ci(i,j)<=-2.4)then
          qiute(m,j-3)=qiute(m,j-3)+1
        endif
    endif
  enddo
  enddo
  k=k+1
enddo

open(30,file='E:\aaa\dongqing.txt')
open(40,file='E:\aaa\dongmid.txt')
open(50,file='E:\aaa\dongzhong.txt')
open(60,file='E:\aaa\dongte.txt')
open(70,file='E:\aaa\chunqing.txt')
open(80,file='E:\aaa\chunmid.txt')
open(90,file='E:\aaa\chunzhong.txt')
open(100,file='E:\aaa\chunte.txt')
open(110,file='E:\aaa\xiaqing.txt')
open(120,file='E:\aaa\xiamid.txt')
open(130,file='E:\aaa\xiazhong.txt')
open(140,file='E:\aaa\xiate.txt')
open(150,file='E:\aaa\qiuqing.txt')
open(160,file='E:\aaa\qiumid.txt')
open(170,file='E:\aaa\qiuzhong.txt')
open(180,file='E:\aaa\qiute.txt')
do i=1974,2010
   write(30,'(i6,17i6)') i,(dongqing(i,j),j=1,17)
   write(40,'(i6,17i6)') i,(dongmid(i,j),j=1,17)
   write(50,'(i6,17i6)') i,(dongzhong(i,j),j=1,17)
   write(60,'(i6,17i6)') i,(dongte(i,j),j=1,17)
   write(70,'(i6,17i6)') i,(chunqing(i,j),j=1,17)
   write(80,'(i6,17i6)') i,(chunmid(i,j),j=1,17)
   write(90,'(i6,17i6)') i,(chunzhong(i,j),j=1,17)
   write(100,'(i6,17i6)') i,(chunte(i,j),j=1,17)
   write(110,'(i6,17i6)') i,(xiaqing(i,j),j=1,17)
   write(120,'(i6,17i6)') i,(xiamid(i,j),j=1,17)
   write(130,'(i6,17i6)') i,(xiazhong(i,j),j=1,17)
   write(140,'(i6,17i6)') i,(xiate(i,j),j=1,17)
   write(150,'(i6,17i6)') i,(qiuqing(i,j),j=1,17)
   write(160,'(i6,17i6)') i,(qiumid(i,j),j=1,17)
   write(170,'(i6,17i6)') i,(qiuzhong(i,j),j=1,17)
   write(180,'(i6,17i6)') i,(qiute(i,j),j=1,17)
enddo

close(30)
close(40)
close(50)
close(60)
close(70)
close(80)
close(90)
close(100)
close(110)
close(120)
close(130)
close(140)
close(150)
close(160)
close(170)
close(180)

end
之前忘记说了,这个程序运行没有错误,只是结果不对,贴一张运行后的txt文件解雇,见图3:


麻烦高手看一下,哪里错了。。。不尽感激。。。



2.png

dongqing.txt

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

新浪微博达人勋

发表于 2013-5-14 00:41:01 | 显示全部楼层
有报错信息吧?
密码修改失败请联系微信:mofangbao

新浪微博达人勋

发表于 2013-5-14 07:12:42 | 显示全部楼层
运行出错的话总会有错误信息的吧,楼主怎么不贴上来呢。
密码修改失败请联系微信:mofangbao

新浪微博达人勋

发表于 2013-5-14 08:15:23 | 显示全部楼层
仔细检查一下原来的数据
密码修改失败请联系微信:mofangbao

新浪微博达人勋

 成长值: 0
发表于 2013-5-14 09:07:57 | 显示全部楼层
居然看完了···初看基本没什么错误,但是楼主真是闲的啊···
冗余代码太多了···
同楼上问,哪里的错误?结果不对还是怎么滴?
【此外】数据中的159.8已经下面的几十是什么意思?为何没有归类到你的统计里面???
密码修改失败请联系微信:mofangbao

新浪微博达人勋

 楼主| 发表于 2013-5-14 10:17:32 | 显示全部楼层
本帖最后由 aa22556688 于 2013-5-14 10:21 编辑

值大于-0.6的,就不属于干旱,就不用统计,只需要统计小于-0.6以下的干旱天数。。。这个程序运行结果不过,例如1974年冬季轻旱是23天,但是运行结果是0,而且而且很多都是0。。。
密码修改失败请联系微信:mofangbao

新浪微博达人勋

 楼主| 发表于 2013-5-14 10:18:29 | 显示全部楼层
kongfeng0824 发表于 2013-5-14 00:41
有报错信息吧?

没有报错信息,能运行出来,只是统计的天数不对。
密码修改失败请联系微信:mofangbao

新浪微博达人勋

 楼主| 发表于 2013-5-14 10:19:08 | 显示全部楼层
river 发表于 2013-5-14 07:12
运行出错的话总会有错误信息的吧,楼主怎么不贴上来呢。

没有报错信息,可以写文件,只是统计出来的干旱天数不对,很多都为零。
密码修改失败请联系微信:mofangbao

新浪微博达人勋

 楼主| 发表于 2013-5-14 10:19:34 | 显示全部楼层
qixiangren34 发表于 2013-5-14 08:15
仔细检查一下原来的数据

数据没有问题。。。
密码修改失败请联系微信:mofangbao

新浪微博达人勋

 成长值: 0
发表于 2013-5-14 11:59:20 | 显示全部楼层
aa22556688 发表于 2013-5-14 10:17
值大于-0.6的,就不属于干旱,就不用统计,只需要统计小于-0.6以下的干旱天数。。。这个程序运行结果不过 ...

看一下这些为0的地方,在中和重里面是否有数据?
密码修改失败请联系微信:mofangbao
您需要登录后才可以回帖 登录 | 立即注册 新浪微博登陆

本版积分规则

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

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

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