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

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

实习要求:•根据所提供的实习说明和资料,按要求完成实习内容;•将完成的实习内容按步骤写入实习报告中,包括资料说明、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*12c(63)character*7a(63)integer i,j,kopen(5,file='D:\expriments\grads\slp.jan.grd',f orm='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', form='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 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)**2end 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.99e33xdef144linear-1802.5ydef73linear-902.5zdef1levels1000tdef63linear jun19511yrvars1slp00sea level pressureendvars编写1.gs文件:'reinit''open e:\grads\20150706qimo\test1\1.ctl''set lev1000''set lon-180180''set lat-9090''set t1''set gxout shaded''set grads off''set black-0.20.2''d slp''set gxout contour''d slp''draw title Lu Yu20131301070''cbar1.00''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),ti mcharacter*12c(63)character*7a(63)character*8stid(160)integer nlev,nflagopen(6,file='E:\grads\20150706qimo\test2\nin o34.txt')open(5,file='E:\grads\20150706qimo\test2\r16 07.txt')open(10,file=E:\grads\20150706qimo\test1\id. txt')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\cor r.7.txt')open(8,file='E:\grads\20150706qimo\test1\cor r.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)**2end do书写corr.7.grd的数据描述文件2.ctl;dset E:\grads\20150706qimo\test2\corr.7.dat dtype stationstnmap E:\grads\20150706qimo\test2\corr7.map UNDEF2.5E33TITLE corrTDEF1linear jan19511moV ARS1r099relationendvars准备corr.7.grd的站点映射文件corr7.map;relation=sfenzi/sqrt(sfenmu1*sfenmu2)end function relation准备GrADS画站点图时插值时所需格点数据Grid.grd和及其描述文件Grid161.ctl(已提供);编写2.gs文件,绘制1951-2013年1月Nino34海温指数与7月中国160站降水相关系数图,保存于corr.7.gmf文件中。

相关主题