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] Fw: NcVar put method

On 11/09/2010 04:48 PM, salah jubeh wrote:
Sorry for sending this a gain


----- Forwarded Message ----

From: salah jubeh<s_jubeh@xxxxxxxxx>
To: support-netcdf@xxxxxxxxxxxxxxxx
Sent: Mon, November 8, 2010 12:58:41 PM
Subject: NcVar put method


I am trying to use this method signature -NcBool put(const ....*   vals, const
long* counts)-; but I have a problem  , can some one please tell me what is my
mistake .

Why - data->put(&dataOut[0],*dim);-  is not working. Please see the code.


#include<iostream>
#include<netcdfcpp.h>

using namespace std;

// We are writing 2D data, a 6 x 12 grid.
static const int NDIMS = 2;
static const int NX = 6;
static const int NY = 12;

// Return this in event of a problem.
static const int NC_ERR = 2;

int main(void)
{
    // Different ways to write arrays

    int  dataOut[NX * NY];
    int dataOut2[NX] [NY];

    // Create some pretend data. Note that dataOut and dataOut2 are
identical...!!!
    for(int i = 0; i<  NX; i++)
       for(int j = 0; j<  NY; j++){
      dataOut[i * NY +j] = (i+1) * (j+1);
      dataOut2[i][j] = (i+1) * (j+1);
     }


    // Create the file.
    NcFile dataFile("simple_xy.nc", NcFile::Replace);

    if (!dataFile.is_valid())
    {
       cout<<  "Couldn't open file!\n";
       return NC_ERR;
    }

    NcDim* xDim = dataFile.add_dim("x", NX);
    NcDim* yDim = dataFile.add_dim("y", NY);


   const NcDim* all[2] ;
    all[0]  = xDim;
    all[1] = yDim;

    int *dim;
    dim = new int[2];
    dim[0] = 6;
    dim[1] = 12;

    NcVar *data = dataFile.add_var("data", ncInt, 2, all);
    NcVar *data2 = dataFile.add_var("data2", ncInt, 2, all);

    // This works fine and data and data2 are identical
    // data->put(&dataOut[0],NX, NY);
    data2->put(&dataOut2[0][0], NX, NY);

   // try to use another signature

    data->put(&dataOut[0],*dim); //nothing is written

what about:

long dim[2];
dim[0] = 6;
dim[1] = 12;
data->put(&dataOut[0],dim);
(using a long instead of an int and passing "dim" instead of "*dim")

I'm not sure of that, just try.

HTH
Cédric


  cout<<  "*** SUCCESS writing example file simple_xy.nc!"<<  endl;

    return 0;
}






_______________________________________________
netcdfgroup mailing list
netcdfgroup@xxxxxxxxxxxxxxxx
For list information or to unsubscribe,  visit: 
http://www.unidata.ucar.edu/mailing_lists/



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