爱气象,爱气象家园! 

气象家园

 找回密码
 立即注册

QQ登录

只需一步,快速开始

新浪微博登陆

只需一步, 快速开始

搜索
查看: 12977|回复: 20

求助!计算施能老师夏季风指数,结果与其相比差距较大,已贴gs & Fortran程序

[复制链接]

新浪微博达人勋

发表于 2013-9-17 16:37:34 | 显示全部楼层 |阅读模式

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

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

x
在计算施能老师夏季风指数结果后与其文章里的结果对比差异较大,差异感觉并非单纯由资料的不同引起,主要在于指数的位相不同。(施能老师文章中使用的资料是英国气象局逐月海平面气压资料)

同时,将结果与国家气候中心监测网上的结果也不同。

施能老师夏季风指数定义如下:
1.jpg

在计算时,先计算海平面气压夏季平均,并转为dat格式,gs如下
------------------------------------------------------------------------------------------------------------------------
'reinit'
'sdfopen E:\data\mon\slp.mon.mean.nc'
'set gxout fwrite'
'set fwrite E:\workgroup\SN\slp_sum.dat'

time=66
i=1
while (i<=time)
'set lon 0 357.5'
'set lat -90 90'
aa=12*i-6
ab=12*i-4
'define u=ave(slp,t='aa',t='ab',1)'
say i
'd u'
i=i+1
endwhile
'disable'
'reinit'

----------------------------------------------------------------------------------------------------------
再计算夏季风指数,fortran程序如下:
----------------------------------------------------------------------------------------------------------
      PROGRAM INTRPREC
      PARAMETER NO=144,NA=73,NY1=66
      REAL DAT(NO,NA,NY1)
        real datb1(NO,NA,NY1),DA1(NA,NY1)
        real C(NY1),CC(NY1)
        real ave1,bzc1,std1,ave2,bzc2,std2
        integer i,j,k,l,t,n,m
*************************************************************
      OPEN(1,FILE='slp_sum.dat',form='binary')
        read(1)(((DAT(i,j,n),i=1,NO),j=1,NA),n=1,NY1)
        close(1)
       
*************************标准化******************************
        !第一次标准化
        do io=1,NO
                do ia=1,NA
                ave1=0.0
                        do iy=1,NY1
                        ave1=ave1+DAT(io,ia,iy)
                        enddo
                        ave1=ave1/66.0
                bzc1=0.0
                        do iy=1,NY1
                        bzc1=bzc1+(DAT(io,ia,iy)-ave1)**2
                        enddo
                        bzc1=sqrt(bzc1/66.0)
                        do iy=1,NY1
                        datb1(io,ia,iy)=(DAT(io,ia,iy)-ave1)/bzc1
                        enddo
                enddo
        enddo
       
*************************计算EASM******************************
       
        do ia=1,NA
                do iy=1,NY1
                DA1(ia,iy)=datb1(45,ia,iy)-datb1(65,ia,iy) !110-160
                enddo               
        enddo
             
                do iy=1,NY1
                        C(iy)=0.0
                        do ia=45,57,2      !累加
                        C(iy)=C(iy)+DA1(ia,iy)
                        enddo
                enddo
       
        call BZH(c,cc)
       
        open(999,file='sum_EASM.txt')
        do i=1,NY1
      write(999,*) 1947+i,CC(i),-1.0*CC(i)
        enddo
        close(999)

        END


*************************标准化***********************************
      subroutine BZH(c,cc)
      INTEGER,PARAMETER::N=66
          INTEGER i
      REAL C(n),ave,CC(N),std

      ave=0.0
      do i=1,N
          ave=ave+c(i)
        enddo
        ave=ave/N

        std=0.0
        do i=1,N
          std=std+(c(i)-ave)**2
        enddo
        std=sqrt(std/N)

        do i=1,N
                CC(i)=(c(i)-ave)/std
        enddo
             
        END

----------------------------------------------------------------------------------------
气候中心提供结果:
summer monsoon.png
按以上程序计算结果(没有乘-1)
2.jpg

结果差异比较大,不知道有谁计算过,麻烦帮忙看看错误在哪里。。。不胜感激!

最终正确结果脚本及程序 将另发帖与大家共享



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

新浪微博达人勋

 楼主| 发表于 2013-9-17 17:13:42 | 显示全部楼层
orz~~~过节前木有人逛论坛了么- -
密码修改失败请联系微信:mofangbao

新浪微博达人勋

发表于 2013-9-18 09:06:58 | 显示全部楼层
有没有施老师的学生,来帮帮忙
密码修改失败请联系微信:mofangbao

新浪微博达人勋

发表于 2013-9-18 11:05:06 | 显示全部楼层
我想,问题可能出在你第一次标准化上,因为第一次标准化只是针各个纬度带的不均匀做的,不需要加时间的66年进去标准化,只做纬度循环。
只是个人一点想法,仅供参考
密码修改失败请联系微信:mofangbao

新浪微博达人勋

 楼主| 发表于 2013-9-18 11:12:30 | 显示全部楼层

你的意思是,第一次标准化不是对每个格点自身时间序列进行标准化,而是做纬度序列的标准化?
密码修改失败请联系微信:mofangbao

新浪微博达人勋

 楼主| 发表于 2013-9-18 11:13:33 | 显示全部楼层
wc619lf 发表于 2013-9-18 11:05
我想,问题可能出在你第一次标准化上,因为第一次标准化只是针各个纬度带的不均匀做的,不需要加时间的66年 ...

我试下看看哈~~thanks for your help~~
密码修改失败请联系微信:mofangbao

新浪微博达人勋

发表于 2013-9-18 11:18:10 | 显示全部楼层
timeover 发表于 2013-9-18 11:12
你的意思是,第一次标准化不是对每个格点自身时间序列进行标准化,而是做纬度序列的标准化?

嗯,从他的表述应该是这个意思,我也没计算过这个指数,但他说是第一次标准化是为了消除各个纬带的不均匀的
密码修改失败请联系微信:mofangbao

新浪微博达人勋

发表于 2013-9-18 11:19:06 | 显示全部楼层
也就是说你可以把时间循环放在最外面
密码修改失败请联系微信:mofangbao

新浪微博达人勋

 楼主| 发表于 2013-9-18 14:21:11 | 显示全部楼层
本帖最后由 timeover 于 2013-9-18 16:22 编辑
wc619lf 发表于 2013-9-18 11:19
也就是说你可以把时间循环放在最外面

C:\Documents and Settings\Harvey.Young\桌面\1.jpg 1.jpg


刚刚上传的有点问题,已修改
密码修改失败请联系微信:mofangbao

新浪微博达人勋

发表于 2013-9-18 15:49:33 | 显示全部楼层
请问有现成的算好的比较公认的夏季风指数或者moonsoon的指数吗?或者每年对中国影响较大的副高指数这类数据。一年一个值的这种的。
密码修改失败请联系微信:mofangbao
您需要登录后才可以回帖 登录 | 立即注册 新浪微博登陆

本版积分规则

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

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

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