NOTICE: This version of the NSF Unidata web site (archive.unidata.ucar.edu) is no longer being updated.
Current content can be found at unidata.ucar.edu.

To learn about what's going on, see About the Archive Site.

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: