Re: [netcdfgroup] Fw: NcVar put method

Hello Sjur,

I used set_cur(), but there is no effect. and I checked the return value of the 
put method and it was true which means data is written but it is not.

Regards


________________________________
From: Sjur Kolberg <Sjur.A.Kolberg@xxxxxxxxx>
To: salah jubeh <s_jubeh@xxxxxxxxx>; "netcdfgroup@xxxxxxxxxxxxxxxx" 
<netcdfgroup@xxxxxxxxxxxxxxxx>
Sent: Tue, November 9, 2010 8:17:58 PM
Subject: RE: [netcdfgroup] Fw: NcVar put method

 
Salah,
 
I think you might have to use set_cur() before the second call to put(), which 
I 
believe now tries to continue adding values after the ones you already stored 
with the first put(). Set_cur() with empty brackets sets the file pointer back 
to 0. If I’m correct, the second put() will also work if you comment out the 
first...
 
Hope this helps,
 
Sjur K :-)
 
 
From:netcdfgroup-bounces@xxxxxxxxxxxxxxxx 
[mailto:netcdfgroup-bounces@xxxxxxxxxxxxxxxx] On Behalf Of salah jubeh
Sent: 9. november 2010 16:49
To: netcdfgroup@xxxxxxxxxxxxxxxx
Subject: [netcdfgroup] Fw: NcVar put method
 
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
   
 cout << "*** SUCCESS writing example file simple_xy.nc!" << endl;

   return 0;
}


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