当前位置:文档之家› 气象程序设计及绘图实习报告

气象程序设计及绘图实习报告

实习要求:•根据所提供的实习说明和资料,按要求完成实习内容;•将完成的实习内容按步骤写入实习报告中,包括资料说明、Fortran程序、CTL文件、gs文件、绘制的图形(要求在图形上方用draw title的方式添加标题,注明姓名拼音及学号)•根据所绘图形及查找相关文献,说明本次实习所求物理量场的意义。

实习内容:•Nino34海温指数与海平面气压相关图•Nino34海温指数与中国160站降水相关图1.绘制1月份Nino34海温指数与1月份海平面气压相关图1.1 资料说明➢Nino34指数:Nino34.txt是1951年1月至2013年12月Nino3.4区(热带太平洋:西经170度~西经120度、北纬5度~南纬5度)区域平均海温指数资料,共有63行数据,每行数据第一个数字为年份,后面12个数字为该年1-12月的海温指数;➢全球海平面气压月平均数据:slp.jan.grd为1951至2013年的1月全球海平面气压场二进制数据,年数为63年,格点数144*73,水平分辨率2.5︒*2.5︒;1.2步骤:1用Fortran编写corr.grid.f90文件,计算1951-2013年1月Nino34海温指数与海平面气压相关系数,计算结果保存于corr.slp.grd 文件中;corr.grid.f90文件:program cximplicit nonerealt(63),p(73,144,63),r(73,144),relation,z(63) character*12 c(63)character*7 a(63)integer i,j,kopen(5,file='D:\expriments\grads\slp.jan.grd',fo rm='binary')open(6,file='D:\expriments\grads\nino34.txt') do i=1,63read(6,'(A12)') c(i)end dodo i=1,63read(c(i),'(A7,F5.2)') a(i),t(i)end dodo k=1,63read(5) ((p(i,j,k),j=1,144),i=1,73)end do!print*,pdo i=1,73do j=1,144do k=1,63z(k)=p(i,j,k)end dor(i,j)=relation(z,t,63)end doend do!print*,ropen(7,file='D:\expriments\grads\corr.slp.txt') open(8,file='D:\expriments\grads\corr.slp.grd',f orm='binary')write(7,'(144F5.2)') ((r(i,j),j=1,144),i=1,73) write(8) ((r(i,j),j=1,144),i=1,73)endfunction relation(a,b,n)implicit noneinteger,intent(in)::nreal,intent(in)::a(n),b(n)real::relation !返回的相关系数integer::i,j !循环控制变量real::sfenzi,sfenmu1,sfenmu2,s !加法器real::amean,bmean !a,b向量的平均值!计算平均值s=0.do i=1,ns=s+a(i) end do amean=s/n s=0.do i=1,ns=s+b(i) end do bmean=s/n !计算相关系数sfenzi=0.sfenmu1=0.sfenmu2=0.do i=1,nsfenzi=sfenzi+(a(i)-amean)*(b(i)-bmean) sfenmu1=sfenmu1+(a(i)-amean)**2sfenmu2=sfenmu2+(b(i)-bmean)**2 end dorelation=sfenzi/sqrt(sfenmu1*sfenmu2)end function relation保存于corr.slp.grd 文件中。

书写corr.slp.grd 的数据描述文件1.ctl:dset e:\grads\20150706qimo\test1\corr.slp.grdtitle slpundef -9.99e33xdef 144 linear -180 2.5ydef 73 linear -90 2.5zdef 1 levels 1000tdef 63 linear jun1951 1yrvars 1slp 0 0 sea level pressureendvars编写1.gs文件:'reinit''open e:\grads\20150706qimo\test1\1.ctl''set lev 1000''set lon -180 180''set lat -90 90''set t 1''set gxout shaded''set grads off''set black -0.2 0.2''d slp''set gxout contour''d slp''draw title Lu Yu ''cbar 1.0 0''printim e:\grads\20150706qimo\test1\1.png white';绘制1951-2013年1月Nino34海温指数与海平面气压相关系数图:1951-2013年1月Nino34海温指数与海平面气压相关系数图2 绘制1月份Nino34海温指数与7月份中国160站降水相关图:2.1资料说明➢Nino34指数:Nino34.txt是1951年1月至2013年12月Nino3.4区(热带太平洋:西经170度~西经120度、北纬5度~南纬5度)区域平均海温指数资料,共有63行数据,每行数据第一个数字为年份,后面12个数字为该年1-12月的海温指数;➢160站降水资料:r1607.txt是中国160站1951~2013年共63年7月降水资料,数据是1951年7月各站降水量按照id.txt中各站顺序写入,该年160站都写入后再写下1952年7月各站降水量,...................,直至2013年7月各站降水量按照id.txt中各站顺序写入;➢160站站点资料:id.txt是160站站号和纬度、经度资料,共有160行。

每行第一个数据为8位字符型的站号,后面两个数字分别为该站点纬度和经度;2.2 步骤:用Fortran编写corr.station.f90文件,计算1951-2013年1月Nino34海温指数与7月160站降水相关系数,计算结果保存于corr.7.txt和corr.7.grd文件中;program cximplicit noneinteger p(160,63),i,j,kreals(63),r(160),relation,t(63),lon(160),lat(160),tim character*12 c(63)character*7 a(63)character*8 stid(160)integer nlev,nflagopen(6,file='E:\grads\20150706qimo\test2\nino 34.txt') open(5,file='E:\grads\20150706qimo\test2\r160 7.txt')open(10,file=E:\grads\20150706qimo\test1\id.t xt')do i=1,160read(10,*) stid(i),lat(i),lon(i)end doprint*,stiddo j=1,63read (5,*) (p(i,j),i=1,160)end dodo i=1,63read(6,'(A12)') c(i)end dodo i=1,63read(c(i),'(A7,F5.2)') a(i),t(i)end dodo i=1,160do j=1,63s(j)=p(i,j)end dor(i)=relation(s,t,63)end do!print*,rtim=0nlev=1nflag=1open(7,file='E:\grads\20150706qimo\test2\corr.7.txt')open(8,file='E:\grads\20150706qimo\test1\corr.7.grd',form='binary')do i=1,160write(7,*) stid(i),lon(i),lat(i),tim,nlev,nflag,r(i) end dodo i=1,160write(8)stid(i),lat(i),lon(i),tim,nlev,nflag,r(i) end donlev=0write(8)stid(160-1),lat(160-1),lon(160-1),tim,nlev,nflag,r(160-1)endfunction relation(a,b,n)!本程序计算两列向量的相关系数!a,b分别是待计算的向量!n是向量的长度,要求两列向量等长implicit noneinteger,intent(in)::nreal,intent(in)::a(n),b(n)real::relation !返回的相关系数integer::i,j !循环控制变量real::sfenzi,sfenmu1,sfenmu2,s !加法器real::amean,bmean !a,b向量的平均值!计算平均值s=0.do i=1,ns=s+a(i)end doamean=s/ns=0.do i=1,ns=s+b(i)end dobmean=s/n!计算相关系数sfenzi=0.sfenmu1=0.sfenmu2=0.do i=1,nsfenzi=sfenzi+(a(i)-amean)*(b(i)-bmean) sfenmu1=sfenmu1+(a(i)-amean)**2sfenmu2=sfenmu2+(b(i)-bmean)**2 end dorelation=sfenzi/sqrt(sfenmu1*sfenmu2)end function relation书写corr.7.grd 的数据描述文件2.ctl ;dset E:\grads\20150706qimo\test2\corr.7.dat dtype stationstnmap E:\grads\20150706qimo\test2\corr7.map UNDEF 2.5E33TITLE corrTDEF 1 linear jan1951 1moVARS 1r 0 99 relationendvars准备corr.7.grd的站点映射文件corr7.map;准备GrADS画站点图时插值时所需格点数据Grid.grd和及其描述文件Grid161.ctl(已提供);编写2.gs文件,绘制1951-2013年1月Nino34海温指数与7月中国160站降水相关系数图,保存于corr.7.gmf 文件中。

相关主题