[ncl-talk] change in vector spacing when taking difference of two wind fields

Alan Brammer abrammer at albany.edu
Wed Jun 10 08:47:32 MDT 2015


Mira,
Alex's suggestion works and a lot of code in NCL uses the same method to
copy metadata between variables.

For a more explicit route, when you subtract variables and define a new
variable at the same time the metadata is not carried over to the new
variable.  Look at your printVarSummary of diff_u there is no information
attached to the variable.

Alex's approach will copy over all the metadata, therefore some data (e.g.
longname) will be incorrect. diff_u longname should now be something more
like "DJF Zonal Wind difference at sigma level 0.995".  Though for plotting
all NCL needs is coordinates information.

Therefore based on your original script, I'd add 2 lines as below.
diff_u = uAvgTime_hi - uAvgTime_lo
diff_v = vAvgTime_hi - vAvgTime_lo

copy_VarCoords(uAvgTime_hi, diff_u)
copy_VarCoords(vAvgTime_hi, diff_v)

This will copy the latitude and longitude information to the new variables,
so NCL will know where to plot the data.

Alan.


On 9 June 2015 at 16:42, <mberdahl at envsci.rutgers.edu> wrote:

> Hi Alex,
> I just tried and the spacing looks to be right now! Thanks very much! The
> only thing I don't understand what you mean is to change the long names.
> Thanks!
> Mira
>
> > Mira,
> >
> > I don’t know the example pages well so I can’t really point to a specific
> > code example but usually lat and lon are stored in your netcdf file just
> > like every other variable.
> >
> > Here is a way we can cheat the system as long as your lats/lons don’t
> > change (logically easier but not exactly proper).
> >
> > You should be able to set diff_u = uAvgTime_hi so that all of the
> metadata
> > is copied over to the new variable.  The issue with this is you would
> need
> > to change long names and other stuff for completeness.  After you do that
> > you can do you subtraction and all the metadata should remain with the
> > variable: diff_u = uAvgTime_hi - uAvgTime_lo.  Similarly done for diff_v.
> >
> > Not the clean way of doing it but I’m not the best when pulling variables
> > using the named dimension convention, i.e. specifying the lat/lon ranges.
> > Maybe one of the NCAR folks can provide some insight to using that way.
> >
> > This way however should get you what you need with regards to lats/lons
> > being associated with your data and hopefully get your plot working.
> >
> > Hope that helps,
> > -Alex
> >
> >
> > On Jun 9, 2015, at 1:34 PM, mberdahl at envsci.rutgers.edu wrote:
> >
> >>
> >> Hi Alex,
> >> Thanks for the suggestion.  I was wondering if it had anything to do
> >> with
> >> that.  When you say pull the lat Lon, I'm not exactly sure what you mean
> >> to do.  Do you have an example to point me to?
> >> Thanks!
> >> Mira
> >>> Mira,
> >>>
> >>> You have lost your lats/lons in the subtraction.  It may have something
> >>> to
> >>> do with that. You might want to pull them in at the beginning and then
> >>> associate them with diff_u and diff_v using:
> >>>
> >>> diff_u at lon2d  = lon
> >>> diff_u at lat2d   = lat
> >>>
> >>> diff_v at lon2d  = lon
> >>> diff_v at lat2d   = lat
> >>>
> >>> Just pull the lats and lons on the same subsection that you are pulling
> >>> u/v.
> >>>
> >>> -Alex
> >>>
> >>> On Mon, Jun 8, 2015 at 9:30 PM, <mberdahl at envsci.rutgers.edu> wrote:
> >>>
> >>>> Hi Alex,
> >>>> I changed it so the vectors were appropriately sized.  I just tried
> >>>> the
> >>>> script with removing the second Magnitude definition and the spacing
> >>>> is
> >>>> still the same.  Any other thoughts?
> >>>> Mira
> >>>>> Mira,
> >>>>>
> >>>>> Why did you change vcres at vcRefMagnitudeF = 10.0 to
> >>>> vcres at vcRefMagnitudeF
> >>>> =
> >>>>> 1.0 after the first 2 plots were made?  This is likely what is
> >>>>> causing
> >>>> the
> >>>>> difference.
> >>>>>
> >>>>> -Alex
> >>>>>
> >>>>> On Mon, Jun 8, 2015 at 8:12 PM, <mberdahl at envsci.rutgers.edu> wrote:
> >>>>>
> >>>>>> Hi all,
> >>>>>> I have a 3 panel plot which shows the winds over a region.  The
> >>>>>> first
> >>>>>> two
> >>>>>> panels show averages for selected years, and the third panel shows
> >>>> the
> >>>>>> difference between the top 2 panels.  My problem is that the spacing
> >>>> of
> >>>>>> wind vectors is much denser in the first two plots than the third
> >>>>>> "difference" plot.  Is there a reason why the grid spacing would
> >>>>>> suddenly
> >>>>>> be different (more sparse) when displaying the difference of two
> >>>>>> wind
> >>>>>> fields?  The sizes (dimensions) of the u and v fields remain the
> >>>>>> same
> >>>>>> for
> >>>>>> each panel.
> >>>>>> My script and the VarSummaries for some of the variables are below.
> >>>>>> I will try to attach the pdf of the figure here if possible.
> >>>>>> Thanks very much for any help.
> >>>>>> Mira
> >>>>>>
> >>>>>> ************************************************************
> >>>>>>
> >>>>>>
> >>>>>> 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"
> >>>>>> load "$NCARG_ROOT/lib/ncarg/nclscripts/csm/shea_util.ncl"
> >>>>>> ;************************************************
> >>>>>> begin
> >>>>>> ;************************************************
> >>>>>> ; read in netCDF file
> >>>>>> ;************************************************
> >>>>>> a = addfile("uwnd.mon.mean.nc","r")
> >>>>>> print(a)
> >>>>>> b = addfile("vwnd.mon.mean.nc","r")
> >>>>>>
> >>>>>> ;************************************************
> >>>>>> ; read in zonal [u] and meridional [v] winds (July)
> >>>>>> ;************************************************
> >>>>>>
> >>>>>> u = a->uwnd(0:803,{45:90},{270:357.5})
> >>>>>> v = b->vwnd(0:803,{45:90},{270:357.5}) ; Get u, v, time (1),level
> >>>>>> (1000hpa),latitude(-90:90) and longitude(0:360) data.
> >>>>>>
> >>>>>> printVarSummary(u)
> >>>>>> printVarSummary(v)
> >>>>>>
> >>>>>> ; to take the average over the first dimensions (time)
> >>>>>> ;uAvgTime = dim_avg_n_Wrap(u,0)
> >>>>>> ;vAvgTime = dim_avg_n_Wrap(v,0)
> >>>>>>
> >>>>>> ;printVarSummary(vAvgTime)
> >>>>>> ;printVarSummary(uAvgTime)
> >>>>>>
> >>>>>> ; calculate speed from u and v components
> >>>>>> ;speed = sqrt(uAvgTime^2+vAvgTime^2)
> >>>>>>
> >>>>>> ; Calculate the seasonal averages.
> >>>>>> uDJF = month_to_season(u, "DJF")
> >>>>>> vDJF = month_to_season(v, "DJF")
> >>>>>>
> >>>>>> printVarSummary(uDJF)
> >>>>>> printVarSummary(vDJF)
> >>>>>>
> >>>>>> ; from the matlab script i wrote: findExtremeYrs, i pulled out the
> >>>>>> extreme
> >>>>>> years (> or < 1std) that i want to average and plot here.
> >>>>>>
> >>>>>> ; for ans =   4 (NAO)
> >>>>>> ; yearList_hi = 1973        1975        1983        1989        1995
> >>>>>> 2000        2007        2012
> >>>>>> ; yearList_lo = 1963        1964        1965        1969        1977
> >>>>>> 1979        1996        1997        2010        2011
> >>>>>>
> >>>>>> ; ans = 5 (pressure)
> >>>>>> ;yearList_hi = 1963        1965        1968        1969        1970
> >>>>>> 1971        1977        1997        2006        2011
> >>>>>> ;yearList_lo = 1973        1989        1990        1991        1995
> >>>>>> 1999        2000        2007        2012
> >>>>>>
> >>>>>> ;ans = 7 (longitude of IL)
> >>>>>> ;yearList_hi =1966        1967        1968        1969        1974
> >>>>>> 1975        1983        1994        1995        2005
> >>>>>> ;yearList_lo =1963        1964        1985        1987        1991
> >>>>>> 1992        1996        2002   2003    2006      2009
> >>>>>>
> >>>>>>
> >>>>>> ; this data starts at 1948 (this is index 0), so 1953=5, 1963=10
> >>>>>> etc.
> >>>>>>
> >>>>>> uDJF_NAO_lo = uDJF((/10,11,12,16,24,26,43,44,57,58/),:,:)
> >>>>>> uDJF_NAO_hi = uDJF((/20,22,30,36,42,47,54,59/),:,:)
> >>>>>>
> >>>>>> vDJF_NAO_lo = vDJF((/10,11,12,16,24,26,43,44,57,58/),:,:)
> >>>>>> vDJF_NAO_hi = vDJF((/20,22,30,36,42,47,54,59/),:,:)
> >>>>>>
> >>>>>> uAvgTime_hi = dim_avg_n_Wrap(uDJF_NAO_hi,0)
> >>>>>> uAvgTime_lo = dim_avg_n_Wrap(uDJF_NAO_lo,0)
> >>>>>>
> >>>>>> printVarSummary(uAvgTime_hi)
> >>>>>> printVarSummary(uAvgTime_lo)
> >>>>>>
> >>>>>> vAvgTime_hi = dim_avg_n_Wrap(vDJF_NAO_hi,0)
> >>>>>> vAvgTime_lo = dim_avg_n_Wrap(vDJF_NAO_lo,0)
> >>>>>>
> >>>>>> printVarSummary(vAvgTime_hi)
> >>>>>> printVarSummary(vAvgTime_lo)
> >>>>>>
> >>>>>>
> >>>>>>
> >>>>>> ;************************************************
> >>>>>> ; create plot
> >>>>>> ;************************************************
> >>>>>> wks = gsn_open_wks("eps","Panel_NAO")           ; open a ps file
> >>>>>> plot = new(3,graphic)                           ; create a plot
> >>>>>> array
> >>>>>>
> >>>>>> vcres                   = True
> >>>>>> vcres at gsnDraw           = False                 ; dont draw
> >>>>>> vcres at gsnFrame          = False                 ; dont advance
> frame
> >>>>>> vcres at cnInfoLabelOn     = False                 ; trn off cn info
> >>>> label
> >>>>>>
> >>>>>> vcres = True                                    ; plot mods desired
> >>>>>> vcres at gsnAddCyclic = False                      ; has to do with
> >>>>>> wrapping
> >>>>>> the longitude at 0/360
> >>>>>> vcres at vcRefAnnoOrthogonalPosF = -1.0            ; move ref vector
> up
> >>>>>> vcres at vcRefMagnitudeF = 10.0                    ; define vector ref
> >>>> mag
> >>>>>> vcres at vcRefLengthF = 0.045                      ; define length of
> >>>> vec
> >>>>>> ref
> >>>>>> vcres at vcGlyphStyle = "CurlyVector"              ; turn on curly
> >>>> vectors
> >>>>>> vcres at vcMinDistanceF = 0.017
> >>>>>>
> >>>>>> ;************************************************
> >>>>>> ; Choose a subregion
> >>>>>> ;************************************************
> >>>>>> vcres at mpFillOn = False                          ; turn off gray
> fill
> >>>>>> vcres at mpOutlineBoundarySets = "National"        ; turn on country
> >>>>>> boundaries
> >>>>>> vcres at mpGeophysicalLineColor = "Navy"           ; color of cont.
> >>>>>> outlines
> >>>>>> vcres at mpGeophysicalLineThicknessF = 1.5         ; thickness of
> >>>> outlines
> >>>>>>
> >>>>>> vcres at mpMaxLatF = 90                            ;maximum latitude
> >>>>>> vcres at mpMinLatF = 45                            ;minimum latitude
> >>>>>> vcres at mpMaxLonF = 357.5                         ;maximum longitude
> >>>>>> vcres at mpMinLonF = 270                           ;minimum longitude
> >>>>>>
> >>>>>> diff_u = uAvgTime_hi - uAvgTime_lo
> >>>>>> diff_v = vAvgTime_hi - vAvgTime_lo
> >>>>>>
> >>>>>> printVarSummary(diff_u)
> >>>>>> printVarSummary(diff_v)
> >>>>>>
> >>>>>> vcres at gsnLeftString = "DJF High NAO"
> >>>>>> plot(0) = gsn_csm_vector_map_ce(wks,uAvgTime_hi,vAvgTime_hi,vcres)
> >>>>>>
> >>>>>> vcres at gsnLeftString = "DJF Low NAO"
> >>>>>> plot(1) = gsn_csm_vector_map_ce(wks,uAvgTime_lo,vAvgTime_lo,vcres)
> >>>>>>
> >>>>>>
> >>>>>> vcres at vcRefMagnitudeF = 1.0                     ; define vector ref
> >>>> mag
> >>>>>> vcres at vcRefLengthF = 0.045                      ; define length of
> >>>> vec
> >>>>>> ref
> >>>>>> vcres at gsnLeftString = "Difference of High - Low"
> >>>>>> plot(2) = gsn_csm_vector_map_ce(wks, diff_u, diff_v,vcres)
> >>>>>>
> >>>>>> ;************************************************
> >>>>>> ; create panel
> >>>>>> ;************************************************
> >>>>>> resP = True                                     ; modify the panel
> >>>> plot
> >>>>>> resP at txString = "NAO"
> >>>>>> gsn_panel(wks,plot,(/3,1/),resP)                ; now draw as one
> >>>> plot
> >>>>>>
> >>>>>>
> >>>>>>
> >>>>>> end
> >>>>>>
> >>>>>>
> >>>>>>
> >>>>>> OUTPUT
> >>>>>> *******************************************************
> >>>>>> Variable: vAvgTime_hi
> >>>>>> Type: float
> >>>>>> Total Size: 2736 bytes
> >>>>>>            684 values
> >>>>>> Number of Dimensions: 2
> >>>>>> Dimensions and sizes:   [lat | 19] x [lon | 36]
> >>>>>> Coordinates:
> >>>>>>            lat: [45..90]
> >>>>>>            lon: [270..357.5]
> >>>>>> Number Of Attributes: 17
> >>>>>>  NMO : 0
> >>>>>>  _FillValue :  -9.96921e+36
> >>>>>>  actual_range :        ( -15.43516, 19.79167 )
> >>>>>>  parent_stat : Other
> >>>>>>  statistic :   Mean
> >>>>>>  level_desc :  Surface
> >>>>>>  dataset :     CDC Derived NCEP Reanalysis Products
> >>>>>>  var_desc :    v-wind
> >>>>>>  least_significant_digit :     1
> >>>>>>  precision :   2
> >>>>>>  missing_value :       -9.96921e+36
> >>>>>>  scale_factor :         1
> >>>>>>  add_offset :   0
> >>>>>>  units :       m/s
> >>>>>>  valid_range : ( -102.2, 102.2 )
> >>>>>>  long_name :   DJF: Monthly Mean Meridional Wind at sigma level
> >>>> 0.995
> >>>>>>  average_op_ncl :      dim_avg_n over dimension(s): time
> >>>>>>
> >>>>>> Variable: vAvgTime_lo
> >>>>>> Type: float
> >>>>>> Total Size: 2736 bytes
> >>>>>>            684 values
> >>>>>> Number of Dimensions: 2
> >>>>>> Dimensions and sizes:   [lat | 19] x [lon | 36]
> >>>>>> Coordinates:
> >>>>>>            lat: [45..90]
> >>>>>>            lon: [270..357.5]
> >>>>>> Number Of Attributes: 17
> >>>>>>  NMO : 0
> >>>>>>  _FillValue :  -9.96921e+36
> >>>>>>  actual_range :        ( -15.43516, 19.79167 )
> >>>>>>  parent_stat : Other
> >>>>>>  statistic :   Mean
> >>>>>>  level_desc :  Surface
> >>>>>>  dataset :     CDC Derived NCEP Reanalysis Products
> >>>>>>  var_desc :    v-wind
> >>>>>>  least_significant_digit :     1
> >>>>>>  precision :   2
> >>>>>>  missing_value :       -9.96921e+36
> >>>>>>  scale_factor :         1
> >>>>>>  add_offset :   0
> >>>>>>  units :       m/s
> >>>>>>  valid_range : ( -102.2, 102.2 )
> >>>>>>  long_name :   DJF: Monthly Mean Meridional Wind at sigma level
> >>>> 0.995
> >>>>>>  average_op_ncl :      dim_avg_n over dimension(s): time
> >>>>>>
> >>>>>>
> >>>>>> Variable: diff_u
> >>>>>> Type: float
> >>>>>> Total Size: 2736 bytes
> >>>>>>            684 values
> >>>>>> Number of Dimensions: 2
> >>>>>> Dimensions and sizes:   [19] x [36]
> >>>>>> Coordinates:
> >>>>>> Number Of Attributes: 1
> >>>>>>  _FillValue :  -9.96921e+36
> >>>>>>
> >>>>>> Variable: diff_v
> >>>>>> Type: float
> >>>>>> Total Size: 2736 bytes
> >>>>>>            684 values
> >>>>>> Number of Dimensions: 2
> >>>>>> Dimensions and sizes:   [19] x [36]
> >>>>>> Coordinates:
> >>>>>> Number Of Attributes: 1
> >>>>>>  _FillValue :  -9.96921e+36
> >>>>>>
> >>>>>>
> >>>>>>
> >>>>>>
> >>>>>>
> >>>>>> _______________________________________________
> >>>>>> ncl-talk mailing list
> >>>>>> ncl-talk at ucar.edu
> >>>>>> List instructions, subscriber options, unsubscribe:
> >>>>>> http://mailman.ucar.edu/mailman/listinfo/ncl-talk
> >>>>>>
> >>>>>>
> >>>>>
> >>>>
> >>>>
> >>>>
> >>>
> >>
> >>
> >
> >
>
>
> _______________________________________________
> 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/20150610/5c65c848/attachment.html 


More information about the ncl-talk mailing list