气象程序设计及绘图期末复习资料

上传人:f****u 文档编号:118696366 上传时间:2019-12-23 格式:PPT 页数:27 大小:955.50KB
返回 下载 相关 举报
气象程序设计及绘图期末复习资料_第1页
第1页 / 共27页
气象程序设计及绘图期末复习资料_第2页
第2页 / 共27页
气象程序设计及绘图期末复习资料_第3页
第3页 / 共27页
气象程序设计及绘图期末复习资料_第4页
第4页 / 共27页
气象程序设计及绘图期末复习资料_第5页
第5页 / 共27页
点击查看更多>>
资源描述

《气象程序设计及绘图期末复习资料》由会员分享,可在线阅读,更多相关《气象程序设计及绘图期末复习资料(27页珍藏版)》请在金锄头文库上搜索。

1、期 末 复 习 气象程序设计及绘图 学习目标 通过学习,了解FORTRAN语言的特点,基本成 份及使用方法,具有阅读程序、编制程序、调试 程序的基本能力。在此基础上,根据气象数据处 理与分析的特点,切实地掌握用GrADS软件对数 据进行图形化显示的基本方法,初步具备编程绘 图的能力。 气象程序设计及绘图专业基础课 程序设计 FORTRAN语言GrADS 绘 图 气象数据资料 分析 基本程序结构 program main implicit none integer real character complex logical FORTRAN程序设计 主程序开始 不采用I-N规则 变量(包括数组)

2、申明 及初始化 基本程序结构 program main implicit none integer: real: character: complex: logical: FORTRAN程序设计 主程序开始 不采用I-N规则 变量(包括数组)申明 及初始化 注意:character类型的使用方法 赋值语句 data 变量列表/初值列表/ read *, open(文件号,file=路径及文件名) read(文件号,格式)。 顺序结构 选择结构 循环结构 获取数据 程序算法 单分支 IF(条件) THEN IF块 END IF 双分支 IF(条件)THEN IF块 ELSE ELSE块 END

3、IF 多分支 IF(条件1)THEN 块1 ELSE IF(条件2)THEN 块2 ELSE IF(条件3)THEN 块3 . . ELSE IF(条件n)THEN 块n ELSE 块n+1 END IF 逻辑if语句 IF(条件) 语句 SELECT CASE (选择表达式 ) CASE(控制表达式1) 块1 CASE(控制表达式2) 块2 . . CASE(控制表达式n) 块n CASE DEFAULT 默认块 END SELECT 可以相互嵌套 DO 循环变量 = E1,E2,E3 循环体 END DO R = MAX ( INT ( ( E2 - E1 + E3 ) / E3 ),0

4、) DO WHILE (逻辑表达式) 循环体 END DO 可以相互嵌套 print *,输出列表 write(*,*) 输出列表 open(文件号,file=路径及文件名) write(文件号,格式)。 输出数据 注意:带格式的输入输出方式 二进制数据: open(文件号,file=路径及文件名,form=binary) read(文件号,格式)。 write(文件号,格式)。 End program main 主程序结束 程序入口 需要被调用 子程序包括:函数子程序(function) 子例行程序(subroutine) 子程序又分为:外部子程序和内部子程序 外部函数子程序 由一个实现某种

5、特定功能的子程序组成,调用程 序单元调用它得到一个函数值 定义义形式: 类类型说说明 FUNCTION 函数名(虚参1,虚参2,) 说说明语语句 执执行语语句 。 END FUNCTION 函数名 表示函数子程序定义开始 表示函数子程序定义结束 外部子例行程序 子例行程序不仅仅可求一个值值,还还可求多个值值或 不求值值而执执行某种操作,因此具有更广泛的用途 定义义形式: SUBROUTINE 子例行程序名(虚参1,虚参2,) 说说明语语句 执执行语语句 END SUBROUTINE 子例行程序名 表示子例行程序定义义开始 表示子例行程序定义结义结 束 调试FORTRAN程序 语法错误(synt

6、ax error)。如拼写错或标 点符号错,在编译时被编译器检测出来; 运行错误(run-time error)。当程序执行 时企图做非法运算操作,则发生运行错误 (例如,除以0)。这些错误导致程序执行 时异常中断。 逻辑错误(logical error)。程序能够正常 编译和运行,但结果是错误的。 例题: 利用1951-2010年1月蒙古高压强度指数(data/h-p.dat)(备注:需要 标准化以后使用)和1951-2010年1月中国160站气温资料 (data/t1601.dat)(备注:实际存放的资料是61年的,只读60即可, 需要标准化以后使用),根据3.5节计算1月蒙古高压强度与中

7、国160 站气温的相关关系。要求以“*.dat”和“*.grd”两种格式保存1951-2010 年1月蒙古高压强度与我国气温的同期相关数据。 integer,parameter: n=60,start=1951 !character*10 char1 integer i !integer(4) station,nstation real a(n), b(n), c(160,n),co open(1,file=d:aatest1h-p.dat,form=formatted) open(2,file=d:aatest1t1601.txt,form=formatted) open(3,file=d:

8、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) do i=1,160 do j=1,60 b(j)=c(i,j) enddo call COR2 ( n, a, b, co) write(3,(f12.5) co write(4) co !,colev !returns co=0.9548129; colev=0.1952 enddo clo

9、se(3) close(4) end 主程序变量申明 获取数据 循环嵌套 调用子程序 输出数据 主程序结束 注释 !求相关系数r subroutine COR2 ( n, a, b, co ) integer n real co real a(n),b(n) !标准化a(i),b(i) suma=sum(a(1:n)/n sumb=sum(b(1:n)/n ab=0 a2=0 b2=0 do i=1,n ab=ab+(a(i)-suma)*(b(i)-sumb) a2=a2+(a(i)-suma)*2 b2=b2+(b(i)-sumb)*2 enddo co=ab/sqrt(a2*b2) pr

10、int*,co return end 子程序开始 子程序变量申明 子程序算法 子程序结束 准备数据 文件(包括 前期数据 处理) 编写及检 查数据描 述文件 *.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

11、)文件的Fortran程序。 例题6-6 GrADS要求数据如何排放? v850.dat数据内容: 时间说明 PROGRAM PROCESSING IMPLICIT none integer,parameter: m0=37,n0=17,tim=48 real v(m0,n0,tim),u(m0,n0,tim) integer i,j,k open(1,file=d:cvfv850.dat) open(2,file=d:cvfu850.dat) do k=1,tim read(1,1000) read(1,2000) (v(i,j,k),i=1,m0),j=1,n0) read(2,1000)

12、 read(2,2000) (u(i,j,k),i=1,m0),j=1,n0) end do 1000 format(2i7) 2000 format(37F6.2) 读时间说明 准备数据文件:利用fortran将十进制文件转换为二进制文件 十进制数据 循环顺序:经度、纬度、层次、时间 write(*,2000) (v(i,j,1),i=1,m0),j=1,n0) open(3,file=d:cvfwind850.grd,form=binary) do k=1,tim write(3) (v(i,j,k),i=1,m0),j=1,n0) write(3) (u(i,j,k),i=1,m0),j

13、=1,n0) end do end 二进制数据 针对wind850.grd二进制数据文件,如果给出如 下数据说明文件,即可用GrADS绘图 dset d:cvfwind850.grd undef -9.99E+33 title NCEP/NCAR REANALYSIS PROJECT xdef 37 linear 60.000 2.500 ydef 17 linear 0.000 2.500 zdef 1 levels 850 tdef 48 linear JAN1982 1mo vars 2 v 1 99 v wind (m/s) u 1 99 u wind (m/s) endvars CT

14、L 文件 编写ctl文件 编写gs文件 reinit open d:/cvf/wind850.ctl enable print d:/cvf/wind850-1.gmf set grads off set grid off set t 13 set parea 1 10 1.5 7.5 set xlopts 1 4 0.16 set ylopts 1 4 0.16 set xlint 10 set ylint 10 define uave1=ave(u,t=1,t=48,12) define vave1=ave(v,t=1,t=48,12) set gxout vector set arrsc

15、l 0.5 10.0 d uave1;vave1 print disable print ; 编写gs文件 reinit open d:/cvf/wind850.ctl 打开二进制数据文件的文件 enable print d:/cvf/wind850-1.gmf 打开存图文件 set grads off 去掉画图角标 set grid off 去掉网格线 set t 13 设置固定于某个时次,以便绘制二维图形 set parea 1 10 1.5 7.5 设置绘图区域 set xlopts 1 4 0.16 设置x轴标记 set ylopts 1 4 0.16 设置y轴标记 set xlint 10 设置x轴标记间隔单位 set ylint 10 设置x轴标记间隔单位 define uave1=ave(u,t=1,t=48,12) 定义新变量,计算1月份平均u风场 define vave1=ave(v,t=1

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 办公文档 > 其它办公文档

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号