From: Carole Dewé-Depelchin <carole.depelchin@xxxxxx>
Subject: [netcdfgroup] NetCDF C++ library: write NetCDF file problem
Date: Wed, 10 Sep 2014 16:45:10 +0200
float * values = (float *) malloc(NT*NZ*NJ*NI*sizeof(float));
for (it...)
for (iz ...)
for (j ...)
for (i...)
values[it*NZ+iz*NJ+j*NI+i] = ....;
var->set_cur(0,0,0,0);
var->put(values, NT, NZ, NJ, NI);
Hello Carole,
I think the index calculation [it*NZ+iz*NJ+j*NI+i] might not do what
you want it to do? Does it work when you use
values[it*NZ*NJ*NI + iz*NJ*NI + j*NI + i] = ...;
instead?
To avoid having to think about that at all, I sometimes use this
trick for heap-allocated multidimensional arrays in c++:
float (*values)[NZ][NJ][NI] = reinterpret_cast<float
(*)[NZ][NJ][NI]>(malloc(NT*NZ*NJ*NI*sizeof(float)));
this will allow you to write
values[it][iz][j][i] = ...;
in your loop
In this case, a netcdf file is generated, but the data are not
saved properly.
Do you know why this happens and how can I solve the problem?
Thanks,
Carole
--
Dr. Thomas Danckaert
Belgian Institute for Space Aeronomy (IASB/BIRA)
Ringlaan 3, 1180 Brussels
Belgium
http://www.aeronomie.be
Tel: +32 (0)2 8909-870 (office)
thomas.danckaert@xxxxxxxxxxxx