- 积分
- 145
- 贡献
-
- 精华
- 在线时间
- 小时
- 注册时间
- 2012-8-26
- 最后登录
- 1970-1-1
|
GrADS
系统平台: |
win7 |
问题截图: |
- |
问题概况: |
见内容 |
我看过提问的智慧: |
看过 |
自己思考时长(天): |
3 |
登录后查看更多精彩内容~
您需要 登录 才可以下载或查看,没有帐号?立即注册
x
本帖最后由 echo要读书 于 2014-7-25 23:47 编辑
我想在573站中提取出1991-2005年的5-8月逐日降水资料。问题:映射文件出错---》
程序如下
program main
integer*4,parameter::ns=753,ny=56,nd=31,nm=12
integer*4::year,mon,day,nlev,flag,is
real*4::a(12),tim
integer*4::mdays(12)
character*8::sta(ns)
!character*8,allocatable::staid(:)
real,allocatable::lat(:),lon(:),hgt(:),pressure(:,:,:,:),temA(:,:,:,:),temH(:,:,:,:),temL(:,:,:,:), &
rh(:,:,:,:),rain(:,:,:,:),wind(:,:,:,:),sun(:,:,:,:)
allocate (lat(NS),lon(NS),hgt(NS),pressure(NS,NY,NM,ND),temA(NS,NY,NM,ND),temH(NS,NY,NM,ND),temL(NS,NY,NM,ND), &
rh(NS,NY,NM,ND),rain(NS,NY,NM,ND),wind(NS,NY,NM,ND),sun(NS,NY,NM,ND))
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!read station names!!!!!!!!!!!!!!!!!!!!!
open(11,file='z:\prog\grd\fro\7535012\station.txt')
do i=1,ns
read(11,*) sta(i)
write(*,*) sta(i)
enddo
close(11)
pressure=1.e36
temA=1.e36
temH=1.e36
temL=1.e36
rh =1.e36
rain=1.e36
wind=1.e36
sun =1.e36
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!read data!!!!!!!
do is=1,ns
open (11,file='Z:/prog/grd/fro/7535012/7535012/SURF_CLI_CHN_MUL_DAY-'//trim(adjustl(sta(is)))//'.txt',err=8000)
200 read(11,*,end=100)(a(j),j=1,4),year,mon,day,(a(j),j=5,12)
lat(is)=a(2)
lon(is)=a(3)
hgt(is)=a(4)
pressure(is,year-1949,mon,day)=a(5)
temA(is,year-1949,mon,day)=a(6)
temH(is,year-1949,mon,day)=a(7)
temL(is,year-1949,mon,day)=a(8)
rh (is,year-1949,mon,day)=a(9)
rain(is,year-1949,mon,day)=a(10)
wind(is,year-1949,mon,day)=a(11)
sun (is,year-1949,mon,day)=a(12)
goto 200
CLOSE(11)
100 continue
8000 continue
enddo
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!wrong data!!!!!!!!!!!!!!!!!!!!!
do is=1,ns
lat(is)=INT(lat(is)/100)+MOD(lat(is),100.)/60.
lon(is)=INT(lon(is)/100)+MOD(lon(is),100.)/60.
if(hgt(is).ge.100000)hgt(is)=1.e36
do iy=1,ny
do im=1,nm
do id=1,nd
if(abs(rain(is,iy,im,id)).eq.32744.or.abs(rain(is,iy,im,id)).eq.32766)then
rain(is,iy,im,id)=1.e36
elseif(rain(is,iy,im,id).eq.32700)then
rain(is,iy,im,id)=0
elseif(rain(is,iy,im,id).gt.30000.and.rain(is,iy,im,id).lt.31000)then
rain(is,iy,im,id)=rain(is,iy,im,id)-30000
elseif(rain(is,iy,im,id).gt.31000.and.rain(is,iy,im,id).lt.32000)then
rain(is,iy,im,id)=rain(is,iy,im,id)-31000
elseif(rain(is,iy,im,id).gt.32000.and.rain(is,iy,im,id).lt.33000)then
rain(is,iy,im,id)=rain(is,iy,im,id)-32000
endif
enddo
enddo
enddo
enddo
!!!!!!!!!!!!!!!!!!!!!!!write!!!!!!!!!!!!!!!!!!!!!!!!!
mdays(5) = 31
mdays(6) = 30
mdays(7) = 31
mdays(8) = 31
OPEN(11,FILE='Z:\prog\grd\fro\7535012\756precip.grd')
DO IY=42,NY
Do IM=5,8
write(*,*) im
do id=1,mdays(im)
tim=0.0
nlev=1
flag=1
do is=1,ns
WRITE(11,*)sta(IS),Lat(is),lon(is),tim,nlev,flag,rain(is,iy,im,id)
WRITE(*,*)sta(IS),iy,im,id,Lat(is),lon(is),tim,nlev,flag,rain(is,iy,im,id)
enddo
nlev=0
WRITE(11,*)sta,Lat,lon,tim,nlev,flag
enddo
enddo
enddo
close(11)
!!!!!!!!==================================
deallocate (lat,lon,hgt,pressure,temA,temH,temL,rh,rain,wind,sun)
END |
|