- 积分
- 988
- 贡献
-
- 精华
- 在线时间
- 小时
- 注册时间
- 2018-4-27
- 最后登录
- 1970-1-1
|
登录后查看更多精彩内容~
您需要 登录 才可以下载或查看,没有帐号?立即注册
x
论文需要画这个图,我是做的平流层QBO对我国夏季降水的影响,找到了洪hong的一个帖子:中国160站降水的画图
http://bbs.06climate.com/forum.php?mod=viewthread&tid=44713&fromuid=97660
(出处: 气象家园)
楼主给的程序包很有用写的很好,图做出来真的很漂亮,但是楼主的程Fortran序是做的指数与降水距平的相关系数,我只需要做降水距平图,不知道该怎么改,这个程序算出的降水距平是二维数组,楼主给的绘图程序是三个步骤,第一个计算,第二步会生成一个grb文件,第三部gs直接绘图,但是想下面是我改了一半的第一步程序,想算1979-2017年的西风位相年份的降水距平,请各位大佬救救命
program rain_160_relation
integer,parameter :: m=160,nt=67,n=39,wt=21 !1951年到2017年=67年 我用的是1979年到2017年=39年 1979年=第29格点开始
integer it
real a6(m,nt),a7(m,nt),a8(m,nt),w6(m,wt),w7(m,wt),w8(m,wt),ra(m,wt),rsum(m),rain(m,wt)
open(1,file='C:\data\zother\fortran_160_1\r1606.txt')
do it=1,nt
read(1,*)(a6(i,it),i=1,m)
enddo
open(2,file='C:\data\zother\fortran_160_1\r1607.txt')
do it=1,nt
read(2,*)(a7(i,it),i=1,m)
enddo
open(3,file='C:\data\zother\fortran_160_1\r1608.txt')
do it=1,nt
read(3,*)(a8(i,it),i=1,m)
enddo
open(4,file='C:\data\zother\fortran_160_1\ww6.txt')
do it=1,wt
read(4,*)(w6(i,it),i=1,m)
enddo
open(5,file='C:\data\zother\fortran_160_1\ww7.txt')
do it=1,wt
read(5,*)(w7(i,it),i=1,m)
enddo
open(6,file='C:\data\zother\fortran_160_1\ww8.txt')
do it=1,wt
read(6,*)(w8(i,it),i=1,m)
enddo
!------------------------------------求降水距平百分率-ra(m,n)----------------------------------------------
do i=1,160
rsum(i)=0.0
do it=29,67
rsum(i)=rsum(i)+a6(i,it)+a7(i,it)+a8(i,it)
enddo
rsum(i)=rsum(i)/39.0
do it=1,21
ra(i)=w6(i,it)+w7(i,it)+w8(i,it)-rsum(i))*100/rsum(i)
enddo
enddo
!------------------------------------求降水距平场-rain(m,n)----------------------------------------------
do i=1,160
rsum(i)=0.0
do it=29,67
rsum(i)=rsum(i)+a6(i,it)+a7(i,it)+a8(i,it)
enddo
rsum(i)=rsum(i)/39.0
do it=1,21
rain(i,it)=w6(i,it)+w7(i,it)+w8(i,it)-rsum(i)
enddo
enddo
!call relation(ra,SMI,rrSMI,m,n)
open(8,file='rrSMI.txt')
do it=1,m
write(8,*)()
enddo
end
!--------------------------------------求相关系数子程序-----------------------------------------------
subroutine relation(rain,heat,r,m0,n0)
integer m0,n0
real rain(m0,n0),heat(n0),r(m0)
real avr(160),avh,sumh,sumr(160),sumk(160),suml(160),sump(160)
avr=0.0
avh=0.0
sumh=0.0
sumr=0.0
sumk=0.0
suml=0.0
sump=0.0
do i=1,n0
sumh=sumh+heat(i)
enddo
avh=sumh/n0
do i=1,m0
do j=1,n0
sumr(i)= sumr(i)+rain(i,j)
enddo
avr(i)=sumr(i)/n0
enddo
do i=1,m0
do j=1,n0
sumk(i)=sumk(i)+(rain(i,j)-avr(i))*(heat(j)-avh)
suml(i)=suml(i)+(rain(i,j)-avr(i))**2
sump(i)=sump(i)+(heat(j)-avh)**2
enddo
r(i)=(sumk(i)/n0)/((sqrt(suml(i))*sqrt(sump(i)))/n0)
enddo
end subroutine
这是第二步程序
program ueddcu
real lat(160),lon(160),rrSIM(160)
character*8 id(160)
open(1,file='C:\data\zother\fortran_zhandian\lat_lon.txt')
do i=1,160
read(1,*)lat(i),lon(i)
enddo
open(2,file='C:\data\zother\fortran_zhandian\rrSMI.txt') !只修改文件名
do i=1,160
read(2,*)rrsim(i)
enddo
open(8,file='C:\data\zother\fortran_zhandian\rrSIM.grb',form='binary')
!ccccccccccccccccccc写站点数据
do j=1,160
id(j)=char(j)
tim=0.0
nlev=1
nflag=1
write(8)id(j),lat(j),lon(j),tim,nlev,nflag,rrsim(j)
enddo
tim=0.0
nlev=0
nflag=1
write(8)id(j-1),lat(j-1),lon(j-1),tim,nlev,nflag
end
|
|