?
?
实?习?报?告?书
课程名称:气象统计方法课程实践
姓名: 学号:
班级: 级气科 班
\\\\*实习一 求500hPa高度场气候场、距平场和均方差场
实习时间:第9周周三1、2节
1. 资料介绍
有一500hPa高度场资料,文件名,范围:60~150E,0~40N. 时段:~共48个月。水平分辨率:*,格点数:37*17。 2.要求
编fortran程序,求500hPa高度场的 (1)气候场; (2)距平场; (3)均方差场。
并能用Grads做出图形,实习报告中气候场、距平场、均方差场任意给出两张图,图注要清楚,即要注明是哪个时间的图形,并做简单分析。
注:给出了如何用fortran读取ASCII码资料. ? FORTRAN
program sx1 implicit none
integer nx,ny,mo,yr
parameter(nx=37,ny=17,mo=12,yr=4) real var(nx,ny,mo,yr)
real at(nx,ny,mo),xd(nx,ny,mo,yr),sx(nx,ny,mo) integer i,j,m,t,it,iy,irec
open(5,file='d:\\study\\form\\shixione\\') do iy=1,4 do m=1,12 read(5,1000)
read(5,3000)((var(i,j,m,iy),i=1,nx),j=1,ny) enddo enddo
close(5)
!计算气候场at do t=1,12 do j=1,ny do i=1,nx
at(i,j,t)=0 do it=1,4
at(i,j,t)=at(i,j,t)+var(i,j,t,it) enddo
at(i,j,t)=at(i,j,t)/4 enddo enddo enddo
!求距平场xd do t=1,12 do j=1,ny do i=1,nx
xd(i,j,t,1)=0 do it=1,4
xd(i,j,t,it)=var(i,j,t,it)-at(i,j,t) enddo enddo enddo enddo
!求均方差场sx do t=1,12 do j=1,ny do i=1,nx sx(i,j,t)=0 do it=1,4
sx(i,j,t)=sx(i,j,t)+(var(i,j,t,it)-at(i,j,t))**2 enddo
sx(i,j,t)=sqrt(sx(i,j,t)/4) enddo enddo enddo
!写入气候场
open(10,file='d:\\study\\form\\shixione\\',form='unformatted',access='direct',recl=nx*ny) irec=0 do t=1,12 irec=irec+1
write(10,rec=irec)((at(i,j,t),i=1,nx),j=1,ny) enddo
close(10) !写入距平场
open(11,file='d:\\study\\form\\shixione\\',form='unformatted',access='direct',recl=nx*ny) irec=0 do it=1,4 do t=1,12 irec=irec+1
write(11,rec=irec)((xd(i,j,t,it),i=1,nx),j=1,ny) enddo enddo close(11)
!写入均方差场
open(12,file='d:\\study\\form\\shixione\\',form='unformatted',access='direct',recl=nx*ny) irec=0 do t=1,12 irec=irec+1
write(12,rec=irec)((sx(i,j,t),i=1,nx),j=1,ny) enddo close(12)
1000 format(2i7) 2000 format 3000 format 4000 format
end program sx1
? 运行结果:
? Grads文件
气候场
'reinit'
'enable print d:\\study\\form\\shixione\\' 'open d:\\study\\form\\shixione\\' 'set grid off' 'set grads off' 'set lat 0 40' 'set lon 60 150' 'set lev 500' mon=1
while(mon<=12) 'set t 'mon'' 'd h'
'draw title 1982year'mon'month' 'print' 'c'
mon=mon+1 endwhile
'disable print' ;
距平场