Changeset 189 for XMLIO_V2/dev/dev_rv/src/xmlio/output/onetcdf4.cpp
- Timestamp:
- 05/06/11 10:15:47 (13 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
XMLIO_V2/dev/dev_rv/src/xmlio/output/onetcdf4.cpp
r183 r189 14 14 this->initialize(filename, exist, comm); 15 15 } 16 16 17 //--------------------------------------------------------------- 18 17 19 CONetCDF4::CONetCDF4 18 20 (const StdString & filename, bool exist, const comm::MPIComm * comm, bool) … … 29 31 } 30 32 } 31 33 34 //--------------------------------------------------------------- 35 32 36 CONetCDF4::~CONetCDF4(void) 33 37 { … … 57 61 } 58 62 } 59 63 64 //--------------------------------------------------------------- 65 60 66 void CONetCDF4::definition_start(void) 61 { CheckError(nc_redef(this->ncidp)); } 62 67 { 68 CheckError(nc_redef(this->ncidp)); 69 } 70 71 //--------------------------------------------------------------- 72 63 73 void CONetCDF4::definition_end(void) 64 { CheckError(nc_enddef(this->ncidp)); } 65 74 { 75 CheckError(nc_enddef(this->ncidp)); 76 } 77 78 //--------------------------------------------------------------- 79 66 80 void CONetCDF4::CheckError(int status) 67 81 { … … 75 89 76 90 //--------------------------------------------------------------- 91 77 92 int CONetCDF4::getCurrentGroup(void) 78 93 { 79 94 return (this->getGroup(this->getCurrentPath())); 80 95 } 81 96 97 //--------------------------------------------------------------- 98 82 99 int CONetCDF4::getGroup(const CONetCDF4Path & path) 83 100 { … … 94 111 return (retvalue); 95 112 } 96 113 114 //--------------------------------------------------------------- 115 97 116 int CONetCDF4::getVariable(const StdString & varname) 98 117 { … … 102 121 return (varid); 103 122 } 104 123 124 //--------------------------------------------------------------- 125 105 126 int CONetCDF4::getDimension(const StdString & dimname) 106 127 { … … 110 131 return (dimid); 111 132 } 112 133 134 //--------------------------------------------------------------- 135 113 136 int CONetCDF4::getUnlimitedDimension(void) 114 137 { … … 118 141 return (dimid); 119 142 } 120 143 144 //--------------------------------------------------------------- 145 121 146 std::vector<StdSize> CONetCDF4::getDimensions(const StdString & varname) 122 147 { … … 159 184 return (retvalue); 160 185 } 161 186 187 //--------------------------------------------------------------- 188 162 189 int CONetCDF4::addDimension(const StdString& name, const StdSize size) 163 190 { … … 170 197 return (retvalue); 171 198 } 172 199 200 //--------------------------------------------------------------- 201 173 202 int CONetCDF4::addVariable(const StdString & name, nc_type type, 174 203 const std::vector<StdString> & dim) … … 201 230 //CheckError(nc_put_att_string(grpid, varid, name.c_str(), 1, &str)); 202 231 } 203 232 233 //--------------------------------------------------------------- 234 204 235 template <> 205 236 void CONetCDF4::addAttribute … … 210 241 CheckError(nc_put_att_double(grpid, varid, name.c_str(), NC_DOUBLE,1, &value)); 211 242 } 212 243 244 //--------------------------------------------------------------- 245 213 246 template <> 214 247 void CONetCDF4::addAttribute … … 219 252 CheckError(nc_put_att_float(grpid, varid, name.c_str(), NC_FLOAT, 1, &value)); 220 253 } 221 254 255 //--------------------------------------------------------------- 256 222 257 template <> 223 258 void CONetCDF4::addAttribute … … 278 313 } 279 314 280 template <> 281 void CONetCDF4::writeData(const ARRAY(double, 1) data, const StdString & name, 282 bool collective, StdSize record, 283 const std::vector<StdSize> * start, 284 const std::vector<StdSize> * count) 315 //--------------------------------------------------------------- 316 317 template <> 318 void CONetCDF4::writeData_(int grpid, int varid, 319 const std::vector<StdSize> & sstart, 320 const std::vector<StdSize> & scount, double * data) 321 { 322 CheckError(nc_put_vara_double(grpid, varid, &(sstart[0]), &(scount[0]), data)); 323 } 324 325 //--------------------------------------------------------------- 326 327 template <> 328 void CONetCDF4::writeData_(int grpid, int varid, 329 const std::vector<StdSize> & sstart, 330 const std::vector<StdSize> & scount, int * data) 331 { 332 CheckError(nc_put_vara_int(grpid, varid, &(sstart[0]), &(scount[0]), data)); 333 } 334 335 //--------------------------------------------------------------- 336 337 template <> 338 void CONetCDF4::writeData_(int grpid, int varid, 339 const std::vector<StdSize> & sstart, 340 const std::vector<StdSize> & scount, float * data) 341 { 342 CheckError(nc_put_vara_float(grpid, varid, &(sstart[0]), &(scount[0]), data)); 343 } 344 345 //--------------------------------------------------------------- 346 347 void CONetCDF4::writeData(const ARRAY(int, 2) data, const StdString & name) 285 348 { 286 349 int grpid = this->getCurrentGroup(); … … 289 352 std::vector<StdSize> sstart, scount; 290 353 291 if (this->wmpi && collective)292 CheckError(nc_var_par_access(grpid, varid, NC_COLLECTIVE));293 if (this->wmpi && !collective)294 CheckError(nc_var_par_access(grpid, varid, NC_INDEPENDENT));295 296 this->getWriteDataInfos297 (name, record, array_size, sstart, scount, start, count);298 CheckError(nc_put_vara_double(grpid, varid, &(sstart[0]), &(scount[0]), data->data()));299 }300 301 template <>302 void CONetCDF4::writeData(const ARRAY(int, 1) data, const StdString & name,303 bool collective, StdSize record,304 const std::vector<StdSize> * start,305 const std::vector<StdSize> * count)306 {307 int grpid = this->getCurrentGroup();308 int varid = this->getVariable(name);309 StdSize array_size = 1;310 std::vector<StdSize> sstart, scount;311 312 if (this->wmpi && collective)313 CheckError(nc_var_par_access(grpid, varid, NC_COLLECTIVE));314 if (this->wmpi && !collective)315 CheckError(nc_var_par_access(grpid, varid, NC_INDEPENDENT));316 317 this->getWriteDataInfos318 (name, record, array_size, sstart, scount, start, count);319 CheckError(nc_put_vara_int(grpid, varid, &(sstart[0]), &(scount[0]), data->data()));320 }321 322 template <>323 void CONetCDF4::writeData(const ARRAY(float, 1) data, const StdString & name,324 bool collective, StdSize record,325 const std::vector<StdSize> * start,326 const std::vector<StdSize> * count)327 {328 int grpid = this->getCurrentGroup();329 int varid = this->getVariable(name);330 StdSize array_size = 1;331 std::vector<StdSize> sstart, scount;332 333 if (this->wmpi && collective)334 CheckError(nc_var_par_access(grpid, varid, NC_COLLECTIVE));335 if (this->wmpi && !collective)336 CheckError(nc_var_par_access(grpid, varid, NC_INDEPENDENT));337 338 this->getWriteDataInfos339 (name, record, array_size, sstart, scount, start, count);340 CheckError(nc_put_vara_float(grpid, varid, &(sstart[0]), &(scount[0]), data->data()));341 }342 343 void CONetCDF4::writeData(const ARRAY(int, 2) data, const StdString & name)344 {345 int grpid = this->getCurrentGroup();346 int varid = this->getVariable(name);347 StdSize array_size = 1;348 std::vector<StdSize> sstart, scount;349 350 354 this->getWriteDataInfos(name, 0, array_size, sstart, scount, NULL, NULL); 351 CheckError(nc_put_vara_int(grpid, varid, &(sstart[0]), &(scount[0]), data->data()));355 this->writeData_(grpid, varid, sstart, scount, data->data()); 352 356 } 353 357
Note: See TracChangeset
for help on using the changeset viewer.