




已阅读5页,还剩22页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
期末复习,气象程序设计及绘图,学习目标,通过学习,了解FORTRAN语言的特点,基本成份及使用方法,具有阅读程序、编制程序、调试程序的基本能力。在此基础上,根据气象数据处理与分析的特点,切实地掌握用GrADS软件对数据进行图形化显示的基本方法,初步具备编程绘图的能力。,气象程序设计及绘图专业基础课,程序设计,FORTRAN语言,GrADS,绘图,气象数据资料,分析,基本程序结构programmainimplicitnoneintegerrealcharactercomplexlogical,FORTRAN程序设计,主程序开始,不采用I-N规则,变量(包括数组)申明及初始化,基本程序结构programmainimplicitnoneinteger:real:character:complex:logical:,FORTRAN程序设计,主程序开始,不采用I-N规则,变量(包括数组)申明及初始化,注意:character类型的使用方法,赋值语句data变量列表/初值列表/read*,open(文件号,file=路径及文件名)read(文件号,格式)。顺序结构选择结构循环结构,获取数据,程序算法,单分支IF(条件)THENIF块ENDIF,双分支IF(条件)THENIF块ELSEELSE块ENDIF,多分支IF(条件1)THEN块1ELSEIF(条件2)THEN块2ELSEIF(条件3)THEN块3.ELSEIF(条件n)THEN块nELSE块n+1ENDIF,逻辑if语句IF(条件)语句,SELECTCASE(选择表达式)CASE(控制表达式1)块1CASE(控制表达式2)块2.CASE(控制表达式n)块nCASEDEFAULT默认块ENDSELECT,可以相互嵌套,DO循环变量=E1,E2,E3循环体ENDDO,R=MAX(INT(E2-E1+E3)/E3),0),DOWHILE(逻辑表达式)循环体ENDDO,可以相互嵌套,print*,输出列表write(*,*)输出列表open(文件号,file=路径及文件名)write(文件号,格式)。,输出数据,注意:带格式的输入输出方式,二进制数据:open(文件号,file=路径及文件名,form=binary)read(文件号,格式)。write(文件号,格式)。,Endprogrammain,主程序结束,程序入口,需要被调用,子程序包括:函数子程序(function)子例行程序(subroutine),子程序又分为:外部子程序和内部子程序,外部函数子程序,由一个实现某种特定功能的子程序组成,调用程序单元调用它得到一个函数值,定义形式:类型说明FUNCTION函数名(虚参1,虚参2,)说明语句执行语句。ENDFUNCTION函数名,表示函数子程序定义开始,表示函数子程序定义结束,外部子例行程序,子例行程序不仅可求一个值,还可求多个值或不求值而执行某种操作,因此具有更广泛的用途,定义形式:SUBROUTINE子例行程序名(虚参1,虚参2,)说明语句执行语句ENDSUBROUTINE子例行程序名,表示子例行程序定义开始,表示子例行程序定义结束,调试FORTRAN程序,语法错误(syntaxerror)。如拼写错或标点符号错,在编译时被编译器检测出来;运行错误(run-timeerror)。当程序执行时企图做非法运算操作,则发生运行错误(例如,除以0)。这些错误导致程序执行时异常中断。逻辑错误(logicalerror)。程序能够正常编译和运行,但结果是错误的。,例题:,利用1951-2010年1月蒙古高压强度指数(data/h-p.dat)(备注:需要标准化以后使用)和1951-2010年1月中国160站气温资料(data/t1601.dat)(备注:实际存放的资料是61年的,只读60即可,需要标准化以后使用),根据3.5节计算1月蒙古高压强度与中国160站气温的相关关系。要求以“*.dat”和“*.grd”两种格式保存1951-2010年1月蒙古高压强度与我国气温的同期相关数据。,integer,parameter:n=60,start=1951!character*10char1integeri!integer(4)station,nstationreala(n),b(n),c(160,n),coopen(1,file=d:aatest1h-p.dat,form=formatted)open(2,file=d:aatest1t1601.txt,form=formatted)open(3,file=d:aatest1mh-t-1.dat,form=formatted)open(4,file=d:aatest1mh-t-1.grd,form=binary)read(1,*)(a(i),i=1,n)close(1)read(2,*)(c(i,j),i=1,160),j=1,n)close(2)doi=1,160doj=1,60b(j)=c(i,j)enddocallCOR2(n,a,b,co)write(3,(f12.5)cowrite(4)co!,colev!returnsco=0.9548129;colev=0.1952enddoclose(3)close(4)end,主程序变量申明,获取数据,循环嵌套,调用子程序,输出数据,主程序结束,注释,!求相关系数rsubroutineCOR2(n,a,b,co)integernrealcoreala(n),b(n)!标准化a(i),b(i)suma=sum(a(1:n)/nsumb=sum(b(1:n)/nab=0a2=0b2=0doi=1,nab=ab+(a(i)-suma)*(b(i)-sumb)a2=a2+(a(i)-suma)*2b2=b2+(b(i)-sumb)*2enddoco=ab/sqrt(a2*b2)print*,coreturnend,子程序开始,子程序变量申明,子程序算法,子程序结束,准备数据文件(包括前期数据处理),编写及检查数据描述文件*.ctl,设定图样进行绘图(可编写脚本文件*.gs),保存结果,GrADS绘图流程,在“写字板”或者“记事本”中编写,现有ASCII码(十进制数据格式)数据资料文件u850.dat和v850.dat,其空间范围:60-150E,0-40N;层次:u、v为850Pa;时段:1982.1-1985.12;分辨率:2.5*2.5;数据排放顺序满足GrADS要求。要求编写出将这2个文件转换成1个二进制(binary)文件的Fortran程序。,例题6-6,GrADS要求数据如何排放?,v850.dat数据内容:,时间说明,PROGRAMPROCESSINGIMPLICITnoneinteger,parameter:m0=37,n0=17,tim=48realv(m0,n0,tim),u(m0,n0,tim)integeri,j,kopen(1,file=d:cvfv850.dat)open(2,file=d:cvfu850.dat)dok=1,timread(1,1000)read(1,2000)(v(i,j,k),i=1,m0),j=1,n0)read(2,1000)read(2,2000)(u(i,j,k),i=1,m0),j=1,n0)enddo1000format(2i7)2000format(37F6.2),读时间说明,准备数据文件:利用fortran将十进制文件转换为二进制文件,十进制数据,循环顺序:经度、纬度、层次、时间,write(*,2000)(v(i,j,1),i=1,m0),j=1,n0)open(3,file=d:cvfwind850.grd,form=binary)dok=1,timwrite(3)(v(i,j,k),i=1,m0),j=1,n0)write(3)(u(i,j,k),i=1,m0),j=1,n0)enddoend,二进制数据,针对wind850.grd二进制数据文件,如果给出如下数据说明文件,即可用GrADS绘图dsetd:cvfwind850.grdundef-9.99E+33titleNCEP/NCARREANALYSISPROJECTxdef37linear60.0002.500ydef17linear0.0002.500zdef1levels850tdef48linearJAN19821movars2v199vwind(m/s)u199uwind(m/s)endvars,CTL文件,编写ctl文件,编写gs文件,reinitopend:/cvf/wind850.ctlenableprintd:/cvf/wind850-1.gmfsetgradsoffsetgridoffsett13setparea1101.57.5setxlopts140.16setylopts140.16setxlint10setylint10defineuave1=ave(u,t=1,t=48,12)definevave1=ave(v,t=1,t=48,12)setgxoutvectorsetarrscl0.510.0duave1;vave1printdisableprint;,编写gs文件,reinitopend:/cvf/wind850.ctl打开二进制数据文件的文件enableprintd:/cvf/wind850-1.gmf打开存图文件setgradsoff去掉画图角标setgridoff去掉网格线sett13设置固定于某个时次,以便绘制二维图形setparea1101.57.5设置绘图区域setxlopts140.16设置x轴标记setylopts140.16设置y轴标记setxlint10设置x轴标记间隔单位setylint10设置x轴标记间隔
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 农发行汉中市汉台区2025秋招笔试创新题型专练及答案
- 船闸及升船机运行员岗位操作技能考核试卷及答案
- 自轮运转设备检修工特殊工艺考核试卷及答案
- 公路水运工程试验检测员效率提升考核试卷及答案
- 农发行四平市伊通满族自治县2025秋招面试典型题目及参考答案
- 热工计量员培训考核试卷及答案
- 缩放排工技能操作考核试卷及答案
- 铲车维修考试试题及答案
- 英语试卷拍照翻译及答案
- 2025年泰国日语考试试题及答案
- 物业保安培训课程内容与实施策略
- 宿舍交接协议书范本
- 区域医药经理的管理职能
- 《基于PLC的自动灌溉系统设计(附IO表和程序梯形图)》14000字
- 人工智能平台服务合同
- DB33-T 1406-2024 职务科技成果转化管理规范
- 2025经皮去肾交感神经术治疗高血压专家建议
- 《摩登时代观后感》课件
- (完整版)小学1-6年级英语单词(人教版)
- GB/T 32825-2024三相干式立体卷铁芯电力变压器技术参数和要求
- 护理健康宣教PDCA案例
评论
0/150
提交评论