- Timestamp:
- 05/06/11 10:15:47 (13 years ago)
- Location:
- XMLIO_V2/dev/dev_rv/src/xmlio
- Files:
-
- 10 edited
Legend:
- Unmodified
- Added
- Removed
-
XMLIO_V2/dev/dev_rv/src/xmlio/calendar.hpp
r188 r189 57 57 58 58 /// Accesseurs /// 59 60 59 const CDuration & getTimeStep(void) const; 61 62 60 const CDate & getInitDate(void) const; 63 61 CDate & getCurrentDate(void); -
XMLIO_V2/dev/dev_rv/src/xmlio/data_output.cpp
r152 r189 11 11 CDataOutput::~CDataOutput(void) 12 12 { /* Ne rien faire de plus */ } 13 14 //---------------------------------------------------------------- 13 15 14 16 void CDataOutput::writeGrid … … 32 34 } 33 35 36 //---------------------------------------------------------------- 37 34 38 void CDataOutput::writeFile 35 39 (const boost::shared_ptr<tree::CFile> file) … … 37 41 this->writeFile_(file); 38 42 } 43 44 //---------------------------------------------------------------- 39 45 40 46 void CDataOutput::writeGrid … … 46 52 } 47 53 54 //---------------------------------------------------------------- 55 48 56 void CDataOutput::writeGrid 49 57 (const boost::shared_ptr<tree::CDomain> domain) … … 51 59 this->writeDomain_(domain); 52 60 } 61 62 //---------------------------------------------------------------- 53 63 54 64 void CDataOutput::writeField … … 58 68 } 59 69 70 //---------------------------------------------------------------- 71 60 72 void CDataOutput::writeFieldGrid 61 73 (const boost::shared_ptr<tree::CField> field) … … 63 75 this->writeGrid(field->getRelGrid()); 64 76 } 77 78 //---------------------------------------------------------------- 79 80 void CDataOutput::writeFieldData(const boost::shared_ptr<tree::CField> field) 81 { 82 boost::shared_ptr<CGrid> grid = 83 CObjectFactory::GetObject<CGrid>(field->grid_ref.getValue()); 84 boost::shared_ptr<CDomain> domain = 85 CObjectFactory::GetObject<CDomain>(grid->domain_ref.getValue()); 86 87 if (domain->isEmpty()) return; 88 this->writeFieldData_(field); 89 } 90 91 ///---------------------------------------------------------------- 65 92 66 93 } // namespace io -
XMLIO_V2/dev/dev_rv/src/xmlio/data_output.hpp
r157 r189 42 42 void writeGrid(const boost::shared_ptr<tree::CDomain> domain); 43 43 44 virtual void writeFile_ (const boost::shared_ptr<tree::CFile> file) = 0; 45 virtual void writeField_ (const boost::shared_ptr<tree::CField> field) = 0; 46 virtual void writeDomain_(const boost::shared_ptr<tree::CDomain> domain) = 0; 47 virtual void writeAxis_ (const boost::shared_ptr<tree::CAxis> axis) = 0; 44 virtual void writeFile_ (const boost::shared_ptr<tree::CFile> file) = 0; 45 virtual void writeField_ (const boost::shared_ptr<tree::CField> field) = 0; 46 virtual void writeFieldData_ (const boost::shared_ptr<tree::CField> field) = 0; 47 virtual void writeDomain_ (const boost::shared_ptr<tree::CDomain> domain) = 0; 48 virtual void writeAxis_ (const boost::shared_ptr<tree::CAxis> axis) = 0; 48 49 49 50 /// Propriétés protégées /// -
XMLIO_V2/dev/dev_rv/src/xmlio/iface/interface.cpp.in
r188 r189 50 50 { D360 = 0 , ALLLEAP, NOLEAP, JULIAN, GREGORIAN } XCalendarType ; 51 51 52 //------------------------------------------------------------------- 53 52 54 #define DECLARE_ATTRIBUTE(type, name) \ 53 55 DECLARE_INTERFACE(axis, type, name) … … 78 80 DECLARE_INTERFACE(grid, type, name) 79 81 #include "../config/grid_attribute.conf" 82 83 //------------------------------------------------------------------- 80 84 81 85 #define CASE_ELEM(elem_enum, elem_class) \ … … 89 93 return; ;;};; 90 94 95 //------------------------------------------------------------------- 91 96 92 97 void xios_handle_create (XPtr * const _ret, XDType _dtype, const XString _id, XSize _id_len) … … 113 118 #undef CASE_ELEM 114 119 120 //------------------------------------------------------------------- 121 115 122 void xios_xml_parse_file (const XString _filename, XSize _filename_len) 116 123 { … … 131 138 } 132 139 140 //------------------------------------------------------------------- 141 133 142 void xios_xml_parse_string(const XString _xmlcontent, XSize _xmlcontent_len) 134 143 { … … 149 158 } 150 159 160 //------------------------------------------------------------------- 161 151 162 void xios_context_set_current (XPtr const _ctx, bool _wswap) 152 163 { … … 154 165 CTreeManager::SetCurrentContextId(context->getId()); 155 166 } 167 168 //------------------------------------------------------------------- 156 169 157 170 void xios_context_create (XPtr * _ctxt, const XString _ctxt_id, … … 198 211 } 199 212 } 213 214 //------------------------------------------------------------------- 200 215 201 216 #define CASE_ELEM0(elem_enum, elem_class, group_enum, group_class) \ … … 225 240 } 226 241 227 242 //------------------------------------------------------------------- 228 243 229 244 void xios_xml_tree_add(const XPtr _parent, XDType _parent_type, XPtr * _child, … … 264 279 #undef CASE_ELEM0 265 280 281 //------------------------------------------------------------------- 282 266 283 void xios_xml_tree_show(const XString _filename, XSize _filename_len) 267 284 { … … 272 289 CTreeManager::PrintTreeToStream(std::clog); 273 290 } 291 292 //------------------------------------------------------------------- 274 293 275 294 void xios_dtreatment_start(XPtr const _context, XFileType filetype, MPIComm comm_client_server) … … 321 340 } 322 341 342 //------------------------------------------------------------------- 343 323 344 void xios_dtreatment_end(void) 324 345 { 325 346 326 347 } 348 349 //------------------------------------------------------------------- 327 350 328 351 void xios_write_data(const XString _field_id, XSize _field_id_len, double * data_k8, … … 332 355 } 333 356 357 //------------------------------------------------------------------- 358 334 359 void xios_update_calendar(int step) 335 360 { 336 361 337 362 } 363 364 //------------------------------------------------------------------- 338 365 339 366 void xios_set_timestep(double ts_year, double ts_month, double ts_day, … … 344 371 } 345 372 346 347 373 //------------------------------------------------------------------- 348 374 349 375 #ifdef __cplusplus -
XMLIO_V2/dev/dev_rv/src/xmlio/node/field.cpp
r188 r189 128 128 { 129 129 return (!this->field_ref.isEmpty()); 130 } 131 132 //---------------------------------------------------------------- 133 134 ARRAY(double, 1) CField::getData(void) const 135 { 136 return(this->data); 130 137 } 131 138 -
XMLIO_V2/dev/dev_rv/src/xmlio/node/file.cpp
r188 r189 92 92 93 93 void CFile::setVirtualFieldGroup(boost::shared_ptr<CFieldGroup> newVFieldGroup) 94 { this->vFieldGroup = newVFieldGroup; } 94 { 95 this->vFieldGroup = newVFieldGroup; 96 } 95 97 96 98 //---------------------------------------------------------------- -
XMLIO_V2/dev/dev_rv/src/xmlio/output/nc4_data_output.cpp
r187 r189 336 336 return (StdString(buffer)); 337 337 } 338 339 //--------------------------------------------------------------- 340 341 void CNc4DataOutput::writeFieldData_ (const boost::shared_ptr<tree::CField> field) 342 { 343 boost::shared_ptr<CGrid> grid = 344 CObjectFactory::GetObject<CGrid>(field->grid_ref.getValue()); 345 StdString fieldid = (!field->name.isEmpty()) 346 ? field->name.getValue() 347 : field->getBaseFieldReference()->getId(); 348 ARRAY(double, 1) field_data = field->getData(); 349 350 if (grid->hasAxis()) // 3D 351 { 352 ARRAY(double, 3) field_data3D; 353 grid->outputField(field_data, field_data3D); 354 SuperClassWriter::writeData(field_data3D, fieldid, true, 0); 355 356 } 357 else // 2D 358 { 359 ARRAY(double, 3) field_data2D; 360 grid->outputField(field_data, field_data2D); 361 SuperClassWriter::writeData(field_data2D, fieldid, true, 0); 362 } 363 } 338 364 339 365 //--------------------------------------------------------------- … … 352 378 } 353 379 380 //--------------------------------------------------------------- 381 354 382 void CNc4DataOutput::writeLocalAttributes 355 383 (int ibegin, int iend, int jbegin, int jend, StdString domid) … … 360 388 SuperClassWriter::addAttribute(StdString("jend_" ).append(domid), jend); 361 389 } 390 391 //--------------------------------------------------------------- 362 392 363 393 void CNc4DataOutput:: writeFileAttributes(const StdString & name, … … 373 403 SuperClassWriter::addAttribute("timeStamp" , timeStamp); 374 404 } 405 406 //--------------------------------------------------------------- 375 407 376 408 void CNc4DataOutput::writeMaskAttributes(const StdString & mask_name, -
XMLIO_V2/dev/dev_rv/src/xmlio/output/nc4_data_output.hpp
r188 r189 43 43 44 44 /// Ecriture /// 45 virtual void writeDomain_(const boost::shared_ptr<tree::CDomain> domain); 46 virtual void writeAxis_ (const boost::shared_ptr<tree::CAxis> axis); 47 virtual void writeField_ (const boost::shared_ptr<tree::CField> field); 48 virtual void writeFile_ (const boost::shared_ptr<tree::CFile> file); 45 virtual void writeDomain_ (const boost::shared_ptr<tree::CDomain> domain); 46 virtual void writeAxis_ (const boost::shared_ptr<tree::CAxis> axis); 47 virtual void writeField_ (const boost::shared_ptr<tree::CField> field); 48 virtual void writeFieldData_ (const boost::shared_ptr<tree::CField> field); 49 virtual void writeFile_ (const boost::shared_ptr<tree::CFile> file); 49 50 50 51 -
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 -
XMLIO_V2/dev/dev_rv/src/xmlio/output/onetcdf4.hpp
r185 r189 49 49 int addDimension(const StdString& name, const StdSize size = UNLIMITED_DIM); 50 50 int addVariable(const StdString & name, nc_type type, 51 const std::vector<StdString> & dim); 51 const std::vector<StdString> & dim); 52 53 //---------------------------------------------------------------- 54 public : 55 52 56 template <class T> 53 57 void addAttribute … … 55 59 56 60 /// Ecriture des données /// 57 template <class T >58 void writeData(const ARRAY(T, 1) data, const StdString & name,61 template <class T, StdSize ndim> 62 void writeData(const ARRAY(T, ndim) data, const StdString & name, 59 63 bool collective, StdSize record, 60 64 const std::vector<StdSize> * start = NULL, … … 68 72 /// Destructeur /// 69 73 virtual ~CONetCDF4(void); 70 74 75 //---------------------------------------------------------------- 76 71 77 protected : 72 78 … … 83 89 std::vector<StdSize> getDimensions(const StdString & varname); 84 90 int getUnlimitedDimension(void); 85 91 92 //---------------------------------------------------------------- 93 86 94 private : 95 96 template <class T> 97 void writeData_(int grpid, int varid, 98 const std::vector<StdSize> & sstart, 99 const std::vector<StdSize> & scount, T * data); 87 100 88 101 void getWriteDataInfos(const StdString & name, StdSize record, StdSize & array_size, … … 102 115 }; // class CONetCDF4 103 116 117 ///--------------------------------------------------------------- 118 119 template <class T, StdSize ndim> 120 void CONetCDF4::writeData(const ARRAY(T, ndim) data, const StdString & name, 121 bool collective, StdSize record, 122 const std::vector<StdSize> * start, 123 const std::vector<StdSize> * count) 124 { 125 int grpid = this->getCurrentGroup(); 126 int varid = this->getVariable(name); 127 StdSize array_size = 1; 128 std::vector<StdSize> sstart, scount; 129 130 if (this->wmpi && collective) 131 CheckError(nc_var_par_access(grpid, varid, NC_COLLECTIVE)); 132 if (this->wmpi && !collective) 133 CheckError(nc_var_par_access(grpid, varid, NC_INDEPENDENT)); 134 135 this->getWriteDataInfos 136 (name, record, array_size, sstart, scount, start, count); 137 this->writeData_(grpid, varid, sstart, scount, data->data()); 138 } 139 140 ///--------------------------------------------------------------- 141 104 142 } // namespace io 105 143 } // namespace xmlioserver
Note: See TracChangeset
for help on using the changeset viewer.