- 积分
- 1778
- 贡献
-
- 精华
- 在线时间
- 小时
- 注册时间
- 2022-10-5
- 最后登录
- 1970-1-1
|
登录后查看更多精彩内容~
您需要 登录 才可以下载或查看,没有帐号?立即注册
x
本帖最后由 WesleyMoob 于 2022-11-29 22:35 编辑
利用数据160zhan-rainfall-summer.txt,求出1982-2006年中国160站各站夏季降水线性倾向率,并给出分布图。
一、首先通过fortran进行编程计算降水线性倾向率
1)
program main
implicit none
integer,parameter ::m=160,n=25
character(len=8)sta(m)
integer nflag,nlev
real jd(m),wd(m),jsdata(m,n),b(m),yr(n),avejs(m)
real aveyr,sxy,sx2,tim
integer i,j
yr=(/1982,1983,1984,1985,1986,1987,1988,1989,1990,1991,1992,1993,1994,1995,1996,1997,&
1998,1999,2000,2001,2002,2003,2004,2005,2006/)
open(10,file='/Users/99/Desktop/160zhan-rainfall-summer.txt')
read(10,*)
do i=1,m
read(10,*)sta(i),wd(i),jd(i),(jsdata(i,j),j=1,n)
end do
do i=1,m
call getb(yr,jsdata(i,:),n,sxy,sx2)
b(i)=sxy/sx2
end do
close(10)
open(20,file='/Users/wesleymoob/Desktop/xxqxl.txt')
write(20,*)b
close(20)
open(30,file="/Users/99/Desktop/xxqxl.grd",form='unformatted',access='stream')
tim=0.0
nflag=1
nlev=1
do i=1,m
write(30)sta(i),wd(i),jd(i),tim,nlev,nflag,b(i)
end do
nlev=0
write(30)sta(m-1),wd(m-1),jd(m-1),tim,nlev,nflag
close(30)
end program main
subroutine getb(x,y,N,s,x2)
implicit none
integer N
real x(N),y(N)
real ano1(N),ano2(N)
real ave1,ave2
real s,x2,s1,s2
ave1=sum(x(:))/real(N)
ave2=sum(y(:))/real(N)
ano1=x-ave1
ano2=y-ave2
x2=sum(ano1(:)**2)/real(N)
s1=sqrt(sum(ano1(:)**2)/real(N))
s2=sqrt(sum(ano2(:)**2)/real(N))
s=sum(ano1(:)*ano2(:))/real(N)
return
endsubroutine getb
2)用grads画图
二、此时进行得到160个站的夏季降水线性倾向率的站点资料,现需要对其进行插值,得到格点资料。
1)先建立一个所需范围的格点场并赋值为1.0(满足自己要求的范围和精度)
rogram gen_grid
implicit none
integer,parameter::x=121,y=81
integer i,j
real grid
grid=1.0
open(10,file="/Users/99/Desktop/grid.grd",form='unformatted',access='stream')
do i=1,y
do j=1,x
write(10)grid
end do
end do
close(10)
end program gen_grid
2)在grads中利用‘oacres(grid,b.2)‘ 进行插值,并画图
|
-
-
xxqxl.ctl
757 Bytes, 下载次数: 6, 下载积分: 金钱 -5
仅画站点图的ctl
-
-
xxqxl.gs
280 Bytes, 下载次数: 4, 下载积分: 金钱 -5
仅画站点图的gs
-
-
QT6.ctl
198 Bytes, 下载次数: 5, 下载积分: 金钱 -5
画格点图的ctl
-
-
QT6.gs
442 Bytes, 下载次数: 5, 下载积分: 金钱 -5
画格点图的gs
|