<div dir="ltr">David,<br><br>The line &quot;setfileoption(&quot;nc&quot;,&quot;Format&quot;,ofile_type(ityp))&quot; must be placed *before* the addfile command.  This is on the documentation page for setfileoption, under the &quot;Format&quot; heading.<br><div><br></div><div>--Dave</div></div><div class="gmail_extra"><br><div class="gmail_quote">On Wed, Feb 25, 2015 at 1:12 PM, Vollaro, David <span dir="ltr">&lt;<a href="mailto:dvollaro@albany.edu" target="_blank">dvollaro@albany.edu</a>&gt;</span> wrote:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">




<div dir="ltr">
<div 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.  When
</p>
<p>I write out fewer times this problem goes away.  I searched for the error and believe that is linked to an</p>
<p>output size issue.  I  tried changing the NetCDF format following <a href="http://www.ncl.ucar.edu/FAQ/#file_io_004" target="_blank">
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)     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)     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)     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.  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;   &quot;NetCDF4&quot;  &quot;LargeFile&quot;  &quot;64BitOffset&quot; and &quot;NetCDF4Classic&quot; to no avail.</p>
<p>Any help would be appreciated!  Thanks</p>
<p><br>
</p>
<p>Dave Vollaro</p>
<p><br>
</p>
<p>----------------------------------------------------------------------------------------------------</p>
<p>                                                       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  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   setfileoption &quot;Format&quot; options:<br>
; ie   &quot;NetCDF3&quot;   &quot;NetCDF4&quot;  &quot;LargeFile&quot;  &quot;64BitOffset&quot; &quot;NetCDF4Classic&quot;<br>
<br>
<br>
  print(&quot;Starting time:&quot;)<br>
  sys_cmd = &quot;date &quot;<br>
  system(sys_cmd)<br>
  sys_cmd = &quot;sleep 1 &quot;<br>
  system(sys_cmd)<br>
  <br>
;***********************************************<br>
; set USER DEF VARS<br>
;***********************************************<br>
  ilon = 512                                  ;num lons of input GG grid <br>
  jlat = 256                                  ;num lats of input GG grid <br>
  odatpth = &quot;/jm13/djv/&quot;<br>
  ofile_type = new((/5/),&quot;string&quot;)<br>
  ofile_type = (/&quot;NetCDF3&quot;,&quot;NetCDF4&quot;,&quot;LargeFile&quot;,&quot;64BitOffset&quot;,&quot;NetCDF4Classic&quot;/)<br>
  print(ofile_type)<br>
  ntimes_out=30<br>
  year = 1979<br>
;***********************************************<br>
;        LEVEL EXTRACT RANGE <br>
;***********************************************<br>
  parm = True<br>
  parm@blev = 1000        ;bottommost plev to extract both=999 extract all levs<br>
  parm@tlev = 50          ;topmost plev to extract    both=999 extract all levs<br>
<br>
<br>
;***********************************************<br>
;  DATA SOURCE<br>
;***********************************************<br>
  url = &quot;<a href="http://ramadda.atmos.albany.edu:8080/repository/opendap/Top/" target="_blank">http://ramadda.atmos.albany.edu:8080/repository/opendap/Top/</a>&quot;<br>
  filename_u = url+ &quot;UAlbany+Repository/ERA-Interim/&quot;+year+&quot;/u.&quot;+year+&quot;.nc/entry.das&quot;<br>
  filename_v = url+ &quot;UAlbany+Repository/ERA-Interim/&quot;+year+&quot;/v.&quot;+year+&quot;.nc/entry.das&quot;<br>
  filename_t = url+ &quot;UAlbany+Repository/ERA-Interim/&quot;+year+&quot;/t.&quot;+year+&quot;.nc/entry.das&quot;<br>
  exists = isfilepresent(filename_t)<br>
  if(.not.exists) then <br>
    print(&quot;OPeNDAP isfilepresent test unsuccessful.&quot;)<br>
    print(&quot;File doesn&#39;t exist or NCL doesn&#39;t have OPeNDAP ability on this system&quot;)<br>
  else<br>
    print(&quot;OPeNDAP isfilepresent test successful.&quot;)<br>
    ufile_nc = addfile(filename_u,&quot;r&quot;)<br>
    vfile_nc = addfile(filename_v,&quot;r&quot;)<br>
    tfile_nc = addfile(filename_t,&quot;r&quot;)<br>
    vars = getfilevarnames(ufile_nc)<br>
    print(vars)   <br>
  end if<br>
<br>
  sys_cmd = &quot;ncdump -h &quot;+filename_u<br>
  system(sys_cmd)<br>
<br>
  namesu = getfilevarnames(ufile_nc)          ;Get the variable names in the<br>
  namesv = getfilevarnames(vfile_nc)          ;Get the variable names in the<br>
  namest = getfilevarnames(tfile_nc)          ;Get the variable names in the<br>
  print(namesu)                               ;GRIB file and print them out.<br>
  print(namesv)                               ;GRIB file and print them out.<br>
  print(namest)                               ;GRIB file and print them out.<br>
<br>
;***********************************************<br>
; level range selection processing section<br>
;***********************************************<br>
  levname = str_match(namesu,&quot;lev&quot;)            ;finds lev array name (top2bot)<br>
  levdims = getfilevardimsizes (vfile_nc,levname) ;<br>
<br>
  LEV = ufile_nc-&gt;$levname$                    ;read in level data<br>
  if (parm@blev.eq. 999.and.parm@tlev.eq. 999) then<br>
   lev0=0<br>
   lev1=levdims-1<br>
  else<br>
   lev0 = ind_nearest_coord(parm@blev,LEV,0)<br>
   lev1 = ind_nearest_coord(parm@tlev,LEV,0)<br>
  end if<br>
  nlev_out = lev1 - lev0 + 1<br>
  print (parm@blev+&quot; &quot;+lev0+&quot; &quot;+parm@tlev+&quot; &quot;+lev1+&quot; nlevout=&quot;+nlev_out)<br>
  print (LEV(lev0:lev1))<br>
<br>
<br>
;***********************************************<br>
;  check for existing output files and remove<br>
;***********************************************<br>
  ncout = odatpth+&quot;XUVTest.nc&quot;<br>
  rmcmd = &quot;&#39;rm&#39; &quot; + ncout<br>
  system (rmcmd)                              ;remove any pre-exist ncout fil<br>
  ncdf_out = addfile(ncout ,&quot;c&quot;)              ;create output NC file<br>
  setfileoption(ncdf_out,&quot;DefineMode&quot;,True)<br>
  setfileoption(&quot;nc&quot;,&quot;Format&quot;,ofile_type(ityp))<br>
  print(&quot;NCOUT &quot;+ofile_type(ityp))<br>
<br>
;===================================================================<br>
; create global attributes of the file<br>
;===================================================================<br>
 fAtt               = True            ; assign file attributes<br>
 fAtt@title         = &quot;NCL Efficient Approach to netCDF Creation&quot;  <br>
 fAtt@source_file   =  &quot;<a href="http://original-file.nc" target="_blank">original-file.nc</a>&quot;<br>
 fAtt@Conventions   = &quot;None&quot;   <br>
 fAtt@creation_date = systemfunc (&quot;date&quot;)        <br>
 fileattdef( ncdf_out, fAtt )            ; copy file attributes  <br>
<br>
  <br>
<br>
 iout=0<br>
;******************************************************************************<br>
;   data  processing loop  (U/V/T(tim,lev,lat,lon)<br>
;******************************************************************************<br>
  do i = 0,ntimes_out-1<br>
   print (i+&quot; &quot;)<br>
   vname = str_match(namesv,&quot;v&quot;)            ;finds lev array name (top2bot)<br>
   V = vfile_nc-&gt;v(i,lev0:lev1,:,:)       ; read in 3D dataset for 1time<br>
<br>
   uname = str_match(namesu,&quot;u&quot;)            ;finds lev array name (top2bot)<br>
   U = ufile_nc-&gt;u(i,lev0:lev1,:,:)       ; read in 3D dataset for 1time<br>
<br>
   tname = str_match(namest,&quot;t&quot;)            ;finds lev array name (top2bot)<br>
   T = tfile_nc-&gt;t(i,lev0:lev1,:,:)       ; read in 3D dataset for 1time<br>
<br>
<br>
   if (i .eq.  0 ) then<br>
;===================================================================<br>
; define dimension characteristics of NETCDF output file<br>
;===================================================================<br>
    dimNames = (/&quot;time&quot;, &quot;level&quot;, &quot;latitude&quot;, &quot;longitude&quot;/)  <br>
    dimSizes = (/ ntimes_out,nlev_out,jlat,ilon/)<br>
    dimUnlim = (/ False, False, False, False/)   <br>
    filedimdef(ncdf_out,dimNames,dimSizes,dimUnlim)<br>
<br>
;===================================================================<br>
; predefine the the dimensionality of the variables to be written out<br>
;===================================================================<br>
    filevardef(ncdf_out, &quot;u&quot;  ,typeof(U),dimNames)<br>
    filevardef(ncdf_out, &quot;v&quot;  ,typeof(V),dimNames)<br>
    filevardef(ncdf_out, &quot;t&quot;  ,typeof(T),dimNames)<br>
<br>
    uNew = new ( (/ntimes_out,nlev_out,jlat,ilon/), typeof(U) ) <br>
    vNew = new ( (/ntimes_out,nlev_out,jlat,ilon/), typeof(V) ) <br>
    tNew = new ( (/ntimes_out,nlev_out,jlat,ilon/), typeof(T) ) <br>
   end if<br>
<br>
   uNew(iout,:,:,:) = U(lev0:lev1,:,:)<br>
   vNew(iout,:,:,:) = V(lev0:lev1,:,:)<br>
   tNew(iout,:,:,:) = T(lev0:lev1,:,:)<br>
   iout=iout+1<br>
  end do            <br>
;==========End time processing loop ================================<br>
end<br>
<br>
  print(&quot;write output&quot;)<br>
  ncdf_out-&gt;$uname$ = (/uNew/)<br>
  print(&quot;u&quot;)<br>
  ncdf_out-&gt;$vname$ = (/vNew/)<br>
  print(&quot;v&quot;)<br>
  ncdf_out-&gt;$tname$ = (/tNew/)<br>
  print(&quot;t&quot;)<br>
exit<br>
</p>
<p><br>
</p>
<p><br>
</p>
<p><br>
</p>
</div>
</div>

<br>_______________________________________________<br>
ncl-talk mailing list<br>
List instructions, subscriber options, unsubscribe:<br>
<a href="http://mailman.ucar.edu/mailman/listinfo/ncl-talk" target="_blank">http://mailman.ucar.edu/mailman/listinfo/ncl-talk</a><br>
<br></blockquote></div><br></div>