Re: Coordinate variable specification

From: Dave Allured <dave.allured_at_nyahnyahspammersnyahnyah>
Date: Thu, 05 Feb 2009 14:37:20 -0700

James,

The literal answer to your last question is, see the NCL
documentation page for copy_VarCoords, and also look at the source
code for this function. The code is in contributed.ncl, which you
should have installed on your computer in the standard location.

However, I think you will have a much easier time if you focus on
the specific problem with your program, rather than the complex
inner workings of that function. There *are* some subtleties with
the use of attached coordinates.

Could you please show us (1) the *complete* text of the error
message, without using copy_VarCoords where you think it's not
needed; (2) a brief excerpt of the part of your program that got the
error, including indication of the exact line that triggered the
error; and (3) the full output from printVarSummary(var1),
printVarSummary(var1&lon), and the other coordinate variable
summaries if they seem relevant. If the problem is with something
other than var1, please show just the variable in trouble.

It is important to see the summaries for the *attached* coordinates,
not just copies, to diagnose problems with a data variable as a
complete object.

If there are multiple error messages, it is important to see all of
them unless it's a long list. Frequently it is the *first* error
message rather than the last that shows the root of the problem.

Dave Allured
CU/CIRES Climate Diagnostics Center (CDC)
http://cires.colorado.edu/science/centers/cdc/
NOAA/ESRL/PSD, Climate Analysis Branch (CAB)
http://www.cdc.noaa.gov/psd1/

Correia, James wrote:
> Thanks Dave-
> Unfortunately, while your help proved to me I had the correct variables set,
> I needed to use copy_varcoords function to make it work. I still do not
> understand why specifying the coordinate vars and names and units was not
> enough.
>
> So what does copy_varcoords really do?
> jimmyc
>
>
> On 2/4/09 4:28 PM, "Dave Allured" <dave.allured_at_noaa.gov> wrote:
>
>> James,
>>
>> Use the coordinate variable reference operator to get the metadata
>> for each attached coordinate:
>>
>> printVarSummary(var1&lat)
>> printVarSummary(var1&lat)
>> printVarSummary(var1&time)
>>
>> Dave Allured
>> CU/CIRES Climate Diagnostics Center (CDC)
>> http://cires.colorado.edu/science/centers/cdc/
>> NOAA/ESRL/PSD, Climate Analysis Branch (CAB)
>> http://www.cdc.noaa.gov/psd1/
>>
>> Correia, James wrote:
>>> Hi all-
>>> I am getting the error:
>>> Check_for_lon_coord and A valid coordinate array should have units ...
>>>
>>> My question is:
>>> How do I print out not only the variable summary but also the variables
>>> coordinate information?
>>>
>>> printVarSummary lists the variables coordinates but not there attributes. I
>>> have tried to set the coordinates properly, but I appear to be doing
>>> something incorrectly.
>>>
>>> I am working with ccsm3 data.
>>>
>>> I have copied the script below
>>>
>>>
>>> James Correia Jr., PhD
>>> Climate Physics Group
>>> Post. Doc.
>>> Pacific Northwest National Lab
>>>
>>> "Wisdom. Strength. Courage. Generosity. Each of us are born with one of
>>> these. It is up to us to find the other three inside of us."
>>> -Into the West
>>>
>>> :
>>> ;*************************************************
>>> ; WRF: panel three different variables at the same time step
>>> ;************************************************
>>> 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/wrf/WRF_contributed.ncl"
>>> begin
>>> ;************************************************
>>> ; open file and read in data
>>> ;************************************************
>>> var = "pr" ;cape,shr,eml,qbar,llj,cash
>>>
>>> if(var .eq. "pr")then
>>> unit = "mm/day"
>>> end if
>>>
>>> ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
>>> ; CCSM GCM
>>> e1 =
>>> addfile("/scratch2/narccap/b30.030e.cam2.h0.PRECL.1970-01_cat_1979-12.nc",
>>> "r")
>>> e2 =
>>> addfile("/scratch2/narccap/b30.030e.cam2.h0.PRECL.1980-01_cat_1989-12.nc",
>>> "r")
>>> e3 =
>>> addfile("/scratch2/narccap/b30.030e.cam2.h0.PRECL.1990-01_cat_1999-12.nc",
>>> "r")
>>>
>>> e4 =
>>> addfile("/scratch2/narccap/b30.030e.cam2.h0.PRECC.1970-01_cat_1979-12.nc",
>>> "r")
>>> e5 =
>>> addfile("/scratch2/narccap/b30.030e.cam2.h0.PRECC.1980-01_cat_1989-12.nc",
>>> "r")
>>> e6 =
>>> addfile("/scratch2/narccap/b30.030e.cam2.h0.PRECC.1990-01_cat_1999-12.nc",
>>> "r")
>>>
>>>
>>> e7 =
>>> addfile("/scratch2/narccap/b30.042e.cam2.h0.PRECL.2000-01_cat_2099-12.nc",
>>> "r")
>>> e8 =
>>> addfile("/scratch2/narccap/b30.042e.cam2.h0.PRECC.2000-01_cat_2099-12.nc",
>>> "r")
>>>
>>> lat = e1->lat
>>> lon = e1->lon
>>>
>>> var1 = e1->PRECL
>>> printVarSummary(var1)
>>> var2 = e2->PRECL
>>> var3 = e3->PRECL
>>>
>>> var4 = e4->PRECC
>>> var5 = e5->PRECC
>>> var6 = e6->PRECC
>>>
>>> var7 = e7->PRECL
>>> var8 = e8->PRECC
>>>
>>> var1 = var1*3600.*24.*1000.
>>> var2 = var2*3600.*24.*1000.
>>> var3 = var3*3600.*24.*1000.
>>> var4 = var4*3600.*24.*1000.
>>> var5 = var5*3600.*24.*1000.
>>> var6 = var6*3600.*24.*1000.
>>> var7 = var7*3600.*24.*1000.
>>> var8 = var8*3600.*24.*1000.
>>>
>>> ;units are m/s need mm/day : 3600.*24.*30.5/1000.
>>> ct1 = dimsizes(var1)
>>> ct2 = dimsizes(var2)
>>> ct3 = dimsizes(var3)
>>>
>>> cvar = new((/360,128,256/),float)
>>> cctas = new((/7,30,128,256/),float)
>>> fftas = new((/7,30,128,256/),float)
>>>
>>> ;get clim vars together to loop over to collect
>>> cvar(0:ct1(0)-1,:,:) = var1(:,:,:)+var4(:,:,:)
>>> cvar(ct1(0):ct1(0)+ct2(0)-1,:,:) = var2(:,:,:)+var5(:,:,:)
>>> cvar(ct1(0)+ct2(0):ct1(0)+ct2(0)+ct3(0)-1,:,:) = var3(:,:,:)+var6(:,:,:)
>>>
>>> fvar = var7+var8
>>>
>>> ii = -1
>>> do j=0,29
>>> jj = -1
>>> do i=0,11
>>> ii = ii + 1
>>> if(i.lt.5 .and. i .gt. 8)then
>>> jj = jj + 1
>>> cctas(jj,j,:,:) = cvar(ii,:,:)
>>> end if
>>> end do
>>> end do
>>> cctas!0 = "month"
>>> cctas!1 = "year"
>>> cctas!2 = "lat"
>>> cctas!3 = "lon"
>>> print(cctas&lat)
>>>
>>> cctas&lat = lat
>>> cctas&lon = lon
>>> printVarSummary(cctas)
>>>
>>> cctas&lat_at_units = "degrees_north"
>>> cctas&lon_at_units = "degrees_east"
>>> printVarSummary(cctas)
>>>
>>> ctas = dim_avg_Wrap(cctas(lat|:,lon|:,month|:,year|:))
>>> copy_VarCoords(var1(lat|:,lon|:,time|:6),ctas(:,:,:))
>>> printVarSummary(ctas)
>>>
>>> ii = -1
>>> do j=0,99
>>> jj = -1
>>> do i=0,11
>>> ii = ii +1
>>> if(j .gt. 29 .and. j .lt. 61)then
>>> if(i .lt. 5 .and. i .gt. 8)then
>>> jj = jj +1
>>> fftas(jj,j,:,:) = fvar(ii,:,:)
>>> end if
>>> end if
>>> end do
>>> end do
>>> ;copy_VarCoords(var1(:119,:,:),fftas)
>>> fftas!0 = "month"
>>> fftas!1 = "year"
>>> fftas!2 = "lat"
>>> fftas!3 = "lon"
>>>
>>> fftas&lat = lat
>>> fftas&lon = lon
>>> fftas&lat_at_units = "degrees_north"
>>> fftas&lon_at_units = "degrees_east"
>>>
>>> ;cdif = var1(0,:,:)
>>> ftas = dim_avg_Wrap(fftas(lat|:,lon|:,month|:,year|:))
>>> copy_VarCoords(var1(lat|:,lon|:,time|:6),ftas(:,:,:))
>>>
>>> printVarSummary(ftas)
>>>
>>> cdif = ftas - ctas
>>>
>>> resa = True
>>> resa_at_gsnRightString = "mm/day"
>>> resa_at_gsnAddCyclic =False
>>> resa_at_mpMaxLonF = lona(y2,x2)-15.
>>> resa_at_mpMaxLatF = lata(y2,x2)+11.
>>> resa_at_mpMinLonF = lona(y1,x1)-15.
>>> resa_at_mpMinLatF = lata(y1,x1)+2.
>>> resa_at_mpFillOn = False
>>> resa_at_gsnMaximize = True ; uncomment to maximize size
>>> resa_at_gsnSpreadColors = True ; use full range of colormap
>>> resa_at_cnFillOn = True ; color plot desired
>>> resa_at_cnLinesOn = False ; turn off contour lines
>>> resa_at_cnLineLabelsOn = False ; turn off contour labels
>>> resa_at_lbLabelAutoStride = True ; let NCL figure lb stride
>>> resa_at_cnLevelSelectionMode = "ExplicitLevels" ; explicit [unequal] cn
>>> levels
>>> resa_at_gsnDraw =False
>>> resa_at_gsnFrame = False
>>>
>>> do u=0,6
>>> resa_at_gsnSpreadColorStart = 2
>>> resa_at_gsnSpreadColorEnd = 11
>>> resa_at_gsnLeftString ="CCSM Precip current"
>>> resa_at_gsnRightString = ""
>>> resa_at_cnLevels = (/0,.25,.5,1.,1.5,2.,3.,5.,10./)
>>> plot(u) = gsn_csm_contour_map_ce(wks,ctas(:,:,u),resa)
>>>
>>> delete(resa_at_cnLevels)
>>> resa_at_cnLevels = (/-1,-0.5,-.25,-.1,0,0.1,0.25,0.5,1/)
>>> resa_at_gsnSpreadColorStart = 12
>>> resa_at_gsnSpreadColorEnd = 21
>>> resa_at_gsnLeftString ="CCSM Precip change"
>>> plot(u+1) = gsn_csm_contour_map_ce(wks,cdif(:,:,u),resa)
>>> end do
>>> ;************************************************
>>> ; create panel: panel plots have their own set of resources
>>> ;************************************************
>>> resP = True ; modify the panel plot
>>> resP_at_txString = " "
>>> resP_at_gsnMaximize = True ; maximize panel area
>>> resP_at_vpHeightF = 0.345614
>>> resP_at_vpWidthF = 0.413117
>>> resP_at_gsnPanelRowSpec = True ; specify 1 top, 2 lower
>>> level
>>> resP_at_gsnPanelFigureStrings = (/"A","B","C","D","E","F","G","H"/)
>>> gsn_panel(wks,plot,(/4,4/),resP) ; now draw as one plot
>>>
>>> end
>>>
>>> _______________________________________________
>>> ncl-talk mailing list
>>> List instructions, subscriber options, unsubscribe:
>>> http://mailman.ucar.edu/mailman/listinfo/ncl-talk
>> _______________________________________________
>> ncl-talk mailing list
>> List instructions, subscriber options, unsubscribe:
>> http://mailman.ucar.edu/mailman/listinfo/ncl-talk
>
> _______________________________________________
> ncl-talk mailing list
> List instructions, subscriber options, unsubscribe:
> http://mailman.ucar.edu/mailman/listinfo/ncl-talk

_______________________________________________
ncl-talk mailing list
List instructions, subscriber options, unsubscribe:
http://mailman.ucar.edu/mailman/listinfo/ncl-talk
Received on Thu Feb 05 2009 - 14:37:20 MST

This archive was generated by hypermail 2.2.0 : Thu Feb 05 2009 - 17:21:37 MST