Changeset 189


Ignore:
Timestamp:
05/06/11 10:15:47 (10 years ago)
Author:
hozdoba
Message:
 
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  
    5757 
    5858            /// Accesseurs /// 
    59  
    6059            const CDuration & getTimeStep(void) const; 
    61  
    6260            const CDate & getInitDate(void) const; 
    6361            CDate & getCurrentDate(void); 
  • XMLIO_V2/dev/dev_rv/src/xmlio/data_output.cpp

    r152 r189  
    1111      CDataOutput::~CDataOutput(void) 
    1212      { /* Ne rien faire de plus */ } 
     13 
     14      //---------------------------------------------------------------- 
    1315 
    1416      void CDataOutput::writeGrid 
     
    3234      } 
    3335 
     36      //---------------------------------------------------------------- 
     37 
    3438      void CDataOutput::writeFile 
    3539         (const boost::shared_ptr<tree::CFile>  file) 
     
    3741         this->writeFile_(file); 
    3842      } 
     43 
     44      //---------------------------------------------------------------- 
    3945 
    4046      void CDataOutput::writeGrid 
     
    4652      } 
    4753 
     54      //---------------------------------------------------------------- 
     55 
    4856      void CDataOutput::writeGrid 
    4957         (const boost::shared_ptr<tree::CDomain> domain) 
     
    5159         this->writeDomain_(domain); 
    5260      } 
     61 
     62      //---------------------------------------------------------------- 
    5363 
    5464      void CDataOutput::writeField 
     
    5868      } 
    5969 
     70      //---------------------------------------------------------------- 
     71 
    6072      void CDataOutput::writeFieldGrid 
    6173         (const boost::shared_ptr<tree::CField> field) 
     
    6375         this->writeGrid(field->getRelGrid()); 
    6476      } 
     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      ///---------------------------------------------------------------- 
    6592 
    6693   } // namespace io 
  • XMLIO_V2/dev/dev_rv/src/xmlio/data_output.hpp

    r157 r189  
    4242            void writeGrid(const boost::shared_ptr<tree::CDomain> domain); 
    4343 
    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; 
    4849 
    4950            /// Propriétés protégées /// 
  • XMLIO_V2/dev/dev_rv/src/xmlio/iface/interface.cpp.in

    r188 r189  
    5050{ D360 = 0 , ALLLEAP, NOLEAP, JULIAN, GREGORIAN } XCalendarType ; 
    5151 
     52//------------------------------------------------------------------- 
     53 
    5254#define DECLARE_ATTRIBUTE(type, name) \ 
    5355        DECLARE_INTERFACE(axis, type, name) 
     
    7880        DECLARE_INTERFACE(grid, type, name) 
    7981#include "../config/grid_attribute.conf" 
     82 
     83//------------------------------------------------------------------- 
    8084 
    8185#define CASE_ELEM(elem_enum, elem_class)                                         \ 
     
    8993      return; ;;};; 
    9094 
     95//------------------------------------------------------------------- 
    9196 
    9297void xios_handle_create (XPtr * const _ret, XDType _dtype, const XString _id, XSize _id_len) 
     
    113118#undef CASE_ELEM 
    114119 
     120//------------------------------------------------------------------- 
     121 
    115122void xios_xml_parse_file  (const XString _filename, XSize _filename_len) 
    116123{ 
     
    131138} 
    132139 
     140//------------------------------------------------------------------- 
     141 
    133142void xios_xml_parse_string(const XString _xmlcontent, XSize _xmlcontent_len) 
    134143{ 
     
    149158} 
    150159 
     160//------------------------------------------------------------------- 
     161 
    151162void xios_context_set_current (XPtr const _ctx, bool _wswap) 
    152163{ 
     
    154165   CTreeManager::SetCurrentContextId(context->getId()); 
    155166} 
     167 
     168//------------------------------------------------------------------- 
    156169 
    157170void xios_context_create (XPtr * _ctxt, const XString _ctxt_id, 
     
    198211   } 
    199212} 
     213 
     214//------------------------------------------------------------------- 
    200215 
    201216#define CASE_ELEM0(elem_enum, elem_class, group_enum, group_class)                     \ 
     
    225240      } 
    226241 
    227  
     242//------------------------------------------------------------------- 
    228243 
    229244void xios_xml_tree_add(const XPtr _parent, XDType _parent_type, XPtr * _child, 
     
    264279#undef CASE_ELEM0 
    265280 
     281//------------------------------------------------------------------- 
     282 
    266283void xios_xml_tree_show(const XString _filename, XSize _filename_len) 
    267284{ 
     
    272289      CTreeManager::PrintTreeToStream(std::clog); 
    273290} 
     291 
     292//------------------------------------------------------------------- 
    274293 
    275294void xios_dtreatment_start(XPtr const _context, XFileType filetype, MPIComm comm_client_server) 
     
    321340} 
    322341 
     342//------------------------------------------------------------------- 
     343 
    323344void xios_dtreatment_end(void) 
    324345{ 
    325346 
    326347} 
     348 
     349//------------------------------------------------------------------- 
    327350 
    328351void xios_write_data(const XString _field_id, XSize _field_id_len, double * data_k8, 
     
    332355} 
    333356 
     357//------------------------------------------------------------------- 
     358 
    334359void xios_update_calendar(int step) 
    335360{ 
    336361 
    337362} 
     363 
     364//------------------------------------------------------------------- 
    338365 
    339366void xios_set_timestep(double ts_year, double ts_month, double ts_day, 
     
    344371} 
    345372 
    346  
    347  
     373//------------------------------------------------------------------- 
    348374 
    349375#ifdef __cplusplus 
  • XMLIO_V2/dev/dev_rv/src/xmlio/node/field.cpp

    r188 r189  
    128128   {  
    129129      return (!this->field_ref.isEmpty());  
     130   } 
     131    
     132   //---------------------------------------------------------------- 
     133    
     134   ARRAY(double, 1)  CField::getData(void) const 
     135   { 
     136      return(this->data); 
    130137   } 
    131138 
  • XMLIO_V2/dev/dev_rv/src/xmlio/node/file.cpp

    r188 r189  
    9292 
    9393   void CFile::setVirtualFieldGroup(boost::shared_ptr<CFieldGroup> newVFieldGroup) 
    94    { this->vFieldGroup = newVFieldGroup; } 
     94   {  
     95      this->vFieldGroup = newVFieldGroup;  
     96   } 
    9597 
    9698   //---------------------------------------------------------------- 
  • XMLIO_V2/dev/dev_rv/src/xmlio/output/nc4_data_output.cpp

    r187 r189  
    336336         return (StdString(buffer)); 
    337337      } 
     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      } 
    338364 
    339365      //--------------------------------------------------------------- 
     
    352378      } 
    353379 
     380      //--------------------------------------------------------------- 
     381       
    354382      void CNc4DataOutput::writeLocalAttributes 
    355383         (int ibegin, int iend, int jbegin, int jend, StdString domid) 
     
    360388         SuperClassWriter::addAttribute(StdString("jend_"  ).append(domid), jend); 
    361389      } 
     390 
     391      //--------------------------------------------------------------- 
    362392 
    363393      void CNc4DataOutput:: writeFileAttributes(const StdString & name, 
     
    373403         SuperClassWriter::addAttribute("timeStamp"  , timeStamp); 
    374404      } 
     405 
     406      //--------------------------------------------------------------- 
    375407 
    376408      void CNc4DataOutput::writeMaskAttributes(const StdString & mask_name, 
  • XMLIO_V2/dev/dev_rv/src/xmlio/output/nc4_data_output.hpp

    r188 r189  
    4343 
    4444            /// 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); 
    4950 
    5051 
  • XMLIO_V2/dev/dev_rv/src/xmlio/output/onetcdf4.cpp

    r183 r189  
    1414         this->initialize(filename, exist, comm); 
    1515      } 
    16  
     16       
     17      //--------------------------------------------------------------- 
     18       
    1719      CONetCDF4::CONetCDF4 
    1820         (const StdString & filename, bool exist, const comm::MPIComm * comm, bool) 
     
    2931         } 
    3032      } 
    31  
     33       
     34      //--------------------------------------------------------------- 
     35       
    3236      CONetCDF4::~CONetCDF4(void) 
    3337      { 
     
    5761         } 
    5862      } 
    59  
     63       
     64      //--------------------------------------------------------------- 
     65       
    6066      void CONetCDF4::definition_start(void) 
    61       { CheckError(nc_redef(this->ncidp)); } 
    62  
     67      {  
     68         CheckError(nc_redef(this->ncidp)); 
     69      } 
     70       
     71      //--------------------------------------------------------------- 
     72       
    6373      void CONetCDF4::definition_end(void) 
    64       { CheckError(nc_enddef(this->ncidp)); } 
    65  
     74      {  
     75         CheckError(nc_enddef(this->ncidp)); 
     76      } 
     77       
     78      //--------------------------------------------------------------- 
     79       
    6680      void CONetCDF4::CheckError(int status) 
    6781      { 
     
    7589 
    7690      //--------------------------------------------------------------- 
     91       
    7792      int CONetCDF4::getCurrentGroup(void) 
    7893      { 
    7994         return (this->getGroup(this->getCurrentPath())); 
    8095      } 
    81  
     96       
     97      //--------------------------------------------------------------- 
     98       
    8299      int CONetCDF4::getGroup(const CONetCDF4Path & path) 
    83100      { 
     
    94111         return (retvalue); 
    95112      } 
    96  
     113       
     114      //--------------------------------------------------------------- 
     115       
    97116      int CONetCDF4::getVariable(const StdString & varname) 
    98117      { 
     
    102121         return (varid); 
    103122      } 
    104  
     123       
     124      //--------------------------------------------------------------- 
     125       
    105126      int CONetCDF4::getDimension(const StdString & dimname) 
    106127      { 
     
    110131         return (dimid); 
    111132      } 
    112  
     133       
     134      //--------------------------------------------------------------- 
     135       
    113136      int CONetCDF4::getUnlimitedDimension(void) 
    114137      { 
     
    118141         return (dimid); 
    119142      } 
    120  
     143       
     144      //--------------------------------------------------------------- 
     145       
    121146      std::vector<StdSize> CONetCDF4::getDimensions(const StdString & varname) 
    122147      { 
     
    159184         return (retvalue); 
    160185      } 
    161  
     186       
     187      //--------------------------------------------------------------- 
     188       
    162189      int CONetCDF4::addDimension(const StdString& name, const StdSize size) 
    163190      { 
     
    170197         return (retvalue); 
    171198      } 
    172  
     199       
     200      //--------------------------------------------------------------- 
     201       
    173202      int CONetCDF4::addVariable(const StdString & name, nc_type type, 
    174203                                  const std::vector<StdString> & dim) 
     
    201230         //CheckError(nc_put_att_string(grpid, varid, name.c_str(), 1, &str)); 
    202231      } 
    203  
     232       
     233      //--------------------------------------------------------------- 
     234       
    204235      template <> 
    205236         void CONetCDF4::addAttribute 
     
    210241         CheckError(nc_put_att_double(grpid, varid, name.c_str(), NC_DOUBLE,1, &value)); 
    211242      } 
    212  
     243       
     244      //--------------------------------------------------------------- 
     245       
    213246      template <> 
    214247         void CONetCDF4::addAttribute 
     
    219252         CheckError(nc_put_att_float(grpid, varid, name.c_str(), NC_FLOAT, 1, &value)); 
    220253      } 
    221  
     254       
     255      //--------------------------------------------------------------- 
     256       
    222257      template <> 
    223258         void CONetCDF4::addAttribute 
     
    278313      } 
    279314 
    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) 
    285348      { 
    286349         int grpid = this->getCurrentGroup(); 
     
    289352         std::vector<StdSize> sstart, scount; 
    290353 
    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->getWriteDataInfos 
    297          (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->getWriteDataInfos 
    318          (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->getWriteDataInfos 
    339          (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  
    350354         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()); 
    352356      } 
    353357 
  • XMLIO_V2/dev/dev_rv/src/xmlio/output/onetcdf4.hpp

    r185 r189  
    4949            int addDimension(const StdString& name, const StdSize size = UNLIMITED_DIM); 
    5050            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          
    5256            template <class T> 
    5357               void addAttribute 
     
    5559 
    5660            /// 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, 
    5963                              bool collective, StdSize record, 
    6064                              const std::vector<StdSize> * start = NULL, 
     
    6872            /// Destructeur /// 
    6973            virtual ~CONetCDF4(void); 
    70  
     74             
     75      //---------------------------------------------------------------- 
     76       
    7177         protected : 
    7278 
     
    8389            std::vector<StdSize> getDimensions(const StdString & varname); 
    8490            int getUnlimitedDimension(void); 
    85  
     91             
     92      //---------------------------------------------------------------- 
     93       
    8694         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); 
    87100 
    88101            void getWriteDataInfos(const StdString & name, StdSize record, StdSize & array_size, 
     
    102115      }; // class CONetCDF4 
    103116 
     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 
    104142   } // namespace io 
    105143} // namespace xmlioserver 
Note: See TracChangeset for help on using the changeset viewer.