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.

Re: [netcdfgroup] NetCDF C++ library: write NetCDF file problem

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



  • 2014 messages navigation, sorted by:
    1. Thread
    2. Subject
    3. Author
    4. Date
    5. ↑ Table Of Contents
  • Search the netcdfgroup archives: