[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