| 
 
	积分4723贡献 精华在线时间 小时注册时间2016-11-13最后登录1970-1-1 
 | 
 
| 
本帖最后由 bree115 于 2018-4-15 17:42 编辑
x
登录后查看更多精彩内容~您需要 登录 才可以下载或查看,没有帐号?立即注册 
  
 从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
 
 
 
 | 
 
  
  |