Due to the current gap in continued funding from the U.S. National Science Foundation (NSF), the NSF Unidata Program Center has temporarily paused most operations. See NSF Unidata Pause in Most Operations for details.
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
netcdfgroup
archives: