- 积分
- 4798
- 贡献
-
- 精华
- 在线时间
- 小时
- 注册时间
- 2016-11-13
- 最后登录
- 1970-1-1
|
登录后查看更多精彩内容~
您需要 登录 才可以下载或查看,没有帐号?立即注册
x
本帖最后由 bree115 于 2018-4-15 17:42 编辑
从NOAA上下载的38年月平均海温资料,先计算了每年6-11月的平均得到avesst_jjason(x,y,yr),现在想计算前19年和后19年距平场的多年平均。但是发现结果前19年和后19年每个格点上数值的绝对值相差很小(约0.000x),而且符号相反。画出的图也是相反的分布。
program mian
implicit none
integer,parameter::x=180,y=89,mo=12,n=19,yr=38
real,parameter::undef=-9.99e+08
integer i,j,iyr,cc
real h(x,y,yr),aveh(x,y),anoh(x,y,yr)
real anoh1(x,y),anoh2(x,y)
open(1,file='D:\lunwen\sst\avesst_jjason.grd',form='binary') !!!6-11月平均
do iyr=1,38
read(1) ((h(i,j,iyr),i=1,x),j=1,y)
enddo
!平均
aveh=0.0
do i=1,x
do j=1,y
cc=0
do iyr=1,38
if(h(i,j,iyr).ne.undef) then
aveh(i,j)=aveh(i,j)+h(i,j,iyr)
else
cc=cc+1
endif
enddo
if(cc.eq.0) then
aveh(i,j)=aveh(i,j)/38
else
aveh(i,j)=undef
endif
enddo;enddo
!距平
do i=1,x
do j=1,y
do iyr=1,yr
if(h(i,j,iyr).ne.undef.or.aveh(i,j).ne.undef) then
anoh(i,j,iyr)=h(i,j,iyr)-aveh(i,j)
else
anoh(i,j,iyr)=undef
endif
enddo;enddo;enddo
!!!1979-1997 ; 1998-2016
anoh1=0.0
do i=1,x
do j=1,y
cc=0
do iyr=1,n
if(anoh(i,j,iyr).ne.undef) then
anoh1(i,j)=anoh1(i,j)+anoh(i,j,iyr)
else
cc=cc+1
endif
enddo
if(cc.eq.0) then
anoh1(i,j)=anoh1(i,j)/n
else
anoh1(i,j)=undef
endif
enddo;enddo
anoh2=0.0
do i=1,x
do j=1,y
cc=0
do iyr=20,yr
if(anoh(i,j,iyr).ne.undef) then
anoh2(i,j)=anoh2(i,j)+anoh(i,j,iyr)
else
cc=cc+1
endif
enddo
if(cc.eq.0) then
anoh2(i,j)=anoh2(i,j)/n
else
anoh2(i,j)=undef
endif
enddo;enddo
print*,anoh2
open(10,file='D:\lunwen\sst\hc_anosst_19a.grd',form='binary')
write(10) ((anoh1(i,j),i=1,x),j=1,y)
close(10)
open(11,file='D:\lunwen\sst\hc_anosst_19b.grd',form='binary')
write(11) ((anoh2(i,j),i=1,x),j=1,y)
close(11)
end
|
-
-
|