[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