[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
951219: appending data
- Subject: 951219: appending data
- Date: Tue, 19 Dec 95 10:57:02 -0700
Maureen,
> To: address@hidden
> From: Maureen Cribb <address@hidden>
> Organization: Dalhousie University
> Keywords: 199512191601.AA23714
In the above message you wrote:
> Enclosed are a couple of sample programs and small data sets that
> illustrate the problem I'm having in appending data.
>
> The program "first.f" creates a netcdf file containing the variable
> "a1" (with an unlimited dimension), reads in data from "first.dat"
> (ten elements) and writes this data to the netcdf file. This part
> works fine.
>
> Now an additional five elements (from "second.dat") are to appended
> to the variable in this netcdf file. The program "second.f" opens
> the newly created netcdf file, gets the id number for the "a1"
> variable, reads in data from "second.dat" and writes it to the netcdf
> file. This data is, indeed, appended but extra data also appears to be
> appended.
>
> I expected fifteen elements to appear for "a1" in the netcdf file but
> twenty-five elements actually appear. Could you shed some light on this
> situation?
>
> Thanks in advance for your help ...
>
> M.Cribb
>
> - ----------
> X-Sun-Data-Type: default
> X-Sun-Data-Name: first.f
> X-Sun-Content-Lines: 35
>
> program first
>
> include '/opt/netcdf/include/netcdf.inc'
>
> integer ncid,rcode,rec_dim,a1_id
> real a1(10)
>
> c open data file
> open(1000, file='first.dat', status='old')
>
> c create netcdf file
> ncid=nccre('try.nc',ncnoclob,rcode)
I'd change the `ncnoclob' to `ncclob' in the above line to prevent reuse
of a previously existing netCDF dataset.
>
> c define dimension and variable
> rec_dim=ncddef(ncid,'index',ncunlim,rcode)
>
> a1_id=ncvdef(ncid,'a1',ncfloat,1,rec_dim,rcode)
>
> c leave define mode
> call ncendf(ncid,rcode)
>
> c read in data and put into netcdf file
>
> do i=1,10
>
> read(1000,'(f5.2)') a1(i)
>
> end do
>
> call ncvpt(ncid,a1_id,1,10,a1,rcode)
>
> c close netcdf file
> call ncclos(ncid,rcode)
>
> end
> - ----------
> X-Sun-Data-Type: default
> X-Sun-Data-Name: second.f
> X-Sun-Content-Lines: 32
>
> program second
>
> include '/opt/netcdf/include/netcdf.inc'
>
> integer ncid,rcode,a1_id
> real a1(5)
>
> c open data file
> open(1000, file='second.dat', status='old')
>
> c open old netcdf file
> ncid=ncopn('try.nc',ncwrite,rcode)
>
> c get variable id
> a1_id=ncvid(ncid,'a1',rcode)
>
> c read in data and append to netcdf file
>
> do i=1,5
>
> read(1000,'(f5.2)') a1(i)
>
> end do
>
>
> call ncvpt(ncid,a1_id,11,15,a1,rcode)
The fourth argument above should be `5' rather than `15'. The COUNTS
argument indicates how much data the `a1' variable contains. In this
case, you're adding 5 additional values -- not 15.
>
>
> c close netcdf file
> call ncclos(ncid,rcode)
>
> end
Please let me know if this helps.
--------
Steve Emmerson <address@hidden>