- 积分
- 47
- 贡献
-
- 精华
- 在线时间
- 小时
- 注册时间
- 2015-10-24
- 最后登录
- 1970-1-1
|
登录后查看更多精彩内容~
您需要 登录 才可以下载或查看,没有帐号?立即注册
x
用整体理查森数来算一个月的边界层高度 提示“fatal:NclMalloc Failed:[errno=12]
请问该如何简化脚本呢
附上
filepath1 = systemfunc("ls /disk01/exchange/ERA_Interim/201601/ei.oper.an.pl.regn128sc.201601*00")
filepath1 = filepath1+".grb"
f1 = addfiles(filepath1,"r")
ListSetType(f1,"join")
h=f1[:]->Z_GDS4_ISBL
pblho=h(0,0,:,:)
pblh=h(0,0,:,:)
pblh=0
t=f1[:]->T_GDS4_ISBL
q=f1[:]->Q_GDS4_ISBL
p=f1[:]->lv_ISBL0
lon=f1[0]->g4_lon_2
lat=f1[0]->g4_lat_1
filepath2 = systemfunc("ls /disk01/exchange/ERA_Interim/201601/ei.oper.an.pl.regn128uv.201601*00")
filepath2 = filepath2+".grb"
f2 = addfiles(filepath2,"r")
ListSetType(f2,"join")
u=f2[:]->U_GDS4_ISBL
v=f2[:]->V_GDS4_ISBL
U=u^2+v^2
p0=new((/31,37,256,512/),"double")
do k=0,30
do j=0,255
do i=0,511
p0(k,:,j,i)=p(0,:)
end do
end do
end do
tv=(t*(1000/p0)^0.286)*(1+0.61*q)
Ri=new((/31,36,256,512/),"double")
do k=0,30
do n=0,35,1
Ri(k,n,:,:)=(tv(k,n,:,:)-tv(k,36,:,:))*h(k,n,:,:)/U(k,n,:,:)/tv(k,36,:,:)
end do
end do
do k=0,30
do j=0,255
do i=0,511
flag=0
n=34
do while((flag.eq.0).and.(n.gt.0))
if((Ri(k,n+1,j,i).lt.0.5).and.(Ri(k,n,j,i).gt.0.5)) then
flag=n
end if
n=n-1
end do
temp=(h(k,flag+1,j,i)+(h(k,flag,j,i)-h(k,flag+1,j,i))*(0.5-Ri(k,flag+1,j,i))/(Ri(k,flag,j,i)-Ri(k,flag+1,j,i)))/9.8
pblho(j,i)=doubletofloat(temp)
if(flag.eq.0) then
pblho(j,i)=h(k,36,j,i)/9.8
end if
end do
end do
pblh=pblh+pblho
end do
pblh=pblh/31
|
|