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

Alex Schaefer alexander.schaefer at mines.sdsmt.edu
Tue Jun 9 14:29:04 MDT 2015


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
>>>>> 
>>>>> 
>>>> 
>>> 
>>> 
>>> 
>> 
> 
> 



More information about the ncl-talk mailing list