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

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: