Re: problems about regridding and functions of linint2_Wrap! HELP !

From: Dennis Shea <shea_at_nyahnyahspammersnyahnyah>
Date: Fri, 12 Sep 2008 20:30:02 -0600

I assure you, the problem in *not* with NCL.

Some comments:

[1] As a general rule, *always* perform the vertical interpolation
      on the original grid. That way the correct surface pressures
      are used. You have set 'extrap=True' .... Be aware that
      extrapolated values are always dangerous to use. They may
      not be realistic. Hence, any interpolation will yield
      extreme values.

[2] After the data are on pressure levels, then do the
      horizontal interpolation. *All* of the linint2 functions
      should have the cyclic argument set to True not False.
      All CAM data are cyclic.

[3] Rather than hard wiring (say) "73,144",
      use variables (jlat,ilon).

[4] I have no idea why f2fsh_Wrap gave possibly erroneous sst.
      Are there missing values [_FillValue]? Why not plot before
      and after? If all the rest are ok ... it seems something
      is rather unique to SST.

[5] linint2_Wrap is fine to use.

[6] Why would you "make my ddf of lon begin
      with -180.0? All CAM FV-data span 0 to 357.5
      Look at your data.

[7] Why GrADS does not accept the file???
      You are writing "lon" ... but the interpolated
      grids are "lonG" ... that is what you shoud
      be writing out.

[8] Pls, do not send out heavily commented code.
      Nobody will look at it in detail.

Good luck

bianh_522 wrote:
>
> hello everyone:
>
> I used output from CAM3 ,which form is *.nc and the grid is 2x2.5
> lat=91 lon=144,
> and I need change it to 2.5x2.5 lat=73 lon=144.
> First I used f2fsh_Wrap to do ,but the value of varibles seems to be
> some wrong,sst with a min of -50
> and then T changed to use linint2_Wrap to do ,bu I cann't use GRADS to
> open the *.nc ,It shows
>
> Scanning self-describing file: e:\cam\out1\cam199107.nc
> SDF file has no discernable X coordinate.
>
> and I make my ddf of lon begin with -180.0. It doesn't work else.
>
> It seems some wrong during the linint2_Wrap,I think .So I wonder that
> anybody has encounted
> this ?or has some exprience?
>
> Here with my ncl script
> -------
>
> ;***********************************************************
> load "$NCARG_ROOT/lib/ncarg/nclscripts/csm/gsn_code.ncl"
> load "$NCARG_ROOT/lib/ncarg/nclscripts/csm/gsn_csm.ncl"
> load "$NCARG_ROOT/lib/ncarg/nclscripts/csm/contributed.ncl"
> ;***********************************************************
>
> begin
>
> ;**********************************************************
> in
> =addfile("/scratch/student/bianh/cam1/work/out/cam.cam2.h0.1991-06-15-00000.nc","r")
> ;**********************************************************
>
> ;**********************************************************
> ; read needed variables
>
> hgt = in->Z3
> t = in->T
> u = in->U
> v = in->V
> rh = in->RELHUM
> psl = in->PSL
> ps = in->PS
> sst = in->SST
> t2 = in->T2
> rh2 = in->RH2
> u10 = in->U10
> v10 = in->V10
> phis = in->PHIS
>
> ;**********************************************************
> ; interpolate gaussian grid to fix grid (bilinear interpolation)
> ;**********************************************************
> ; TonPfix=f2fsh_Wrap(t,(/73,144/))
> ; UonPfix=f2fsh_Wrap(u,(/73,144/))
> ; VonPfix=f2fsh_Wrap(v,(/73,144/))
> ; RHonPfix=f2fsh_Wrap(rh,(/73,144/))
> ; psfix=f2fsh_Wrap(ps,(/73,144/))
> ; phisfix=f2fsh_Wrap(phis,(/73,144/))
> ; Z3onPfix=f2fsh_Wrap(hgt,(/73,144/))
> ; u10fix=f2fsh_Wrap(u10,(/73,144/))
> ; v10fix=f2fsh_Wrap(v10,(/73,144/))
> ; t2fix=f2fsh_Wrap(t2,(/73,144/))
> ; rh2fix=f2fsh_Wrap(rh2,(/73,144/))
> ; pslfix=f2fsh_Wrap(psl,(/73,144/))
> ; sstfix=f2fsh_Wrap(sst,(/73,144/))
>
> latG = new(91,float)
> latG = fspan(-90.0,90.0,91)
> lonG = new(144,float)
> lonG = fspan(0.0,360.0,144)
> latF = new(73,float)
> latF = fspan(-90.0,90.0,73)
> lonF = new(144,float)
> lonF = fspan(-180.0,180.0,144)
>
> TonPfix = linint2_Wrap(lonG,latG,t,False,lonF,latF,0)
> Z3onPfix = linint2_Wrap(lonG,latG,hgt,False,lonF,latF,0)
> UonPfix = linint2_Wrap(lonG,latG,u,False,lonF,latF,0)
> VonPfix = linint2_Wrap(lonG,latG,v,False,lonF,latF,0)
> RHonPfix = linint2_Wrap(lonG,latG,rh,False,lonF,latF,0)
> psfix = linint2_Wrap(lonG,latG,ps,False,lonF,latF,0)
> phisfix = linint2_Wrap(lonG,latG,phis,False,lonF,latF,0)
> u10fix = linint2_Wrap(lonG,latG,u10,False,lonF,latF,0)
> v10fix = linint2_Wrap(lonG,latG,v10,False,lonF,latF,0)
> t2fix = linint2_Wrap(lonG,latG,t2,False,lonF,latF,0)
> rh2fix = linint2_Wrap(lonG,latG,rh2,False,lonF,latF,0)
> pslfix = linint2_Wrap(lonG,latG,psl,False,lonF,latF,0)
> sstfix = linint2_Wrap(lonG,latG,sst,False,lonF,latF,0)
>
> ;************************************************************************
>
> nvars = 5
> P0mb = 1000
> hyam = in->hyam
> hybm = in->hybm
> tbot = TonPfix(:,25,:,:)
> ;***********************************************************************
>
> npnew = 17
> pnew = new(npnew,float)
> pnew
> =(/1000.0,925.0,850.0,700.0,600.0,500.0,400.0,300.0,250.0,200.0,150.0,100.0,70.0,50.0,30.0,20.0,10.0/)
> ;***********************************************************************
> ; define other arguments required by vinth2p_ecmwf
> ; type of interpolation: 1 = linear,2 =log, 3 = loglog
> interp =2
> ;is extrapolation desired if data is outside the range of PS
> extrap = True
>
> ;calculate T,Z3,RELHUM,U,V on pressure levels
>
> TonP =
> vinth2p_ecmwf(TonPfix,hyam,hybm,pnew,psfix,interp,P0mb,1,extrap,1,tbot,phisfix)
> Z3onP =
> vinth2p_ecmwf(Z3onPfix,hyam,hybm,pnew,psfix,interp,P0mb,1,extrap,-1,tbot,phisfix)
> UonP =
> vinth2p_ecmwf(UonPfix,hyam,hybm,pnew,psfix,interp,P0mb,1,extrap,0,tbot,phisfix)
> VonP =
> vinth2p_ecmwf(VonPfix,hyam,hybm,pnew,psfix,interp,P0mb,1,extrap,0,tbot,phisfix)
> RHonP =
> vinth2p_ecmwf(RHonPfix,hyam,hybm,pnew,psfix,interp,P0mb,1,extrap,0,tbot,phisfix)
> ;**************************************************************************
>
> ; Tfix=g2fsh_Wrap(TonP,(/73,144/))
> ; Z3fix=g2fsh_Wrap(Z3onP,(/73,144/))
> ; Ufix=g2fsh_Wrap(UonP,(/73,144/))
> ; Vfix=g2fsh_Wrap(VonP,(/73,144/))
> ; RHfix=g2fsh_Wrap(RELHUMonP,(/73,144/))
>
> ;**************************************************************************
> ; output the result
> ;**************************************************************************
> ntime = dimsizes(in->time)
> nlev = 17
> nlat = dimsizes(latF)
> nlon = dimsizes(lonF)
>
> time = in->time
> lev = pnew
> lat = latF
> lon = lonF
>
> ;give the file name
>
>
> ncdf=addfile("/scratch/student/bianh/cam1/work/cam199107.nc","c")
> ;--------------------------------------------------------------------------
> ;Global attributes of the file
>
> fAtt = True
> fAtt_at_title = "CAM3 history files interpolated from sigma to pressure"
> fAtt_at_source_file = "cam3 output"
> fAtt_at_conventions = "none"
> fAtt_at_creation_date = systemfunc("date")
> fileattdef(ncdf,fAtt)
> ;--------------------------------------------------------------------------
> dimNames = (/"time","lev","lat","lon"/)
> dimSizes = (/ntime,nlev,nlat,nlon/)
> dimUnlim = (/False,False,False,False/)
> filedimdef(ncdf,dimNames,dimSizes,dimUnlim)
> ;--------------------------------------------------------------------------
> filevardef(ncdf,"time",typeof(time),"time")
> filevardef(ncdf,"lev","float","lev")
> filevardef(ncdf,"lat","double","lat")
> filevardef(ncdf,"lon","double","lon")
> filevardef(ncdf,"t",typeof(t),(/"time","lev","lat","lon"/))
> filevardef(ncdf,"hgt",typeof(hgt),(/"time","lev","lat","lon"/))
> filevardef(ncdf,"u",typeof(u),(/"time","lev","lat","lon"/))
> filevardef(ncdf,"v",typeof(v),(/"time","lev","lat","lon"/))
> filevardef(ncdf,"rh",typeof(rh),(/"time","lev","lat","lon"/))
> ;----------------------------------------------------------------------------
> ; dimNames = (/"time","lat","lon"/)
> ; dimSizes = (/ntime,nlat,nlon/)
> ; dimUnlim = (/False,False,False,False/)
> ; filedimdef(ncdf,dimNames,dimSizes,dimUnlim)
>
>
> ; filevardef(ncdf,"pmsl",typeof(psl),(/"time","lat","lon"/))
> ; filevardef(ncdf,"ps",typeof(ps),(/"time","lat","lon"/))
> ; filevardef(ncdf,"skintemp",typeof(sst),(/"time","lat","lon"/))
> ; filevardef(ncdf,"t2",typeof(t2),(/"time","lat","lon"/))
> ; filevardef(ncdf,"u10",typeof(u10),(/"time","lat","lon"/))
> ; filevardef(ncdf,"v10",typeof(v10),(/"time","lat","lon"/))
> ; filevardef(ncdf,"rh2",typeof(rh2),(/"time","lat","lon"/))
>
> ;----------------------------------------------------------------------------
> ; add some attributes
> ;----------------------------------------------------------------------------
> TonP_at_long_name="Temperature"
> TonP_at_units="Celsuis"
> Z3onP_at_long_name="Geoptential Height"
> Z3onP_at_units="M"
> RHonP_at_long_name="Relative humidity"
> UonP_at_long_name=u_at_long_name
> UonP_at_units=u_at_units
> VonP_at_long_name=v_at_long_name
> VonP_at_units=v_at_units
> ; pslfix_at_long_name=psl_at_long_name
> ; pslfix_at_units=psl_at_units
> ; psfix_at_long_name=ps_at_units
> ; psfix_at_units=ps_at_units
> ; sstfix_at_long_name=sst_at_long_name
> ; sstfix_at_units=sst_at_units
> ; t2fix_at_long_name=t2_at_long_name
> ; t2fix_at_units=t2_at_units
> ; rh2fix_at_long_name=rh2_at_long_name
> ; rh2fix_at_units=rh2_at_units
> ; u10fix_at_longname=u10_at_long_name
> ; u10fix_at_units=u10_at_units
> ; v10fix_at_long_name=v10_at_long_name
> ; v10fix_at_units=v10_at_units
>
> filevarattdef(ncdf,"t",TonP)
> filevarattdef(ncdf,"hgt",Z3onP)
> filevarattdef(ncdf,"u",UonP)
> filevarattdef(ncdf,"v",VonP)
> filevarattdef(ncdf,"rh",RHonP)
> ; filevarattdef(ncdf,"ps",psfix)
> ; filevarattdef(ncdf,"psl",pslfix)
> ; filevarattdef(ncdf,"skintemp",sstfix)
> ; filevarattdef(ncdf,"t2",t2fix)
> ; filevarattdef(ncdf,"rh2",rh2fix)
> ; filevarattdef(ncdf,"u10",u10fix)
> ; filevarattdef(ncdf,"v10",v10fix)
>
> filevarattdef(ncdf,"time",time)
> filevarattdef(ncdf,"lev",lev)
> filevarattdef(ncdf,"lat",lat)
> filevarattdef(ncdf,"lon",lon)
>
> ncdf->lev_at_long_name="pressure"
> ncdf->lev_at_units="mb"
> ncdf->time_at_long_name="time"
> ; ncdf->lat_at_long_name="latitude"
> ; ncdf->lon_at_long_name="longtitude"
>
> ;------------------------------------------------------------
> ; output only the data values since the dimensionality and such have
> been predefined
> ;--------------------------------------------------------------
>
> ncdf->time=(/time/)
> ncdf->lev=pnew
> ncdf->lat=(/lat/)
> ncdf->lon=(/lon/)
>
> ncdf->t=(/TonP/)
> ncdf->hgt=(/Z3onP/)
> ncdf->u=(/UonP/)
> ncdf->v=(/VonP/)
> ncdf->rh=(/RHonP/)
> ncdf->pmsl=pslfix
> ncdf->ps=psfix
> ncdf->skintemp=sstfix
> ncdf->t2=t2fix
> ncdf->rh2=rh2fix
> ncdf->u10=u10fix
> ncdf->v10=v10fix
>
>
> end
>
> ---------------------------------------
>
>
>
>
> ------------------------------------------------------------------------
> [广告] KFC骨肉相连 <http://popme.163.com/link/004584_0904_755.html>优惠券
>
> ------------------------------------------------------------------------
> [广告] 买房不必东奔西走,上房老大,看"二手房"网上房展会
> <http://popme.163.com/link/003984_0909_8679.html>
>
>
> ------------------------------------------------------------------------
>
> _______________________________________________
> ncl-talk mailing list
> ncl-talk_at_ucar.edu
> http://mailman.ucar.edu/mailman/listinfo/ncl-talk
_______________________________________________
ncl-talk mailing list
ncl-talk_at_ucar.edu
http://mailman.ucar.edu/mailman/listinfo/ncl-talk
Received on Fri Sep 12 2008 - 20:30:02 MDT

This archive was generated by hypermail 2.2.0 : Fri Sep 12 2008 - 21:42:04 MDT