- 积分
- 1353
- 贡献
-
- 精华
- 在线时间
- 小时
- 注册时间
- 2020-2-6
- 最后登录
- 1970-1-1
|
楼主 |
发表于 2021-12-24 10:34:43
|
显示全部楼层
f1= addfile("/wind1/home/tiansht3/CN05.01/CN05.01_PRE_1961_2020_daily.nc","r")
year=ispan(1980,2020,1)
time=f1->time
time:=cd_calendar(time,2)
it_s=new(41,string)
it_e=new(41,string)
rec_s=new(41,integer)
rec_e=new(41,integer)
RX1day =new((/41,81,169/),float)
RX1d =new((/81,169/),float)
CWD =new(dimsizes(RX1day),float)
CDD =new(dimsizes(RX1day),float)
PRECPTOT =new(dimsizes(RX1day),float)
R25 =new(dimsizes(RX1day),float)
R10 =new(dimsizes(RX1day),float)
SDII =new(dimsizes(RX1day),float)
cont2 =new(dimsizes(RX1day),float)
RX5d =new(dimsizes(RX1day),float)
PRECPTOT=0
SDII=0
R25=0
R10=0
do j=0,40
it_s(j)=year(j)+"0101"
it_e(j)=year(j)+"1231"
rec_s(j)=ind(it_s(j).eq.time)
rec_e(j)=ind(it_e(j).eq.time)
pr:=f1->pre(rec_s(j):rec_e(j),{30:50},{73:115}) ;先挑出一年的降水数据 365*81*169
pr1:=where(pr.ge.0.1,pr,-9999) ;雨日
size=dimsizes(pr)
;........CDW&CDD&RX5d&RX1day start..............
x1:=new(dimsizes(pr),integer)
x2:=new(dimsizes(pr),integer)
cont1=new((/size(1),size(2)/),integer)
cont3=new((/size(1),size(2)/),integer)
total:=new(dimsizes(pr),float)
cont1=0 ;CDW的记数
cont3=0 ;CDD的记数
total=0
x1=0
x2=0
do m=0,80
do n=0,168
; .......RX1d............
RX1d(m,n)=max(pr(:,m,n))
;.......CDW.............
do i=0,size(0)-1
if(.not.ismissing(pr(i,m,n)).and.pr(i,m,n).ge.1)
cont1(m,n)=cont1(m,n)+1
else
x1(i,m,n)=cont1(m,n)
cont1(m,n)=0
end if
;.......CDD.............
if(.not.ismissing(pr(i,m,n)).and.pr(i,m,n).lt.1)
cont3(m,n)=cont3(m,n)+1
else
x2(i,m,n)=cont3(m,n)
cont3(m,n)=0
end if
end do
CWD(j,m,n)=max(x1(:,m,n))
CDD(j,m,n)=max(x2(:,m,n))
end do
end do
; ........CWD&CDD&RX5d&RX1D end..............
;.........PRECPTOT&SDII&R25&R10 start..............
cont2=0
do m=0,80
do n=0,168
do i=0,size(0)-1
if(.not.ismissing(pr1(i,m,n)))then ;用的是PR1,已经是雨日了
cont2(j,m,n)=cont2(j,m,n)+1
PRECPTOT(j,m,n)=pr1(i,m,n)+PRECPTOT(j,m,n)
end if
end do
if(cont2(j,m,n).eq.0)then
SDII(j,m,n)=0
else
SDII(j,m,n)=PRECPTOT(j,m,n)/cont2(j,m,n)
end if
do i=0,size(0)-1
if(.not.ismissing(pr1(i,m,n)).and.pr1(i,m,n).ge.25)then
R25(j,m,n)=R25(j,m,n)+1
end if
end do
do i=0,size(0)-1
if(.not.ismissing(pr1(i,m,n)).and.pr1(i,m,n).ge.10)then
R10(j,m,n)=R10(j,m,n)+1
end if
end do
end do
end do
; ; ;............PRECPTOT&SDII&R25&R10 end.....................
RX1day(j,:,:)=RX1d
print(j)
end do
end |
|