第四章:蒙古高压特征分析
4.1
实验实习目的(1)掌握气象要素气候及异常特征的基本研究方法。
(2)进一步巩固FORTRAN顺序结构和循环结构的程序设计方法和变量、函数、数组的使用方法,重点掌握外部文件对数据进行输入输出操作的方法。
(3)了解并掌握GrADS的使用流程。
(4)学习并掌握数据描述文件(*.ctl文件)的书写方法。
(5)学习书写简单的“*.gs”文件。
(6)掌握GrADS中open、reinit、d、c、quit、q、run等基本命令的使用方法。
(7)掌握GrADS维数环境设置方法。
(8)掌握GrADS绘制“line”、“bar”图形类型的方法,绘制1951-2010年蒙古高压强度异常的时间序列图。
(9)掌握保存GrADS绘制图形的一种方法。
4.2
实验实习内容
4.2.1
问题描述
已知1951-2010年一月蒙古高压强度、面积、位置指数序列,计算蒙古高压各指数的气候值、变率和距平,绘制蒙古高压的强度、面积、位置指数序列的时间序列图,分析冬季蒙古高压的异常规律。
4.2.2
问题分析
已知:1951-2010年一月蒙古高压强度、面积、经度、纬度指数序列资料p.dat、s.dat、lon.dat、lat.dat。
计算:蒙古高压各指数的气候、变率和距平值。
绘制:1951-2010年一月蒙古高压强度、面积、位置指数序列图。
通过分析,根据公式(4.1)、公式(4.2),求得蒙古高压一月环流指数气候及异常值。根据GrADS中line和bar两种图形格式绘制方法,绘制蒙古高压环流指数距平的时间序列图。
4.3
实验实习步骤
4.3.1
蒙古高压环流指数的气候和异常值计算
(1)分析问题,理清算法和程序,设计程序流程图并编写程序。
(2)启动软件开发环境Microsoft
Developer
Studio。
(3)在I盘上创建新工作区
shixi04。
(4)在工作区shixi04内创建新项目shixi04。
(5)在项目shixi04内创建源程序文件“mh.f90”,编辑输入源程序文本。
(6)在源程序文本中打开数据文件“p.dat”、“s.dat”、“lon.dat”、“lat.dat”,并将其值读入到相应的数组中。
(7)编写计算均值、变率和距平的子程序。
(8)调用子程序分别计算强度、面积、经度、纬度环流指数的均值、变率和距平。
(9)将蒙古高压环流指数的均值和变率写入到“mh1.dat”和“mh1.grd”两个文件中。将蒙古高压环流指数的距平值写入到“mh2.dat”和“mh2.grd”两个文件中。
(10)编译、构建、运行、调试FORTRAN程序。
4.3.2
蒙古高压环流指数距平时间序列图绘制
GrADS是对数据进行分析、处理和显示的软件,所以在使用该软件进行绘图时,必须有相应的数据文件,并且这些数据必须满足GrADS所要求的数据格式,否则就要进行数据处理;另外,GrADS并不是直接使用这些数据文件进行操作,而是通过一个对应的“数据描述文件”间接使用数据文件;对数据的处理和显示是通过GrADS系统提供的命令完成的;操作完成后,可以在图形输出窗口观察所绘图形,并将图形保存和输出。具体使用流程如1.3.3.3所述,此处不再赘述。
按1.3.3.3
所述的使用流程,完成蒙古高压环流指数距平时间序列图绘制,需要按以下步骤进行:
(1)为蒙古高压环流指数距平数据文件“mh2.grd”书写数据描述文件“mh2.ctl”,在此文件中定义四个变量pa,sa,lona,lata.(2)编写“mh2.gs”可执行文件,利用GrADS基本操作命令和line、bar两种绘图类型的绘图要素设置,以不同颜色和线性显示蒙古高压强度和面积距平时间序列图(曲线),分别以不同颜色显示蒙古高压经度和纬度距平时间序列图(柱状)。
(3)将蒙古高压强度和面积距平时间序列图(曲线)保存到“mhline.gmf”,将蒙古高压经度和纬度距平时间序列图(柱状)分别保存到“mhlonbar.gmf”和“mhlatbar.gmf”中。
(4)启动GrADS,调试、执行“mh2.gs”。
(5)分析蒙古高压气候及其异常特征。
4.4
实验实习关键技术及方法
某数据资料时间序列的距平为数据资料
与其平均值
之差
(4.1)
某数据资料的变率
为其均方差,反应变量围绕平均值的平均变化程度,其计算公式为
(4.2)
4.5
实验实习程序编写
4.5.1
FORTRAN程序编写
以下程序用于蒙古高压环流指数气候及异常值计算。
PROGRAM
mh
IMPLICIT
none
integer,parameter::
ny=60
!p(ny)、pa(ny)、pav和pd分别为强度指数原序列、距平序列、均值和标准差,其他参数量类似定义
real
p(ny),s(ny),lon(ny),lat(ny),pa(ny),sa(ny),lona(ny),lata(ny),pav,sav,lonav,latav,pd,sd,lond,latd
integer
i,j,k
open(1,file='i:\shixi\p.dat')
open(2,file='i:\shixi\s.dat')
open(3,file='i:\shixi\lon.dat')
open(4,file='i:\shixi\lat.dat')
do
i=1,ny
read(1,*)
p(i)
read(2,*)
s(i)
read(3,*)
lon(i)
read(4,*)
lat(i)
end
do
close(1)
close(2)
close(3)
close(4)
call
cha(ny,p,pa,pav,pd)
call
cha(ny,s,sa,sav,sd)
call
cha(ny,lon,lona,lonav,lond)
call
cha(ny,lat,lata,latav,latd)
open(5,file='i:\shixi\mh1.dat')
write(5,'(2f10.2)')
pav,pd
write(5,'(2f10.2)')
sav,sd
write(5,'(2f10.2)')
lonav,lond
write(5,'(2f10.2)')
latav,latd
close(5)
open(6,file='i:\shixi\mh1.grd',form='binary')
write(6)
pav,pd
write(6)
sav,sd
write(6)
lonav,lond
write(6)
latav,latd
close(6)
!下面两种书写数据的数据结构不同,注意区分。
open(7,file='i:\shixi\mh2.dat')
write(7,'(f10.2)')
(pa(i),i=1,ny)
write(7,'(f10.2)')
(sa(i),i=1,ny)
write(7,'(f10.2)')
(lona(i),i=1,ny)
write(7,'(f10.2)')
(lata(i),i=1,ny)
close(7)
open(8,file='i:\shixi\mh2.grd',form='binary')
do
i=1,ny
write(8)
pa(i)
write(8)
sa(i)
write(8)
lona(i)
write(8)
lata(i)
end
do
close(8)
end
!!!!!!!!!!!!求特征值
subroutine
cha(ny,x,xa,xav,xd)
integer::ny
integer
i
real::x(ny),xa(ny),xav,xd,sum
sum=0
do
i=1,ny
sum=sum+x(i)
enddo
xav=sum/ny
xd=0
do
i=1,ny
xa(i)=x(i)-xav
xd=xa(i)*xa(i)+xd
enddo
xd=sqrt(xd/ny)
return
end
4.5.2
GrADS程序编写
(1)蒙古高压环流指数距平数据文件“mh2.grd”书写数据描述文件“mh2.ctl”.dset
i:\shixi\mh2.grd
undef
-9.99E+33
title
Mongolia
high
pressure
circulation
index
departure
xdef
linear
ydef
linear
zdef
linear
tdef
linear
Jan1951
1yr
vars
pa
0
sa
0
lona
0
lata
0
endvars
(2)绘制蒙古高压异常时间序列图,书写可执行文件“mh2.gs”。
'reinit'
'open
i:\shixi\mh2.ctl'
'enable
i:\shixi\mhline.gmf'
'set
lat
1'
'set
lon
1'
'set
lev
1'
'set
t
60'
'set
gxout
line'
'set
ccolor
2'
'set
cstyle
1'
'set
cthick
4'
'set
cmark
2'
'd
pa'
'set
ccolor
4'
'set
cstyle
3'
'set
cthick
6'
'set
cmark
2'
'd
100*sa'
'print'
'disable
print'
'c'
'enable
i:\shixi\mhlonbar.gmf'
'set
gxout
bar'
'set
barbase
0'
'set
bargap
0'
'set
ccolor
2'
'd
lona'
'print'
'disable
print'
'c'
'enable
i:\shixi\mhlatbar.gmf'
'set
gxout
bar'
'set
barbase
0'
'set
bargap
0'
'set
ccolor
4'
'd
lata'
'print'
'disable
print'
4.6
实验实习结果
图1
1951-2010年1月蒙古高压强度与面积距平时间序列图
图2
1951-2010年1月蒙古高压经度距平时间序列图
图3
1951-2010年1月蒙古高压纬度距平时间序列图
4.7
实验实习结果分析
从图1可以看出,1月蒙古高压强度与面积呈现显著的正相关关系。存在年际及年代际的周期震荡,震荡周期大约为3~4年以及20年,在1956年、1977年以及2008年出现较高值,20世纪60年代中期开始下降,大约1975年达到最低值,之后快速上升。
从图2、3可以看出,1月蒙古高压的位置存在年代际的变化,周期大约为30~40年。在20世纪50年代初由南转北,由东转西,20世纪70年代末80年代初,蒙古高压位置由北转南。