<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,<br>
<br>
I am having a bit of trouble reading a variable from a large&nbsp; NetCDF4 file <br>
that I have created using an NCL example as a guide. I have a <br>
4D variable sAvg(time,lev,lat,lon) which was calc by the program. I dimensioned <br>
the output file to have time=unlimited.&nbsp; Then I defined a output var <br>
u(1,lev,lat,lon).&nbsp; I then write out a 3D var to output for each time.<br>
<br>
The&nbsp; output file has dimensions as follows:<br>
<br>
dimensions:<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; time = UNLIMITED ; // (366 currently)<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; lev = 29 ;<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; lat = 256 ;<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; lon = 512 ;<br>
variables:<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; float v(time, lev, lat, lon) ;<br>
<br>
Here is a snippet of the program that created the file:<br>
==============================================================================<br>
...<br>
&nbsp; setfileoption(&quot;nc&quot;,&quot;Format&quot;,&quot;NetCDF4&quot;)<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>
<br>
;&nbsp;&nbsp; date&nbsp; processing loop&nbsp; (tim,lat,lon)<br>
&nbsp; iout=0<br>
&nbsp; sname = 'v' <br>
&nbsp;do i = tim0,tim1,tim_inc<br>
&nbsp;&nbsp; print (i&#43;&quot; &quot;&#43;TIME(i))<br>
&nbsp;&nbsp; S = sfile_nc-&gt;$sname$(i,lev0:lev1,:,:)&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ; read in 3D dataset for 1time<br>
&nbsp;&nbsp; if (i.eq.tim0.and.ny.eq.0) then<br>
&nbsp;&nbsp;&nbsp; sNew = new ( (/nyears,ntimes_out,nlev_out,jlat,ilon/), typeof(S) ) <br>
&nbsp;&nbsp; end if<br>
&nbsp;&nbsp; sNew(ny,iout,:,:,:)=S(:,:,:)<br>
&nbsp;&nbsp; iout=iout&#43;1<br>
&nbsp; end do&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;<br>
<br>
&nbsp; ntimes_out1 = 1<br>
&nbsp; sAvg = new ( (/ntimes_out,nlev_out,jlat,ilon/), typeof(S) ) <br>
&nbsp; u = new ( (/ntimes_out1,nlev_out,jlat,ilon/), typeof(S) ) <br>
&nbsp; stmp = new ( (/nlev_out,jlat,ilon/), typeof(S) ) <br>
&nbsp; sAvg = dim_avg_n(sNew,0)&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ;avgs over all years(0th dim)<br>
<br>
<br>
&nbsp;&nbsp;&nbsp; dimNames = (/&quot;time&quot;, &quot;lev&quot;, &quot;lat&quot;, &quot;lon&quot;/) &nbsp;<br>
&nbsp;&nbsp;&nbsp; dimSizes = (/ ntimes_out1,nlev_out,jlat,ilon/)<br>
&nbsp;&nbsp;&nbsp; dimUnlim = (/ True, False, False,False/)&nbsp; &nbsp;<br>
&nbsp;&nbsp;&nbsp; filedimdef(ncdf_out,dimNames,dimSizes,dimUnlim)<br>
&nbsp;&nbsp;&nbsp; filevardef(ncdf_out, sname&nbsp; ,typeof(S),dimNames)<br>
&nbsp;&nbsp;&nbsp; filevarattdef(ncdf_out,sname,S)&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ; assign&nbsp; array atts<br>
<br>
&nbsp; print(&quot;Outputting to Netcdf.....&quot;)<br>
; output time based vars one at a time since time=unlimited<br>
&nbsp;&nbsp; do iout = 0,ntimes_out-1<br>
&nbsp;&nbsp;&nbsp; stmp = (/sAvg(iout,:,:,:)/)<br>
&nbsp;&nbsp;&nbsp; ncdf_out-&gt;$sname$(iout,:,:,:) =(/stmp/)<br>
&nbsp;&nbsp; end do<br>
==============================================================================<br>
end snippet<br>
<br>
<br>
Here is a snippet of the program that reads the large NetCDF file<br>
==============================================================================<br>
<br>
begin<br>
&nbsp;&nbsp; filename = &quot;/jm13/djv/CCLIMO&#43;v_1989-1989_512x256.nc&quot;<br>
&nbsp;&nbsp; ufile_nc = addfile(filename,&quot;r&quot;)<br>
&nbsp;&nbsp;&nbsp; vars = getfilevarnames(ufile_nc)<br>
&nbsp;&nbsp;&nbsp; print(vars)&nbsp; &nbsp;<br>
<br>
&nbsp; sys_cmd = &quot;ncdump -h &quot;&#43;filename<br>
&nbsp; system(sys_cmd)<br>
<br>
&nbsp; do i= 160,181<br>
&nbsp; V=ufile_nc-&gt;v(i,6:22,:,:)<br>
&nbsp; print(V(2,10,10))<br>
&nbsp;end do<br>
end<br>
==============================================================================<br>
end snippet</p>
<p><br>
When I try to read from this file I get the following error:<br>
fatal:Subscript out of range, error in subscript #0</p>
<p><br>
The program seems to read in the data OK, despite this fatal error.<br>
If I read in the entire array at once I do not get this error:<br>
ie&nbsp;&nbsp; V=ufile_nc-&gt;v<br>
<br>
Any ideas on why I am getting this seemingly fatal error?</p>
<p>Thanks</p>
<p><br>
</p>
<p>Dave Vollaro<br>
<br>
<br>
</p>
</div>
</body>
</html>