[ncl-talk] ut_inv_calendar

Mary Haley haley at ucar.edu
Fri Feb 27 09:41:30 MST 2015


Alan,

You're right: in V6.2.1 of NCL there was a bug in which ut_xxxxx stopped
recognizing the " ref " string.  This has been fixed for the next release.

However, we do recommend that people use the cd_xxxx routines.  It is my
understanding that the time conversion code that the ut_xxxx routines
depends on is frozen and no longer supported by Unidata (the same
developers of NetCDF), so we moved to using code supported by the PCMDI
group out of Lawrence Livermore National Lab.

--Mary


On Fri, Feb 27, 2015 at 8:44 AM, Alan Brammer <abrammer at albany.edu> wrote:

> Kyle's right about reading error messages, specifically this one:
>
> *fatal:Undefined identifier: (cv_inv_calendar) is undefined, can't
> continuefatal:["Execute.c":8578]:Execute: Error occurred at or near line
> 103 in file IR_download_and_crop.ncl*
>
> It's *cd*_inv_calendar()
>
>
> However there is still a problem.   The below works on 6.0 and 6.2.0 but I
> get the same error as you in 6.2.1  on the lines using ut_inv_calendar.
>
> This seems to be a backward compatible issue with the deprecated function
> and using cd_inv_calendar should solve the problem.
>
>
> Alan.
>
>
>
>
> 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"
>
> begin
> ;# Set intital string variables
> time_array=new((/240/),"double")
> time_array at units = "hours ref 1-1-1 00:00:0.0"
> ;######## Begin the time loop ########
> beg=15
> day_ind = 0
> hr_ind = 0
> ;########## SET THE TIMES ########
>
>    time_array(48*day_ind+hr_ind*2) =
> cd_inv_calendar(2006,7,beg+day_ind+1,hr_ind+1,0,0,time_array at units, 0)
>    time_array(48*day_ind+hr_ind*2+1) =
> cd_inv_calendar(2006,7,beg+day_ind+1,hr_ind+1,30,0,time_array at units, 0)
>
> print(    time_array(48*day_ind+hr_ind*2)  )
> print(   time_array(48*day_ind+hr_ind*2+1) )
>
>
>    time_array(48*day_ind+hr_ind*2) =
> ut_inv_calendar(2006,7,beg+day_ind+1,hr_ind+1,0,0,time_array at units, 0)
>    time_array(48*day_ind+hr_ind*2+1) =
> ut_inv_calendar(2006,7,beg+day_ind+1,hr_ind+1,30,0,time_array at units, 0)
>
> print(    time_array(48*day_ind+hr_ind*2)  )
> print(   time_array(48*day_ind+hr_ind*2+1) )
>
> end
>
>
>
>
>
>
>
> On Fri, Feb 27, 2015 at 8:19 AM, Kyle Griffin <ksgriffin2 at wisc.edu> wrote:
>
>> Conrado,
>>
>> Please read your error messages more carefully! They tell you exactly
>> what is going wrong. In this case, it tells me that you did not spell the
>> "cd" part of the function name correctly...fix that so the name is as
>> Dennis suggested and let us know how that goes.
>>
>> Kyle
>> On Feb 27, 2015 6:58 AM, <jorge.conrado at cptec.inpe.br> wrote:
>>
>>>
>>>
>>>
>>>       Hi,
>>>
>>>       I don't have experience with the NCL and I downloaded a script
>>> (IR_download_and_crop.ncl) in the Web to download images from the ftp
>>> address:
>>>
>>>
>>>       ftp://disc2.nascom.nasa.gov/data/s4pa/TRMM_ANCILLARY/MERG/
>>>
>>>
>>>       This the script:
>>>
>>>
>>>
>>>
>>> ;########## IR_download_and_crop.ncl #############
>>> ;# This program downloads data from the NASA Merged IR database and
>>> crops to
>>> ;# the specified region and time period. A NETCDF file of the data is
>>> made
>>> ;# and the orignial fortran binary data is deleted.
>>>
>>> ;# 1. Set inital variables
>>> ;# 2. Read in 5 days of data over W. Africa write to NETCDF at 4km, 30
>>> min
>>>
>>> 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/skewt_func.ncl"
>>> load "$NCARG_ROOT/lib/ncarg/nclscripts/csm/contributed.ncl"
>>>
>>> begin
>>>
>>> ;######## SET INITIAL VARS ########
>>>
>>> ;# Reference information for the Merged IR Dataset
>>> ;# For 2006...
>>> ;# Jul begins on day 182 and ends on 212
>>> ;# Aug begins on day 213 and ends on 243
>>> ;# Sep begins on day 244 and ends on 273
>>>
>>> ;# Set intital string variables
>>> hr=(/"00","01","02","03","04","05","06","07","08","09","10",
>>> "11","12","13","14","15","16","17","18","19","20","21","22","23"/)
>>>
>>> day_31=(/"01","02","03","04","05","06","07","08","09","10","
>>> 11","12","13","14","15","16","17","18","19","20","21","22","
>>> 23","24","25","26","27","28","29","30","31"/)
>>>
>>> day_30=(/"01","02","03","04","05","06","07","08","09","10","
>>> 11","12","13","14","15","16","17","18","19","20","21","22","
>>> 23","24","25","26","27","28","29","30"/)
>>>
>>> time_array=new((/240/),"double")
>>>
>>> time_array at units = "hours ref 1-1-1 00:00:0.0"
>>>
>>> ;# For the July brightness temp. array a byte array is storred to reduce
>>> memory requirements and storage space.
>>> ;# Convert to another data type and add 75.
>>>
>>> tb_array=new((/240,825,1925/),"float")
>>>
>>> ;######## Begin the time loop ########
>>>
>>> beg=15
>>>
>>> do day_ind=0,4
>>>    do hr_ind=0,23
>>>
>>>    file_name_download = "ftp://disc2.nascom.nasa.gov/
>>> data/s4pa/TRMM_ANCILLARY/MERG/2006/"+(beg+day_ind+182)+"/
>>> merg_200607"+day_31(beg+day_ind)+hr(hr_ind)+"_4km-pixel.Z"
>>>    system("wget "+file_name_download)
>>>
>>> ;####### READ THE FORTRAN BINARY ##############
>>>
>>>    file_name_read_zip = "merg_200607"+day_31(beg+day_
>>> ind)+hr(hr_ind)+"_4km-pixel.Z"
>>>    file_name_read = "merg_200607"+day_31(beg+day_
>>> ind)+hr(hr_ind)+"_4km-pixel"
>>>
>>>    print(file_name_read)
>>>
>>>    system("gunzip "+file_name_read_zip)
>>>
>>>    ;# Set Fortran read options
>>>
>>>    setfileoption("bin","ReadByteOrder","LittleEndian")
>>>    ir_temp   = byte2flt(fbindirread (file_name_read ,0,
>>> (/2,3298,9896/),"byte"))+75.
>>>
>>>    system("rm -f "+file_name_read)
>>>
>>> ;######## CROP THE IR GRID FOR WEST AFR #######
>>> ;# LARGE: 319.998E(8795)-59.97576E(1648),40.0013N(549)-19.9772S(2197)
>>> ;# LIMIT: 334.9874E(9207)-44.98637E(1236),25.00667N(961)-4.982578S(1785)
>>>
>>>    lon=fspan(0.0182,0.0182+0.036378335*9896,9896)
>>>    lat=fspan(59.982,59.982-0.036383683*3298,3298)
>>>
>>>    lon at units      = "degrees-east"
>>>    lat at units      = "degrees-north"
>>>
>>>    ir_temp!2    = "lon"
>>>    ir_temp!1    = "lat"
>>>    ir_temp!0    = "time"
>>>
>>>    ir_temp_re_0=new((/825,1925/),"float")
>>>    ir_temp_re_1=new((/825,1925/),"float")
>>>
>>>    ir_temp_re_0(:,:687)=ir_temp(lat|961:1785,lon|9207:9894,time|0)
>>>    ir_temp_re_0(:,688:)=ir_temp(lat|961:1785,lon|:1236,time|0)
>>>
>>>    ir_temp_re_1(:,:687)=ir_temp(lat|961:1785,lon|9207:9894,time|1)
>>>    ir_temp_re_1(:,688:)=ir_temp(lat|961:1785,lon|:1236,time|1)
>>>
>>>    lon_out = new((/1925/),"float")
>>>
>>>    lon_out(:687)=lon(9207:9894)
>>>    lon_out(688:)=lon(0:1236)
>>>
>>>    lat_out  = lat(961:1785)
>>>
>>> ;########## PLACE IN ARRAY #######
>>>
>>>    tb_array(48*day_ind+hr_ind*2,:,:)=ir_temp_re_0       ;# First half
>>> hour
>>>    tb_array(48*day_ind+hr_ind*2+1,:,:)=ir_temp_re_1     ;# Second half
>>> hour
>>>
>>> ;########## SET THE TIMES ########
>>>
>>>    time_array(48*day_ind+hr_ind*2) = ut_inv_calendar(2006,7,beg+
>>> day_ind+1,hr_ind+1,0,0,time_array at units, 0)
>>>    time_array(48*day_ind+hr_ind*2+1) = ut_inv_calendar(2006,7,beg+
>>> day_ind+1,hr_ind+1,30,0,time_array at units, 0)
>>>
>>>    end do
>>> end do
>>>
>>> ;######## CREATE THE NETCDF FILE ########
>>>
>>>    ntim  = 240
>>>    nlat  = 825
>>>    nlon  = 1925
>>>
>>>    diro = "./"                     ; Output directory
>>>    filo = "ir_test_jul_16_to_jul_20.nc"             ; Output file
>>>    system("/bin/rm -f " + diro + filo)    ; remove if exists
>>>    fout  = addfile (diro + filo, "c")  ; open output file
>>>
>>> ;===================================================================
>>> ; explicitly declare file definition mode. Improve efficiency.
>>> ;===================================================================
>>>
>>>    setfileoption(fout,"DefineMode",True)
>>>
>>> ;===================================================================
>>> ; create global attributes of the file
>>> ;===================================================================
>>>
>>>    fAtt               = True            ; assign file attributes
>>>    fAtt at title         = "NCL Efficient Approach to netCDF Creation"
>>>    fAtt at source_file   =  "original-file.nc"
>>>    fAtt at Conventions   = "None"
>>>    fAtt at creation_date = systemfunc ("date")
>>>    fileattdef( fout, fAtt )            ; copy file attributes
>>>
>>> ;===================================================================
>>> ; predefine the coordinate variables and their dimensionality
>>> ; Note: to get an UNLIMITED record dimension, we set the dimensionality
>>> ; to -1 (or the actual size) and set the dimension name to True.
>>> ;===================================================================
>>>
>>>    dimNames = (/"time", "lat", "lon"/)
>>>    dimSizes = (/ -1   ,  nlat,  nlon/)
>>>    dimUnlim = (/ True , False, False/)
>>>    filedimdef(fout,dimNames,dimSizes,dimUnlim)
>>>
>>> ;===================================================================
>>> ; predefine the the dimensionality of the variables to be written out
>>> ;===================================================================
>>> ; Here we are using NCL functions to facilitate defining
>>> ; each variable's dimension name(s) and type.
>>> ; The following could be replaced with explicit, user defined dimension
>>> ; names different from those associated with the variable in memory.
>>> ; Say, PS(time,lat,lon) in the NCL script. They could be redefined for
>>> the file via:
>>> ; filevardef(fout, "PS"   ,typeof(PS) ,(/"TIME","latitude","
>>> longitude"/))
>>> ;===================================================================
>>>
>>>    filevardef(fout, "time" ,(/"double"/),(/"time"/))
>>>    filevardef(fout, "lat"  ,(/"float"/),(/"lat"/))
>>>    filevardef(fout, "lon"  ,(/"float"/),(/"lon"/))
>>>    filevardef(fout, "TB"   ,(/"float"/),(/"time","lat","lon"/))
>>>
>>> ;===================================================================
>>> ; Copy attributes associated with each variable to the file
>>> ; All attributes associated with each variable will be copied.
>>> ;====================================================================
>>>
>>>    filevarattdef(fout,"time" ,time_array)              ; copy time
>>> attributes
>>>    filevarattdef(fout,"lat"  ,lat_out)                 ; copy lat
>>> attributes
>>>    filevarattdef(fout,"lon"  ,lon_out)                 ; copy lon
>>> attributes
>>>    filevarattdef(fout,"TB"   ,tb_array)                      ; copy PS
>>> attributes
>>>
>>> ;===================================================================
>>> ; explicitly exit file definition mode. **NOT REQUIRED**
>>> ;===================================================================
>>>
>>>    setfileoption(fout,"DefineMode",False)
>>>
>>> ;===================================================================
>>> ; output only the data values since the dimensionality and such have
>>> ; been predefined. The "(/", "/)" syntax tells NCL to only output the
>>> ; data values to the predefined locations on the file.
>>> ;====================================================================
>>>
>>>    fout->time   = (/time_array/)
>>>    fout->lat    = (/lat_out/)
>>>    fout->lon    = (/lon_out/)
>>>    fout->TB      = (/tb_array/)
>>>
>>> end
>>>
>>>
>>>
>>>      I run it and the script download the images, but this the line
>>>
>>>
>>>   time_array(48*day_ind+hr_ind*2) = ut_inv_calendar(2006,7,beg+
>>> day_ind+1,hr_ind+1,0,0,time_array at units, 0)
>>>    time_array(48*day_ind+hr_ind*2+1) =
>>>
>>>
>>>     I had the message:
>>>
>>>
>>> fatal:ut_inv_calendar: Invalid specification string
>>> fatal:["Execute.c":8578]:Execute: Error occurred at or near line 103 in
>>> file IR_download_and_crop.ncl
>>>
>>>
>>>
>>>      I already change the ut_inv_calendar to cd_inv_calendar but I had
>>> the same error.
>>>
>>>
>>> fatal:Undefined identifier: (cv_inv_calendar) is undefined, can't
>>> continue
>>> fatal:["Execute.c":8578]:Execute: Error occurred at or near line 103 in
>>> file IR_download_and_crop.ncl
>>>
>>>
>>>
>>>
>>> fatal:ut_inv_calendar: Invalid specification string
>>> fatal:["Execute.c":8578]:Execute: Error occurred at or near line 103 in
>>> file IR_download_and_crop.ncl
>>>
>>>
>>>     I don't know how can I solve this error.
>>>
>>>
>>>     Thank  for all that help me with the question I asked yesterday.
>>>
>>>
>>>     Conrado
>>>
>>>
>>>
>>> _______________________________________________
>>> 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
>
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://mailman.ucar.edu/pipermail/ncl-talk/attachments/20150227/7e942fbc/attachment.html 


More information about the ncl-talk mailing list