I have a script that writes data to a netCDF, but I get the following
error message
ncvardef: ncid 10: NC_UNLIMITED in the wrong index
fatal:FileAddVar: an error occurred while adding a variable to a file,
check to make sure data type is supported by the output format
fatal:Execute: Error occurred at or near line 162 in file
station_daytomonth.ncl
The command at line 162 is ' filevardef(fout, "slp_mn", typeof(slp_mn),
(/"region","time"/))'
The data type of slp_mn is float, as are 'region' and 'time', so I really
can't see where the problem is. The full script is pasted below, and I've
moved the datafile to my ptmp directory (i.e. /ptmp/whobbs/) on
'tempest', should you wish to try and run it.
Many thanks
Will
============================
Room 3221C
UCLA Department of Geography
1255 Bunche Hall
Los Angeles CA 90095-1524
;=====================================================================;
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"
;======================================================================
;Reads in sea_level_pressure for a number of station critical to SH ZW1,
averages into regions of interest and into monthly means, then writes to file
begin
yrstrt = 1994
yrend = 1999
;***********************************************
;read in data
;*************************************************
FIL0 = "zw1_station_slp.nc"
diri0 = "/whobbs/ptmp/"
f0 = addfile(diri0+FIL0, "r")
x = f0->pressure
jul = f0->T
p = short2flt(x(T|:,IWMO|:))
delete(x)
;*******************************************
;Create new p-data array
;*********************************************
dimz = dimsizes(p)
days = dimz(0)
stat = new((/3, days/), float)
delete(dimz)
;first dim of stat is area of interest
;0 = subpolar trough (stns 619970, 619980, 689940)
;1 = subtrop trough (stns 919580, 939940, 939970, 919600)
;2 = subtrop ridge (stns 689020, 689060)
;get regional statn averages
stat(0,:) = dim_avg(p(:,0:2))
stat(1,:) = dim_avg(p(:,3:6))
stat(2,:) = dim_avg(p(:,7:8))
delete(p)
;assign attributes to time dimension
stat!0 = "region"
stat!1 = "time"
stat&time = jul
;create new time array in format mmyyyy
nmon = 12*(yrend-yrstrt+1) ; total number of months in data
X = new((/nmon/), string) ; new time coord array
mn = 0
do yy = yrstrt, yrend ; concatenate month and years
do mm = 1,12
X(mn) = mm+""+yy
mn = mn+1
end do
end do
time = stringtofloat(X) ; need to convert for use as netCDF
dimension
delete(X)
;*******************************************
;convert daily data to monthly means
;*********************************************
slp_mn = new((/3,nmon/), float)
monlength = (/31,28,31,30,31,30,31,31,30,31,30,31/)
mn = 0
do yy = yrstrt, yrend
do mm = 1, 12
STR = doubletoint(greg2jul(yy, mm, 1, 0)) ; determine julian start
day of month
ll = monlength(mm-1)
if (mm.eq.2) then ; for Feb in leapyear.....
if (isleapyear(yy).eq."True") then
ll = 29 ;....use ll = 29 days...
end if
end if
FIN = doubletoint(STR+ll)
slp_mn(:,mn) = dim_avg(stat(:, {STR:FIN}))
mn = mn+1
end do
end do
printVarSummary(slp_mn)
; print(slp_mn(:,0:3))
delete(stat)
delete(jul)
delete(monlength)
;****************************************************
;Write data to file
;****************************************************
diri1 = "/u/whobbs/fourier/data/"
FIL1 = "zw1_stn_slp.nc"
system("rm "+diri1+FIL1)
fout = addfile(diri1+FIL1, "c")
;create file attributes
fAtt = True ; assign file attributes
fAtt_at_title = "Station slp for SH ZW1-critical regions"
fAtt_at_source_file = "station_daytomonth.ncl"
fAtt_at_Conventions = "Region 0=subpolar_trough, 1=subtrop_trough,
2=subtrop_ridge"
fAtt_at_creation_date = systemfunc ("date")
fileattdef( fout, fAtt )
;set dimensions
dimNames = (/"region","time"/)
dimSizes = (/3, -1/)
dimUnlim = (/False,True/)
filedimdef(fout,dimNames,dimSizes,dimUnlim)
;set file variables
region = fspan(1,3,1)
filevardef(fout, "time" ,typeof(time),"time")
filevardef(fout, "region", typeof(region), "region")
filevardef(fout, "slp_mn", typeof(slp_mn), (/"region","time"/))
;set other attributes
time_at_long_name = "month+year"
slp_mn_at_long_name = "Monthly mean slp for each ZW1-critical region"
slp_mn_at_units = "hPa"
region_at_long_name = "ZW1-critical region"
filevarattdef(fout,"slp_mn", slp_mn)
filevarattdef(fout,"time",slp_mn&time)
filevarattdef(fout,"region",slp_mn®ion)
;populate file
fout->time = (/time/)
fout->region = (/region/)
fout->slp_mn = (/slp_mn/)
end
_______________________________________________
ncl-talk mailing list
ncl-talk_at_ucar.edu
http://mailman.ucar.edu/mailman/listinfo/ncl-talk
Received on Fri May 05 2006 - 12:28:37 MDT
This archive was generated by hypermail 2.2.0 : Fri May 05 2006 - 15:37:41 MDT