[ncl-talk] ut_inv_calendar
Alan Brammer
abrammer at albany.edu
Fri Feb 27 08:44:50 MST 2015
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
>
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://mailman.ucar.edu/pipermail/ncl-talk/attachments/20150227/2e4e57eb/attachment.html
More information about the ncl-talk
mailing list