[ncl-talk] Inverted Pressure Levels produced by ncl script
Dennis Shea
shea at ucar.edu
Tue Nov 15 10:54:18 MST 2016
I have no idea why the level at positive attribute would change.
The is nothing in 'copy_VarMeta' (contributed.ncl) or other operations that
would do this.
I suggest that you try to isolate where this occurs. Use 'print' and/or
printVarSummary after various operations.
You can change this attribute if you think it is inappropriate for, say,
variable 'x':
x&level at positive = "up" or "down"
---
Certainly, it not the Butterworth filter that does anything with the meta
data.
--
Also, Why are you doing each year separately? Use addfiles.
I have no idea what your 'uwind' files look like.
However I suggest the following *untested* approach.
Output one file. If you want arbitrary temporal subset, extract from the
sinfle file
ca = 100.0
cb = 20.0
fca = 1.0/ca
fcb = 1.0/cb
diri ="./"
fili = systemfunc("cd "+diri+" ; ls uwind_*.nc")
path = diri+fili
print(path)
f = addfiles(path, "r") ; one or more files
ua = f[:]->uwind ; (time,level,lat,lon)
printVarSummary(ua)
print(ua&level) ; print coordinate variable
;date = ut_calendar(ua&time,-2) ; yyyymmdd (not used)
;print(date)
; bandpass
opt = True
opt at m = 4
dims = 0 ; time
bf = bw_bandpass_filter(ua,fca,fcb,opt,dims)
copy_VarCoords(ua,bf)
bf at long_name = "Butterworth Band Pass: "+cb+"-"+ca+" day"
bf at units = ua at units
printVarSummary(bf)
print(bf&level)
; output netCDF
; http://www.ncl.ucar.edu/Applications/o-netcdf.shtml
; Method 1: 'time' UNLIMITED
diro = "./"
filo = "filter.nc"
ptho = diro+filo
system("/bin/rm -f "+ptho) ; remove any pre-existing file
ncdf = addfile(ptho ,"c") ; open output netCDF file
fAtt = True
fAtt at title = "4th order Butterworth BPass Filter"
fAtt at source_file = "uwind_anom_1981-2007.nc"
fAtt at Conventions = "None"
fAtt at creation_date = systemfunc("date")
fileattdef(ncdf,fAtt) ; copy file attributes
filedimdef(ncdf,"time",-1,True) ; make time an UNLIMITED dimension
; recommended for
most applications
ncdf->bf = bf
On Mon, Nov 14, 2016 at 6:44 PM, Lyndon Mark Olaguera <
olagueralyndonmark429 at gmail.com> wrote:
> Dear All,
> I'm trying to do a bandpass filter in ncl. When I compare the input and
> output netcdf file the vertical levels seems to be reversed. Did I missed
> something in writing the output netcdf file that caused this?
>
> I'll appreciate any help:
>
> *ncdump -h of input file:*
>
> netcdf uwind_1981-2007 {
> dimensions:
> lon = 144 ;
> lat = 73 ;
> level = 17 ;
> time = UNLIMITED ; // (9861 currently)
> variables:
> float lon(lon) ;
> lon:standard_name = "longitude" ;
> lon:long_name = "Longitude" ;
> lon:units = "degrees_east" ;
> lon:axis = "X" ;
> float lat(lat) ;
> lat:standard_name = "latitude" ;
> lat:long_name = "Latitude" ;
> lat:units = "degrees_north" ;
> lat:axis = "Y" ;
> float level(level) ;
> level:standard_name = "air_pressure" ;
> level:long_name = "Level" ;
> level:units = "millibar" ;
> *level:positive = "down" ;*
> level:axis = "Z" ;
>
> *ncdump -h of processed file:*
>
> netcdf uwind_anom_DJF_ph8 {
> dimensions:
> lon = 144 ;
> lat = 73 ;
> level = 17 ;
> time = UNLIMITED ; // (1 currently)
> variables:
> float lon(lon) ;
> lon:standard_name = "longitude" ;
> lon:long_name = "longitude" ;
> lon:units = "degrees_east" ;
> lon:axis = "X" ;
> float lat(lat) ;
> lat:standard_name = "latitude" ;
> lat:long_name = "latitude" ;
> lat:units = "degrees_north" ;
> lat:axis = "Y" ;
> float level(level) ;
> level:standard_name = "air_pressure" ;
> level:long_name = "Level" ;
> level:units = "millibar" ;
> *level:positive = "up" ;*
> level:axis = "Z" ;
>
>
> Here's my code:
>
> load "$NCARG_ROOT/lib/ncarg/nclscripts/csm/gsn_code.ncl"
> load "$NCARG_ROOT/lib/ncarg/nclscripts/csm/gsn_csm.ncl"
> begin
> dir ="."
> fili ="uwind*"
> files =systemfunc("ls uwind_*.nc")
> numfiles=dimsizes(files)
> do ifil=0,numfiles-1
> f = addfile(files(ifil), "r")
> time := f->time
> date := ut_calendar(time,-2)
> ua := f->uwnd(:,:,:,:)
> level= f->level
> lat= f->lat
> lon= f->lon
> ca = 100.0
> cb = 20.0
> fca = 1.0/ca
> fcb = 1.0/cb
> opt = True
> opt at m = 4
> dims = 0
> bf := bw_bandpass_filter(ua,fca,fcb,opt,dims)
> copy_VarMeta(ua,bf)
> bf at long_name = "Band Pass: "+cb+"-"+ca+" day"
> ncdf = addfile("filt_"+files(ifil),"c")
> fAtt = True
> fAtt at title = "4th order Butterworth BPass Filter"
> fAtt at source_file = "uwind_anom_1981-2007.nc"
> fAtt at Conventions = "None"
> fAtt at creation_date = systemfunc("date")
> fileattdef(ncdf,fAtt) ; copy file attributes
> ncdf->bf = bf
> end do
> end
>
>
>
>
> _______________________________________________
> ncl-talk mailing list
> ncl-talk at ucar.edu
> List instructions, subscriber options, unsubscribe:
> http://mailman.ucar.edu/mailman/listinfo/ncl-talk
>
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://mailman.ucar.edu/pipermail/ncl-talk/attachments/20161115/c2945141/attachment.html
More information about the ncl-talk
mailing list