- 积分
- 5600
- 贡献
-
- 精华
- 在线时间
- 小时
- 注册时间
- 2013-10-15
- 最后登录
- 1970-1-1
|
Fortran
系统平台: |
windows |
问题概况: |
想要计算夏季APO指数,但运行出来数据不太对 |
问题截图: |
- |
我看过提问的智慧: |
看过 |
自己思考时长(天): |
1 |
登录后查看更多精彩内容~
您需要 登录 才可以下载或查看,没有帐号?立即注册
x
我用的是1973年-2013年,每年6月至8月的500hPa温度场的资料,已经用GrADS提取成了grd格式的。用Fortran计算APO指时,编译和连接时都没有错误,可以运行完后数据好像不太对,我的程序如下:PROGRAM IAPO
implicit none
dimension tt(144,73,41),tp(73,41),tr(144,73,41),apo(41)
dimension ap(41),bz(41),tr1(41),tr2(41)
real fc,a,ave
open(10,file='d:\bylw\data\air500.grd',form='binary',status='old')
!读数据
do it=1,41
do j=1,73
do i=1,144
read(10)tt(i,j,it)
enddo;enddo;enddo
write(*,*)'read data ok'
do j=1,73
do it=1,41
tp(j,it)=0.0
enddo
enddo
do it=1,41
do j=1,73
do i=1,144
tp(j,it)=tp(j,it)+tt(i,j,it)/144
enddo;enddo;enddo
print*,tp
do it=1,41
do j=1,73
do i=1,144
tr(i,j,it)=tt(i,j,it)-tp(j,it)
enddo;enddo;enddo
write(*,*)'select region ok111'
do it=1,41
tr1(it)=0
enddo
do it=1,41
do j=43,57
do i=25,49
tr1(it)=tr1(it)+tr(i,j,it)/375
enddo
enddo
enddo
do it=1,41
tr2(it)=0
enddo
do it=1,41
do j=43,57
do i=73,97
tr2(it)=tr2(it)+tr(i,j,it)/375
enddo
enddo
enddo
do it=1,41
apo(it)=tr1(it)-tr2(it)
enddo
print*,apo
write(*,*)'select region ok222'
!标准化处理
ave=0.0
do it=1,41
ave=ave+apo(it)/41
enddo
do it=1,41
ap(it)=apo(it)-ave
enddo
print*,ap
a=0.0
do it=1,41
a=a+ap(it)**2
enddo
fc=sqrt(a/41)
print*,fc
write(*,*)'select region ok333'
do it=1,41
bz(it)=ap(it)/fc
enddo
print*,bz
write(*,*)'select region ok444'
open(20,file='d:\bylw\data\apo.grd',form='binary')
write(20) (apo(it),it=1,41)
open(30,file='d:\bylw\data\bz.grd',form='binary')
write(30) (bz(it),it=1,41)
close(20)
close(30)
end
这里是用亚洲和太平洋(我选的区域是15-50N,180-120W,60E-120E)区域平均的扰动温度(T')之差作为APO(亚洲-太平洋涛动)指数,T'=T-T的纬向平均。
是我程序有问题还是说本身提取的grd数据就有问题呢?麻烦各位大神指点下。
|
|