<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
<style type="text/css" style="display:none;"><!-- P {margin-top:0;margin-bottom:0;} --></style>
</head>
<body dir="ltr">
<div id="divtagdefaultwrapper" style="font-size:12pt;color:#000000;background-color:#FFFFFF;font-family:Calibri,Arial,Helvetica,sans-serif;">
<p>Hi,</p>
<p><br>
</p>
<p>I am trying to write to a NetCDF output file and am running into what I believe is a size limitation. &nbsp;When
</p>
<p>I write out fewer times this problem goes away. &nbsp;I searched for the error and believe that is linked to an</p>
<p>output size issue.&nbsp; I&nbsp; tried changing the NetCDF format following <a id="LPlnk472824" href="http://www.ncl.ucar.edu/FAQ/#file_io_004">
http://www.ncl.ucar.edu/FAQ/#file_io_004</a></p>
<p>However, I still get the same error:</p>
<p><br>
</p>
<p>ncendef: ncid 589824: NetCDF: One or more variable sizes violate format constraints<br>
fatal:NetCDF: Operation not allowed in define mode: error attempting to write variable (u) to file (/jm13/djv/XUVTest.nc)<br>
fatal:[&quot;Execute.c&quot;:8128]:Execute: Error occurred at or near line 164 in file netcdf-size-tst.ncl<br>
<br>
(0)&nbsp;&nbsp;&nbsp;&nbsp; u<br>
ncredef: ncid 589824: NetCDF: Operation not allowed in define mode<br>
ncendef: ncid 589824: NetCDF: One or more variable sizes violate format constraints<br>
fatal:NetCDF: Operation not allowed in define mode: error attempting to write variable (lev) to file (/jm13/djv/XUVTest.nc)<br>
fatal:[&quot;Execute.c&quot;:8128]:Execute: Error occurred at or near line 166 in file netcdf-size-tst.ncl<br>
<br>
(0)&nbsp;&nbsp;&nbsp;&nbsp; v<br>
ncredef: ncid 589824: NetCDF: Operation not allowed in define mode<br>
ncendef: ncid 589824: NetCDF: One or more variable sizes violate format constraints<br>
fatal:NetCDF: Operation not allowed in define mode: error attempting to write variable (time) to file (/jm13/djv/XUVTest.nc)<br>
fatal:[&quot;Execute.c&quot;:8128]:Execute: Error occurred at or near line 168 in file netcdf-size-tst.ncl<br>
<br>
(0)&nbsp;&nbsp;&nbsp;&nbsp; t<br>
ncclose: ncid 589824: NetCDF: One or more variable sizes violate format constraints</p>
<p><br>
</p>
<p>----------------------------------------------------------------------------------------------------</p>
<p>I am running version 6.1.2. &nbsp;I have attached the script below and it is called with a parameter:</p>
<p>ncl ityp=3 netcdf-size-tst.ncl</p>
<p><br>
</p>
<p>I have tried &quot;NetCDF3&quot;&nbsp;&nbsp; &quot;NetCDF4&quot;&nbsp; &quot;LargeFile&quot;&nbsp; &quot;64BitOffset&quot; and &quot;NetCDF4Classic&quot; to no avail.</p>
<p>Any help would be appreciated! &nbsp;Thanks</p>
<p><br>
</p>
<p>Dave Vollaro</p>
<p><br>
</p>
<p>----------------------------------------------------------------------------------------------------</p>
<p>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;test script <br>
</p>
<p>----------------------------------------------------------------------------------------------------</p>
<p>load &quot;$NCARG_ROOT/lib/ncarg/nclscripts/csm/gsn_code.ncl&quot;<br>
load &quot;$NCARG_ROOT/lib/ncarg/nclscripts/csm/gsn_csm.ncl&quot;<br>
load &quot;$NCARG_ROOT/lib/ncarg/nclscripts/csm/contributed.ncl&quot;<br>
load &quot;$NCARG_ROOT/lib/ncarg/nclscripts/csm/shea_util.ncl&quot;<br>
;load &quot;$NCARG_ROOT/lib/ncarg/nclscripts/contrib/ut_string.ncl&quot;<br>
<br>
begin<br>
; netcdf-size-tst.ncl<br>
; Modified by djv&nbsp; 2/13/15<br>
; This program will test size constraints in writing out NETCDF output in ncl.<br>
; Will address below errors: <br>
; ncendef:ncid 327680: NetCDF:One or more variable sizes violate format constraints<br>
; ncvarput: ncid 327680: NetCDF: Operation not allowed in define mode<br>
;<br>
; Will test various&nbsp;&nbsp; setfileoption &quot;Format&quot; options:<br>
; ie&nbsp;&nbsp; &quot;NetCDF3&quot;&nbsp;&nbsp; &quot;NetCDF4&quot;&nbsp; &quot;LargeFile&quot;&nbsp; &quot;64BitOffset&quot; &quot;NetCDF4Classic&quot;<br>
<br>
<br>
&nbsp; print(&quot;Starting time:&quot;)<br>
&nbsp; sys_cmd = &quot;date &quot;<br>
&nbsp; system(sys_cmd)<br>
&nbsp; sys_cmd = &quot;sleep 1 &quot;<br>
&nbsp; system(sys_cmd)<br>
&nbsp; <br>
;***********************************************<br>
; set USER DEF VARS<br>
;***********************************************<br>
&nbsp; ilon = 512&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ;num lons of input GG grid <br>
&nbsp; jlat = 256&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ;num lats of input GG grid <br>
&nbsp; odatpth = &quot;/jm13/djv/&quot;<br>
&nbsp; ofile_type = new((/5/),&quot;string&quot;)<br>
&nbsp; ofile_type = (/&quot;NetCDF3&quot;,&quot;NetCDF4&quot;,&quot;LargeFile&quot;,&quot;64BitOffset&quot;,&quot;NetCDF4Classic&quot;/)<br>
&nbsp; print(ofile_type)<br>
&nbsp; ntimes_out=30<br>
&nbsp; year = 1979<br>
;***********************************************<br>
;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; LEVEL EXTRACT RANGE <br>
;***********************************************<br>
&nbsp; parm = True<br>
&nbsp; parm@blev = 1000&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ;bottommost plev to extract both=999 extract all levs<br>
&nbsp; parm@tlev = 50&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ;topmost plev to extract&nbsp;&nbsp;&nbsp; both=999 extract all levs<br>
<br>
<br>
;***********************************************<br>
;&nbsp; DATA SOURCE<br>
;***********************************************<br>
&nbsp; url = &quot;http://ramadda.atmos.albany.edu:8080/repository/opendap/Top/&quot;<br>
&nbsp; filename_u = url&#43; &quot;UAlbany&#43;Repository/ERA-Interim/&quot;&#43;year&#43;&quot;/u.&quot;&#43;year&#43;&quot;.nc/entry.das&quot;<br>
&nbsp; filename_v = url&#43; &quot;UAlbany&#43;Repository/ERA-Interim/&quot;&#43;year&#43;&quot;/v.&quot;&#43;year&#43;&quot;.nc/entry.das&quot;<br>
&nbsp; filename_t = url&#43; &quot;UAlbany&#43;Repository/ERA-Interim/&quot;&#43;year&#43;&quot;/t.&quot;&#43;year&#43;&quot;.nc/entry.das&quot;<br>
&nbsp; exists = isfilepresent(filename_t)<br>
&nbsp; if(.not.exists) then <br>
&nbsp;&nbsp;&nbsp; print(&quot;OPeNDAP isfilepresent test unsuccessful.&quot;)<br>
&nbsp;&nbsp;&nbsp; print(&quot;File doesn't exist or NCL doesn't have OPeNDAP ability on this system&quot;)<br>
&nbsp; else<br>
&nbsp;&nbsp;&nbsp; print(&quot;OPeNDAP isfilepresent test successful.&quot;)<br>
&nbsp;&nbsp;&nbsp; ufile_nc = addfile(filename_u,&quot;r&quot;)<br>
&nbsp;&nbsp;&nbsp; vfile_nc = addfile(filename_v,&quot;r&quot;)<br>
&nbsp;&nbsp;&nbsp; tfile_nc = addfile(filename_t,&quot;r&quot;)<br>
&nbsp;&nbsp;&nbsp; vars = getfilevarnames(ufile_nc)<br>
&nbsp;&nbsp;&nbsp; print(vars)&nbsp; &nbsp;<br>
&nbsp; end if<br>
<br>
&nbsp; sys_cmd = &quot;ncdump -h &quot;&#43;filename_u<br>
&nbsp; system(sys_cmd)<br>
<br>
&nbsp; namesu = getfilevarnames(ufile_nc)&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ;Get the variable names in the<br>
&nbsp; namesv = getfilevarnames(vfile_nc)&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ;Get the variable names in the<br>
&nbsp; namest = getfilevarnames(tfile_nc)&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ;Get the variable names in the<br>
&nbsp; print(namesu)&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ;GRIB file and print them out.<br>
&nbsp; print(namesv)&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ;GRIB file and print them out.<br>
&nbsp; print(namest)&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ;GRIB file and print them out.<br>
<br>
;***********************************************<br>
; level range selection processing section<br>
;***********************************************<br>
&nbsp; levname = str_match(namesu,&quot;lev&quot;)&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ;finds lev array name (top2bot)<br>
&nbsp; levdims = getfilevardimsizes (vfile_nc,levname) ;<br>
<br>
&nbsp; LEV = ufile_nc-&gt;$levname$&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ;read in level data<br>
&nbsp; if (parm@blev.eq. 999.and.parm@tlev.eq. 999) then<br>
&nbsp;&nbsp; lev0=0<br>
&nbsp;&nbsp; lev1=levdims-1<br>
&nbsp; else<br>
&nbsp;&nbsp; lev0 = ind_nearest_coord(parm@blev,LEV,0)<br>
&nbsp;&nbsp; lev1 = ind_nearest_coord(parm@tlev,LEV,0)<br>
&nbsp; end if<br>
&nbsp; nlev_out = lev1 - lev0 &#43; 1<br>
&nbsp; print (parm@blev&#43;&quot; &quot;&#43;lev0&#43;&quot; &quot;&#43;parm@tlev&#43;&quot; &quot;&#43;lev1&#43;&quot; nlevout=&quot;&#43;nlev_out)<br>
&nbsp; print (LEV(lev0:lev1))<br>
<br>
<br>
;***********************************************<br>
;&nbsp; check for existing output files and remove<br>
;***********************************************<br>
&nbsp; ncout = odatpth&#43;&quot;XUVTest.nc&quot;<br>
&nbsp; rmcmd = &quot;'rm' &quot; &#43; ncout<br>
&nbsp; system (rmcmd)&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ;remove any pre-exist ncout fil<br>
&nbsp; ncdf_out = addfile(ncout ,&quot;c&quot;)&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ;create output NC file<br>
&nbsp; setfileoption(ncdf_out,&quot;DefineMode&quot;,True)<br>
&nbsp; setfileoption(&quot;nc&quot;,&quot;Format&quot;,ofile_type(ityp))<br>
&nbsp; print(&quot;NCOUT &quot;&#43;ofile_type(ityp))<br>
<br>
;===================================================================<br>
; create global attributes of the file<br>
;===================================================================<br>
&nbsp;fAtt&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; = True&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ; assign file attributes<br>
&nbsp;fAtt@title&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; = &quot;NCL Efficient Approach to netCDF Creation&quot; &nbsp;<br>
&nbsp;fAtt@source_file&nbsp;&nbsp; =&nbsp; &quot;original-file.nc&quot;<br>
&nbsp;fAtt@Conventions&nbsp;&nbsp; = &quot;None&quot;&nbsp; &nbsp;<br>
&nbsp;fAtt@creation_date = systemfunc (&quot;date&quot;)&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;<br>
&nbsp;fileattdef( ncdf_out, fAtt )&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ; copy file attributes &nbsp;<br>
<br>
&nbsp; <br>
<br>
&nbsp;iout=0<br>
;******************************************************************************<br>
;&nbsp;&nbsp; data&nbsp; processing loop&nbsp; (U/V/T(tim,lev,lat,lon)<br>
;******************************************************************************<br>
&nbsp; do i = 0,ntimes_out-1<br>
&nbsp;&nbsp; print (i&#43;&quot; &quot;)<br>
&nbsp;&nbsp; vname = str_match(namesv,&quot;v&quot;)&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ;finds lev array name (top2bot)<br>
&nbsp;&nbsp; V = vfile_nc-&gt;v(i,lev0:lev1,:,:)&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ; read in 3D dataset for 1time<br>
<br>
&nbsp;&nbsp; uname = str_match(namesu,&quot;u&quot;)&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ;finds lev array name (top2bot)<br>
&nbsp;&nbsp; U = ufile_nc-&gt;u(i,lev0:lev1,:,:)&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ; read in 3D dataset for 1time<br>
<br>
&nbsp;&nbsp; tname = str_match(namest,&quot;t&quot;)&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ;finds lev array name (top2bot)<br>
&nbsp;&nbsp; T = tfile_nc-&gt;t(i,lev0:lev1,:,:)&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ; read in 3D dataset for 1time<br>
<br>
<br>
&nbsp;&nbsp; if (i .eq.&nbsp; 0 ) then<br>
;===================================================================<br>
; define dimension characteristics of NETCDF output file<br>
;===================================================================<br>
&nbsp;&nbsp;&nbsp; dimNames = (/&quot;time&quot;, &quot;level&quot;, &quot;latitude&quot;, &quot;longitude&quot;/) &nbsp;<br>
&nbsp;&nbsp;&nbsp; dimSizes = (/ ntimes_out,nlev_out,jlat,ilon/)<br>
&nbsp;&nbsp;&nbsp; dimUnlim = (/ False, False, False, False/)&nbsp; &nbsp;<br>
&nbsp;&nbsp;&nbsp; filedimdef(ncdf_out,dimNames,dimSizes,dimUnlim)<br>
<br>
;===================================================================<br>
; predefine the the dimensionality of the variables to be written out<br>
;===================================================================<br>
&nbsp;&nbsp;&nbsp; filevardef(ncdf_out, &quot;u&quot;&nbsp; ,typeof(U),dimNames)<br>
&nbsp;&nbsp;&nbsp; filevardef(ncdf_out, &quot;v&quot;&nbsp; ,typeof(V),dimNames)<br>
&nbsp;&nbsp;&nbsp; filevardef(ncdf_out, &quot;t&quot;&nbsp; ,typeof(T),dimNames)<br>
<br>
&nbsp;&nbsp;&nbsp; uNew = new ( (/ntimes_out,nlev_out,jlat,ilon/), typeof(U) ) <br>
&nbsp;&nbsp;&nbsp; vNew = new ( (/ntimes_out,nlev_out,jlat,ilon/), typeof(V) ) <br>
&nbsp;&nbsp;&nbsp; tNew = new ( (/ntimes_out,nlev_out,jlat,ilon/), typeof(T) ) <br>
&nbsp;&nbsp; end if<br>
<br>
&nbsp;&nbsp; uNew(iout,:,:,:) = U(lev0:lev1,:,:)<br>
&nbsp;&nbsp; vNew(iout,:,:,:) = V(lev0:lev1,:,:)<br>
&nbsp;&nbsp; tNew(iout,:,:,:) = T(lev0:lev1,:,:)<br>
&nbsp;&nbsp; iout=iout&#43;1<br>
&nbsp; end do&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;<br>
;==========End time processing loop ================================<br>
end<br>
<br>
&nbsp; print(&quot;write output&quot;)<br>
&nbsp; ncdf_out-&gt;$uname$ = (/uNew/)<br>
&nbsp; print(&quot;u&quot;)<br>
&nbsp; ncdf_out-&gt;$vname$ = (/vNew/)<br>
&nbsp; print(&quot;v&quot;)<br>
&nbsp; ncdf_out-&gt;$tname$ = (/tNew/)<br>
&nbsp; print(&quot;t&quot;)<br>
exit<br>
</p>
<p><br>
</p>
<p><br>
</p>
<p><br>
</p>
</div>
</body>
</html>