Changeset 651


Ignore:
Timestamp:
07/24/15 16:40:05 (6 years ago)
Author:
rlacroix
Message:

Field: Avoid some heap allocations.

Location:
XIOS/trunk/src
Files:
5 edited

Legend:

Unmodified
Added
Removed
  • XIOS/trunk/src/node/field.cpp

    r650 r651  
    203203      { 
    204204        int rank = it->first; 
    205         data_srv.insert( pair<int, CArray<double,1>* >(rank, new CArray<double,1>(it->second.numElements()))); 
    206         foperation_srv.insert(pair<int,boost::shared_ptr<func::CFunctor> >(rank,boost::shared_ptr<func::CFunctor>(new func::CInstant(*data_srv[rank])))); 
     205        data_srv.insert(std::make_pair(rank, CArray<double,1>(it->second.numElements()))); 
     206        foperation_srv.insert(pair<int,boost::shared_ptr<func::CFunctor> >(rank,boost::shared_ptr<func::CFunctor>(new func::CInstant(data_srv[rank])))); 
    207207      } 
    208208    } 
     
    210210    CContext* context = CContext::getCurrent(); 
    211211    const CDate& currDate = context->getCalendar()->getCurrentDate(); 
    212     const CDate opeDate      = *last_operation_srv + freq_operation_srv; 
    213     const CDate writeDate    = *last_Write_srv     + freq_write_srv; 
     212    const CDate opeDate      = last_operation_srv + freq_operation_srv; 
     213    const CDate writeDate    = last_Write_srv     + freq_write_srv; 
    214214 
    215215    if (opeDate <= currDate) 
     
    221221        (*foperation_srv[ranks[n]])(data_tmp); 
    222222      } 
    223       *last_operation_srv = currDate; 
     223      last_operation_srv = currDate; 
    224224    } 
    225225 
     
    231231      } 
    232232 
    233       *last_Write_srv = writeDate; 
     233      last_Write_srv = writeDate; 
    234234      writeField(); 
    235       *lastlast_Write_srv = *last_Write_srv; 
     235      lastlast_Write_srv = last_Write_srv; 
    236236    } 
    237237  } 
     
    305305    bool hasData = readField(); 
    306306 
    307     map<int, CArray<double,1>* >::iterator it; 
     307    map<int, CArray<double,1> >::iterator it; 
    308308    for (it = data_srv.begin(); it != data_srv.end(); it++) 
    309309    { 
     
    312312      msg << getId(); 
    313313      if (hasData) 
    314         msg << getNStep() - 1 << *it->second; 
     314        msg << getNStep() - 1 << it->second; 
    315315      else 
    316316        msg << size_t(-1); 
     
    329329        { 
    330330          for (map<int, CArray<size_t, 1> >::iterator it = grid->outIndexFromClient.begin(); it != grid->outIndexFromClient.end(); ++it) 
    331             data_srv.insert(pair<int, CArray<double,1>*>(it->first, new CArray<double,1>(it->second.numElements()))); 
     331            data_srv.insert(std::make_pair(it->first, CArray<double,1>(it->second.numElements()))); 
    332332        } 
    333333 
     
    483483 
    484484        solveGridReference(); 
    485  
    486         lastDataRequestedFromServer.setRelCalendar(*context->getCalendar()); 
    487485     } 
    488486     solveGridDomainAxisRef(doSending2Sever); 
     
    516514      freq_write_srv     = file->output_freq.getValue(); 
    517515 
    518       lastlast_Write_srv = boost::shared_ptr<CDate>(new CDate(context->getCalendar()->getInitDate())); 
    519       last_Write_srv     = boost::shared_ptr<CDate>(new CDate(context->getCalendar()->getInitDate())); 
    520       last_operation_srv = boost::shared_ptr<CDate>(new CDate(context->getCalendar()->getInitDate())); 
     516      lastlast_Write_srv = context->getCalendar()->getInitDate(); 
     517      last_Write_srv     = context->getCalendar()->getInitDate(); 
     518      last_operation_srv = context->getCalendar()->getInitDate(); 
    521519 
    522520      const CDuration toffset = freq_operation_srv - freq_offset.getValue() - context->getCalendar()->getTimeStep(); 
    523       *last_operation_srv     = *last_operation_srv - toffset; 
     521      last_operation_srv     = last_operation_srv - toffset; 
    524522 
    525523      if (operation.isEmpty()) 
     
    792790   void CField::scaleFactorAddOffset(double scaleFactor, double addOffset) 
    793791   { 
    794      map<int, CArray<double,1>* >::iterator it; 
    795      for (it = data_srv.begin(); it != data_srv.end(); it++) *it->second = (*it->second - addOffset) / scaleFactor; 
     792     map<int, CArray<double,1> >::iterator it; 
     793     for (it = data_srv.begin(); it != data_srv.end(); it++) it->second = (it->second - addOffset) / scaleFactor; 
    796794   } 
    797795 
    798796   void CField::invertScaleFactorAddOffset(double scaleFactor, double addOffset) 
    799797   { 
    800      map<int, CArray<double,1>* >::iterator it; 
    801      for (it = data_srv.begin(); it != data_srv.end(); it++) *it->second = *it->second * scaleFactor + addOffset; 
     798     map<int, CArray<double,1> >::iterator it; 
     799     for (it = data_srv.begin(); it != data_srv.end(); it++) it->second = it->second * scaleFactor + addOffset; 
    802800   } 
    803801 
    804802   void CField::outputField(CArray<double,3>& fieldOut) 
    805803   { 
    806       map<int, CArray<double,1>* >::iterator it; 
     804      map<int, CArray<double,1> >::iterator it; 
    807805      for (it = data_srv.begin(); it != data_srv.end(); it++) 
    808806      { 
    809         grid->outputField(it->first,*it->second, fieldOut.dataFirst()); 
     807        grid->outputField(it->first, it->second, fieldOut.dataFirst()); 
    810808      } 
    811809   } 
     
    813811   void CField::outputField(CArray<double,2>& fieldOut) 
    814812   { 
    815       map<int, CArray<double,1>* >::iterator it; 
     813      map<int, CArray<double,1> >::iterator it; 
    816814      for(it=data_srv.begin();it!=data_srv.end();it++) 
    817815      { 
    818          grid->outputField(it->first,*it->second, fieldOut.dataFirst()) ; 
     816         grid->outputField(it->first, it->second, fieldOut.dataFirst()) ; 
    819817      } 
    820818   } 
     
    822820   void CField::outputField(CArray<double,1>& fieldOut) 
    823821   { 
    824       map<int, CArray<double,1>* >::iterator it; 
     822      map<int, CArray<double,1> >::iterator it; 
    825823 
    826824      for (it = data_srv.begin(); it != data_srv.end(); it++) 
    827825      { 
    828          grid->outputField(it->first,*it->second, fieldOut.dataFirst()) ; 
     826         grid->outputField(it->first, it->second, fieldOut.dataFirst()) ; 
    829827      } 
    830828   } 
     
    832830   void CField::inputField(CArray<double,3>& fieldOut) 
    833831   { 
    834       map<int, CArray<double,1>*>::iterator it; 
     832      map<int, CArray<double,1> >::iterator it; 
    835833      for (it = data_srv.begin(); it != data_srv.end(); it++) 
    836834      { 
    837         grid->inputField(it->first, fieldOut.dataFirst(), *it->second); 
     835        grid->inputField(it->first, fieldOut.dataFirst(), it->second); 
    838836      } 
    839837   } 
     
    841839   void CField::inputField(CArray<double,2>& fieldOut) 
    842840   { 
    843       map<int, CArray<double,1>*>::iterator it; 
     841      map<int, CArray<double,1> >::iterator it; 
    844842      for(it = data_srv.begin(); it != data_srv.end(); it++) 
    845843      { 
    846          grid->inputField(it->first, fieldOut.dataFirst(), *it->second); 
     844         grid->inputField(it->first, fieldOut.dataFirst(), it->second); 
    847845      } 
    848846   } 
     
    850848   void CField::inputField(CArray<double,1>& fieldOut) 
    851849   { 
    852       map<int, CArray<double,1>*>::iterator it; 
     850      map<int, CArray<double,1> >::iterator it; 
    853851      for (it = data_srv.begin(); it != data_srv.end(); it++) 
    854852      { 
    855          grid->inputField(it->first, fieldOut.dataFirst(), *it->second); 
     853         grid->inputField(it->first, fieldOut.dataFirst(), it->second); 
    856854      } 
    857855   } 
  • XIOS/trunk/src/node/field.hpp

    r646 r651  
    6565           EVENT_ID_UPDATE_DATA, EVENT_ID_READ_DATA, EVENT_ID_READ_DATA_READY, 
    6666           EVENT_ID_ADD_VARIABLE, EVENT_ID_ADD_VARIABLE_GROUP 
    67          } ; 
     67         }; 
    6868 
    6969         /// Constructeurs /// 
    7070         CField(void); 
    71          explicit CField(const StdString & id); 
    72          CField(const CField & field);       // Not implemented yet. 
    73          CField(const CField * const field); // Not implemented yet. 
     71         explicit CField(const StdString& id); 
     72         CField(const CField& field);       // Not implemented yet. 
     73         CField(const CField* const field); // Not implemented yet. 
    7474 
    7575         /// Accesseurs /// 
    7676 
    77          CGrid* getRelGrid(void) const ; 
    78          CFile* getRelFile(void) const ; 
     77         CGrid* getRelGrid(void) const; 
     78         CFile* getRelFile(void) const; 
    7979 
    8080         func::CFunctor::ETimeType getOperationTimeType() const; 
     
    9191         void setRelFile(CFile* _file); 
    9292         void incrementNStep(void); 
    93          void resetNStep() ; 
     93         void resetNStep(); 
    9494         void resetNStepMax(); 
    9595 
     
    9898       public : 
    9999         bool isActive(void) const; 
    100          bool hasOutputFile ; 
     100         bool hasOutputFile; 
    101101 
    102102         /// Traitements /// 
     
    112112         boost::shared_ptr<COutputPin> getTemporalDataFilter(CGarbageCollector& gc, CDuration outFreq); 
    113113 
    114 //         virtual void fromBinary(StdIStream & is); 
     114//         virtual void fromBinary(StdIStream& is); 
    115115 
    116116         /// Destructeur /// 
     
    123123         static ENodeType GetType(void); 
    124124 
    125         template <int N> void setData(const CArray<double, N>& _data) ; 
    126         static bool dispatchEvent(CEventServer& event) ; 
     125        template <int N> void setData(const CArray<double, N>& _data); 
     126        static bool dispatchEvent(CEventServer& event); 
    127127        void sendUpdateData(const CArray<double,1>& data); 
    128         static void recvUpdateData(CEventServer& event) ; 
    129         void recvUpdateData(vector<int>& ranks, vector<CBufferIn*>& buffers) ; 
    130         void writeField(void) ; 
     128        static void recvUpdateData(CEventServer& event); 
     129        void recvUpdateData(vector<int>& ranks, vector<CBufferIn*>& buffers); 
     130        void writeField(void); 
    131131        void sendReadDataRequest(void); 
    132132        bool sendReadDataRequestIfNeeded(void); 
     
    136136        static void recvReadDataReady(CEventServer& event); 
    137137        void recvReadDataReady(vector<int> ranks, vector<CBufferIn*> buffers); 
    138         void outputField(CArray<double,3>& fieldOut) ; 
    139         void outputField(CArray<double,2>& fieldOut) ; 
    140         void outputField(CArray<double,1>& fieldOut) ; 
     138        void outputField(CArray<double,3>& fieldOut); 
     139        void outputField(CArray<double,2>& fieldOut); 
     140        void outputField(CArray<double,1>& fieldOut); 
    141141        void inputField(CArray<double,3>& fieldOut); 
    142142        void inputField(CArray<double,2>& fieldOut); 
    143143        void inputField(CArray<double,1>& fieldOut); 
    144         void scaleFactorAddOffset(double scaleFactor, double addOffset) ; 
     144        void scaleFactorAddOffset(double scaleFactor, double addOffset); 
    145145        void invertScaleFactorAddOffset(double scaleFactor, double addOffset); 
    146         void parse(xml::CXMLNode & node) ; 
     146        void parse(xml::CXMLNode& node); 
    147147 
    148148        void setVirtualVariableGroup(CVariableGroup* newVVariableGroup); 
     
    150150        CVariableGroup* getVirtualVariableGroup(void) const; 
    151151        vector<CVariable*> getAllVariables(void) const; 
    152         virtual void solveDescInheritance(bool apply, const CAttributeMap * const parent = 0); 
    153  
    154         CVariable* addVariable(const string& id="") ; 
    155         CVariableGroup* addVariableGroup(const string& id="") ; 
    156         void sendAddVariable(const string& id="") ; 
    157         void sendAddVariableGroup(const string& id="") ; 
    158         static void recvAddVariable(CEventServer& event) ; 
    159         void recvAddVariable(CBufferIn& buffer) ; 
    160         static void recvAddVariableGroup(CEventServer& event) ; 
    161         void recvAddVariableGroup(CBufferIn& buffer) ; 
     152        virtual void solveDescInheritance(bool apply, const CAttributeMap* const parent = 0); 
     153 
     154        CVariable* addVariable(const string& id = ""); 
     155        CVariableGroup* addVariableGroup(const string& id = ""); 
     156        void sendAddVariable(const string& id = ""); 
     157        void sendAddVariableGroup(const string& id = ""); 
     158        static void recvAddVariable(CEventServer& event); 
     159        void recvAddVariable(CBufferIn& buffer); 
     160        static void recvAddVariableGroup(CEventServer& event); 
     161        void recvAddVariableGroup(CBufferIn& buffer); 
    162162        void sendAddAllVariables(); 
    163163 
     
    167167      public : 
    168168         /// Propriétés privées /// 
    169          CVariableGroup* vVariableGroup ; 
    170  
    171          CGrid*  grid ; 
     169         CVariableGroup* vVariableGroup; 
     170 
     171         CGrid*  grid; 
    172172         CFile*  file; 
    173173 
     
    176176         StdSize nstep, nstepMax; 
    177177         bool isEOF; 
    178          boost::shared_ptr<CDate> lastlast_Write_srv, last_Write_srv, last_operation_srv; 
     178         CDate lastlast_Write_srv, last_Write_srv, last_operation_srv; 
    179179         CDate lastDataRequestedFromServer; 
    180180 
    181181         map<int,boost::shared_ptr<func::CFunctor> > foperation_srv; 
    182182 
    183          map<int, CArray<double,1>* > data_srv ; 
    184          string content ; 
     183         map<int, CArray<double,1> > data_srv; 
     184         string content; 
    185185 
    186186         bool areAllReferenceSolved; 
  • XIOS/trunk/src/node/file.cpp

    r645 r651  
    2525      , vFieldGroup(), data_out(), enabledFields(), fileComm(MPI_COMM_NULL) 
    2626   { 
    27      setVirtualFieldGroup() ; 
    28      setVirtualVariableGroup() ; 
     27     setVirtualFieldGroup(); 
     28     setVirtualVariableGroup(); 
    2929   } 
    3030 
     
    3333      , vFieldGroup(), data_out(), enabledFields(), fileComm(MPI_COMM_NULL) 
    3434    { 
    35       setVirtualFieldGroup() ; 
    36       setVirtualVariableGroup() ; 
     35      setVirtualFieldGroup(); 
     36      setVirtualVariableGroup(); 
    3737    } 
    3838 
     
    129129      std::vector<CField*> newEnabledFields; 
    130130 
    131       for ( it = this->enabledFields.begin() ; it != this->enabledFields.end(); it++ ) 
     131      for ( it = this->enabledFields.begin(); it != this->enabledFields.end(); it++ ) 
    132132      { 
    133133         if (!(*it)->enabled.isEmpty()) // Si l'attribut 'enabled' est défini ... 
     
    138138         else // Si l'attribut 'enabled' n'est pas défini ... 
    139139         { 
    140             if (!default_enabled) continue ; 
     140            if (!default_enabled) continue; 
    141141//            { it--; this->enabledFields.erase(it+1); continue; } 
    142142         } 
     
    144144         if (!(*it)->level.isEmpty()) // Si l'attribut 'level' est défini ... 
    145145         { 
    146             if ((*it)->level.getValue() > _outputlevel) continue ; 
     146            if ((*it)->level.getValue() > _outputlevel) continue; 
    147147//            { it--; this->enabledFields.erase(it+1); continue; } 
    148148         } 
    149149         else // Si l'attribut 'level' n'est pas défini ... 
    150150         { 
    151             if (default_level > _outputlevel) continue ; 
     151            if (default_level > _outputlevel) continue; 
    152152//            { it--; this->enabledFields.erase(it+1); continue; } 
    153153         } 
    154154 
    155 //         CField* field_tmp=(*it).get() ; 
    156 //         shared_ptr<CField> sptfield=*it ; 
    157 //         field_tmp->refObject.push_back(sptfield) ; 
    158          newEnabledFields.push_back(*it) ; 
     155//         CField* field_tmp=(*it).get(); 
     156//         shared_ptr<CField> sptfield=*it; 
     157//         field_tmp->refObject.push_back(sptfield); 
     158         newEnabledFields.push_back(*it); 
    159159         // Le champ est finalement actif, on y ajoute sa propre reference. 
    160160//         (*it)->refObject.push_back(*it); 
     
    164164         // A faire, ajouter les references intermediaires... 
    165165      } 
    166       enabledFields=newEnabledFields ; 
     166      enabledFields = newEnabledFields; 
    167167 
    168168      return (this->enabledFields); 
     
    198198   bool CFile::isSyncTime(void) 
    199199   { 
    200      CContext* context = CContext::getCurrent() ; 
    201      const CDate& currentDate = context->calendar->getCurrentDate() ; 
     200     CContext* context = CContext::getCurrent(); 
     201     const CDate& currentDate = context->calendar->getCurrentDate(); 
    202202     if (!sync_freq.isEmpty()) 
    203203     { 
    204        if (*lastSync + sync_freq.getValue() < currentDate) 
     204       if (lastSync + sync_freq.getValue() < currentDate) 
    205205       { 
    206          *lastSync=currentDate ; 
    207          return true ; 
     206         lastSync = currentDate; 
     207         return true; 
    208208        } 
    209209      } 
    210       return false ; 
     210      return false; 
    211211    } 
    212212 
     
    214214   void CFile::initFile(void) 
    215215   { 
    216       CContext* context = CContext::getCurrent() ; 
    217       const CDate& currentDate = context->calendar->getCurrentDate() ; 
    218       CContextServer* server=context->server ; 
    219  
    220       lastSync=new CDate(currentDate) ; 
    221       lastSplit=new CDate(currentDate) ; 
    222       isOpen=false ; 
    223  
    224       allDomainEmpty=true ; 
     216      CContext* context = CContext::getCurrent(); 
     217      const CDate& currentDate = context->calendar->getCurrentDate(); 
     218      CContextServer* server = context->server; 
     219 
     220      lastSync  = currentDate; 
     221      lastSplit = currentDate; 
     222      isOpen = false; 
     223 
     224      allDomainEmpty = true; 
    225225 
    226226      set<CAxis*> setAxis; 
     
    243243 
    244244      // create sub communicator for file 
    245       int color=allDomainEmpty?0:1 ; 
    246       MPI_Comm_split(server->intraComm,color,server->intraCommRank,&fileComm) ; 
    247       if (allDomainEmpty) MPI_Comm_free(&fileComm) ; 
    248       // 
    249  
     245      int color = allDomainEmpty ? 0 : 1; 
     246      MPI_Comm_split(server->intraComm, color, server->intraCommRank, &fileComm); 
     247      if (allDomainEmpty) MPI_Comm_free(&fileComm); 
    250248    } 
    251249 
     
    273271   bool CFile::checkSync(void) 
    274272   { 
    275      CContext* context = CContext::getCurrent() ; 
    276      const CDate& currentDate = context->calendar->getCurrentDate() ; 
     273     CContext* context = CContext::getCurrent(); 
     274     const CDate& currentDate = context->calendar->getCurrentDate(); 
    277275     if (!sync_freq.isEmpty()) 
    278276     { 
    279        if (*lastSync + sync_freq.getValue() <= currentDate) 
     277       if (lastSync + sync_freq.getValue() <= currentDate) 
    280278       { 
    281          *lastSync=currentDate ; 
    282          data_out->syncFile() ; 
    283          return true ; 
     279         lastSync = currentDate; 
     280         data_out->syncFile(); 
     281         return true; 
    284282        } 
    285283      } 
    286       return false ; 
     284      return false; 
    287285    } 
    288286 
     
    295293    bool CFile::checkSplit(void) 
    296294    { 
    297       CContext* context = CContext::getCurrent() ; 
    298       const CDate& currentDate = context->calendar->getCurrentDate() ; 
     295      CContext* context = CContext::getCurrent(); 
     296      const CDate& currentDate = context->calendar->getCurrentDate(); 
    299297      if (!split_freq.isEmpty()) 
    300298      { 
    301         if (currentDate > *lastSplit + split_freq.getValue()) 
     299        if (currentDate > lastSplit + split_freq.getValue()) 
    302300        { 
    303           *lastSplit = *lastSplit + split_freq.getValue(); 
     301          lastSplit = lastSplit + split_freq.getValue(); 
    304302          std::vector<CField*>::iterator it, end = this->enabledFields.end(); 
    305303          for (it = this->enabledFields.begin(); it != end; it++) 
     
    309307          } 
    310308          if (mode.isEmpty() || mode.getValue() == mode_attr::write) 
    311             createHeader() ; 
     309            createHeader(); 
    312310          else 
    313311            openInReadMode(); 
    314           return true ; 
     312          return true; 
    315313        } 
    316314      } 
    317       return false ; 
     315      return false; 
    318316    } 
    319317 
     
    324322   void CFile::createHeader(void) 
    325323   { 
    326       CContext* context = CContext::getCurrent() ; 
    327       CContextServer* server=context->server ; 
     324      CContext* context = CContext::getCurrent(); 
     325      CContextServer* server = context->server; 
    328326 
    329327      if (!allDomainEmpty) 
     
    336334         if (!split_freq.isEmpty()) 
    337335         { 
    338            string splitFormat ; 
     336           string splitFormat; 
    339337           if (split_freq_format.isEmpty()) 
    340338           { 
     
    346344             else splitFormat = "%y"; 
    347345           } 
    348            else splitFormat=split_freq_format ; 
    349            oss << "_" << lastSplit->getStr(splitFormat) 
    350                << "-" << (*lastSplit + split_freq.getValue() - 1 * Second).getStr(splitFormat); 
     346           else splitFormat = split_freq_format; 
     347           oss << "_" << lastSplit.getStr(splitFormat) 
     348               << "-" << (lastSplit + split_freq.getValue() - 1 * Second).getStr(splitFormat); 
    351349         } 
    352350 
     
    355353         bool useClassicFormat = !format.isEmpty() && format == format_attr::netcdf4_classic; 
    356354 
    357          bool multifile=true ; 
     355         bool multifile = true; 
    358356         if (!type.isEmpty()) 
    359357         { 
    360            if (type==type_attr::one_file) multifile=false ; 
    361            else if (type==type_attr::multiple_file) multifile=true ; 
     358           if (type == type_attr::one_file) multifile = false; 
     359           else if (type == type_attr::multiple_file) multifile = true; 
    362360 
    363361         } 
     
    365363         if (!multifile) 
    366364         { 
    367             info(0)<<"!!! Warning -> Using non parallel version of netcdf, switching in multiple_file mode for file : "<<filename<<" ..."<<endl ; 
    368             multifile=true ; 
     365            info(0) << "!!! Warning -> Using non parallel version of netcdf, switching in multiple_file mode for file : " << filename << " ..." << endl; 
     366            multifile = true; 
    369367          } 
    370368#endif 
    371369         if (multifile) 
    372370         { 
    373             int commSize, commRank ; 
    374             MPI_Comm_size(fileComm,&commSize) ; 
    375             MPI_Comm_rank(fileComm,&commRank) ; 
     371            int commSize, commRank; 
     372            MPI_Comm_size(fileComm, &commSize); 
     373            MPI_Comm_rank(fileComm, &commRank); 
    376374 
    377375            if (server->intraCommSize > 1) 
    378376            { 
    379               oss << "_"  ; 
    380               int width=0 ; int n=commSize-1 ; 
    381               while(n != 0) { n=n/10 ; width++ ;} 
     377              oss << "_" ; 
     378              int width=0; int n = commSize-1; 
     379              while (n != 0) { n = n / 10; width++;} 
    382380              if (!min_digits.isEmpty()) 
    383                 if (width<min_digits) width=min_digits ; 
    384               oss.width(width) ; 
    385               oss.fill('0') ; 
    386               oss<<right<< commRank; 
     381                if (width < min_digits) width = min_digits; 
     382              oss.width(width); 
     383              oss.fill('0'); 
     384              oss << right << commRank; 
    387385            } 
    388386         } 
     
    416414          } 
    417415 
    418           vector<CVariable*> listVars = getAllVariables() ; 
     416          vector<CVariable*> listVars = getAllVariables(); 
    419417          for (vector<CVariable*>::iterator it = listVars.begin(); it != listVars.end(); it++) 
    420418            this->data_out->writeAttribute(*it); 
     
    431429  { 
    432430    CContext* context = CContext::getCurrent(); 
    433     CContextServer* server=context->server; 
     431    CContextServer* server = context->server; 
    434432 
    435433    if (!allDomainEmpty) 
     
    452450          else splitFormat = "%y"; 
    453451        } 
    454         else splitFormat=split_freq_format; 
    455         oss << "_" << lastSplit->getStr(splitFormat) 
    456         << "-" << (*lastSplit + split_freq.getValue() - 1 * Second).getStr(splitFormat); 
     452        else splitFormat = split_freq_format; 
     453        oss << "_" << lastSplit.getStr(splitFormat) 
     454        << "-" << (lastSplit + split_freq.getValue() - 1 * Second).getStr(splitFormat); 
    457455      } 
    458456 
     
    478476        if (server->intraCommSize > 1) 
    479477        { 
    480           oss << "_" ; 
     478          oss << "_"; 
    481479          int width = 0, n = commSize - 1; 
    482480          while (n != 0) { n = n / 10; width++; } 
     
    502500   void CFile::close(void) 
    503501   { 
    504      delete lastSync ; 
    505      delete lastSplit ; 
    506502     if (!allDomainEmpty) 
    507503       if (isOpen) 
     
    512508          this->data_in->closeFile(); 
    513509       } 
    514       if (fileComm != MPI_COMM_NULL) MPI_Comm_free(&fileComm) ; 
     510      if (fileComm != MPI_COMM_NULL) MPI_Comm_free(&fileComm); 
    515511   } 
    516512   //---------------------------------------------------------------- 
     
    530526           if (node.getElementName()=="field" || node.getElementName()=="field_group") this->getVirtualFieldGroup()->parseChild(node); 
    531527           else if (node.getElementName()=="variable" || node.getElementName()=="variable_group") this->getVirtualVariableGroup()->parseChild(node); 
    532         } while (node.goToNextElement()) ; 
     528        } while (node.goToNextElement()); 
    533529        node.goToParentElement(); 
    534530      } 
     
    649645   CField* CFile::addField(const string& id) 
    650646   { 
    651      return vFieldGroup->createChild(id) ; 
     647     return vFieldGroup->createChild(id); 
    652648   } 
    653649 
     
    661657   CFieldGroup* CFile::addFieldGroup(const string& id) 
    662658   { 
    663      return vFieldGroup->createChildGroup(id) ; 
     659     return vFieldGroup->createChildGroup(id); 
    664660   } 
    665661 
     
    676672   CVariable* CFile::addVariable(const string& id) 
    677673   { 
    678      return vVariableGroup->createChild(id) ; 
     674     return vVariableGroup->createChild(id); 
    679675   } 
    680676 
     
    688684   CVariableGroup* CFile::addVariableGroup(const string& id) 
    689685   { 
    690      return vVariableGroup->createChildGroup(id) ; 
     686     return vVariableGroup->createChildGroup(id); 
    691687   } 
    692688 
     
    697693   void CFile::sendAddField(const string& id) 
    698694   { 
    699     CContext* context=CContext::getCurrent() ; 
     695    CContext* context = CContext::getCurrent(); 
    700696 
    701697    if (! context->hasServer ) 
    702698    { 
    703        CContextClient* client=context->client ; 
    704  
    705        CEventClient event(this->getType(),EVENT_ID_ADD_FIELD) ; 
     699       CContextClient* client = context->client; 
     700 
     701       CEventClient event(this->getType(),EVENT_ID_ADD_FIELD); 
    706702       if (client->isServerLeader()) 
    707703       { 
    708          CMessage msg ; 
    709          msg<<this->getId() ; 
    710          msg<<id ; 
     704         CMessage msg; 
     705         msg << this->getId(); 
     706         msg << id; 
    711707         const std::list<int>& ranks = client->getRanksServerLeader(); 
    712708         for (std::list<int>::const_iterator itRank = ranks.begin(), itRankEnd = ranks.end(); itRank != itRankEnd; ++itRank) 
    713709           event.push(*itRank,1,msg); 
    714          client->sendEvent(event) ; 
     710         client->sendEvent(event); 
    715711       } 
    716        else client->sendEvent(event) ; 
     712       else client->sendEvent(event); 
    717713    } 
    718714 
     
    725721   void CFile::sendAddFieldGroup(const string& id) 
    726722   { 
    727     CContext* context=CContext::getCurrent() ; 
     723    CContext* context = CContext::getCurrent(); 
    728724    if (! context->hasServer ) 
    729725    { 
    730        CContextClient* client=context->client ; 
    731  
    732        CEventClient event(this->getType(),EVENT_ID_ADD_FIELD_GROUP) ; 
     726       CContextClient* client = context->client; 
     727 
     728       CEventClient event(this->getType(),EVENT_ID_ADD_FIELD_GROUP); 
    733729       if (client->isServerLeader()) 
    734730       { 
    735          CMessage msg ; 
    736          msg<<this->getId() ; 
    737          msg<<id ; 
     731         CMessage msg; 
     732         msg << this->getId(); 
     733         msg << id; 
    738734         const std::list<int>& ranks = client->getRanksServerLeader(); 
    739735         for (std::list<int>::const_iterator itRank = ranks.begin(), itRankEnd = ranks.end(); itRank != itRankEnd; ++itRank) 
    740736           event.push(*itRank,1,msg); 
    741          client->sendEvent(event) ; 
     737         client->sendEvent(event); 
    742738       } 
    743        else client->sendEvent(event) ; 
     739       else client->sendEvent(event); 
    744740    } 
    745741 
     
    753749   { 
    754750 
    755       CBufferIn* buffer=event.subEvents.begin()->buffer; 
     751      CBufferIn* buffer = event.subEvents.begin()->buffer; 
    756752      string id; 
    757       *buffer>>id ; 
    758       get(id)->recvAddField(*buffer) ; 
     753      *buffer>>id; 
     754      get(id)->recvAddField(*buffer); 
    759755   } 
    760756 
     
    765761   void CFile::recvAddField(CBufferIn& buffer) 
    766762   { 
    767       string id ; 
    768       buffer>>id ; 
    769       addField(id) ; 
     763      string id; 
     764      buffer>>id; 
     765      addField(id); 
    770766   } 
    771767 
     
    777773   { 
    778774 
    779       CBufferIn* buffer=event.subEvents.begin()->buffer; 
     775      CBufferIn* buffer = event.subEvents.begin()->buffer; 
    780776      string id; 
    781       *buffer>>id ; 
    782       get(id)->recvAddFieldGroup(*buffer) ; 
     777      *buffer>>id; 
     778      get(id)->recvAddFieldGroup(*buffer); 
    783779   } 
    784780 
     
    789785   void CFile::recvAddFieldGroup(CBufferIn& buffer) 
    790786   { 
    791       string id ; 
    792       buffer>>id ; 
    793       addFieldGroup(id) ; 
     787      string id; 
     788      buffer>>id; 
     789      addFieldGroup(id); 
    794790   } 
    795791 
     
    828824   void CFile::sendAddVariable(const string& id) 
    829825   { 
    830     CContext* context=CContext::getCurrent() ; 
     826    CContext* context = CContext::getCurrent(); 
    831827 
    832828    if (! context->hasServer ) 
    833829    { 
    834        CContextClient* client=context->client ; 
    835  
    836        CEventClient event(this->getType(),EVENT_ID_ADD_VARIABLE) ; 
     830       CContextClient* client = context->client; 
     831 
     832       CEventClient event(this->getType(),EVENT_ID_ADD_VARIABLE); 
    837833       if (client->isServerLeader()) 
    838834       { 
    839          CMessage msg ; 
    840          msg<<this->getId() ; 
    841          msg<<id ; 
     835         CMessage msg; 
     836         msg << this->getId(); 
     837         msg << id; 
    842838         const std::list<int>& ranks = client->getRanksServerLeader(); 
    843839         for (std::list<int>::const_iterator itRank = ranks.begin(), itRankEnd = ranks.end(); itRank != itRankEnd; ++itRank) 
    844840           event.push(*itRank,1,msg); 
    845          client->sendEvent(event) ; 
     841         client->sendEvent(event); 
    846842       } 
    847        else client->sendEvent(event) ; 
     843       else client->sendEvent(event); 
    848844    } 
    849845 
     
    856852   void CFile::sendAddVariableGroup(const string& id) 
    857853   { 
    858     CContext* context=CContext::getCurrent() ; 
     854    CContext* context = CContext::getCurrent(); 
    859855    if (! context->hasServer ) 
    860856    { 
    861        CContextClient* client=context->client ; 
    862  
    863        CEventClient event(this->getType(),EVENT_ID_ADD_VARIABLE_GROUP) ; 
     857       CContextClient* client = context->client; 
     858 
     859       CEventClient event(this->getType(),EVENT_ID_ADD_VARIABLE_GROUP); 
    864860       if (client->isServerLeader()) 
    865861       { 
    866          CMessage msg ; 
    867          msg<<this->getId() ; 
    868          msg<<id ; 
     862         CMessage msg; 
     863         msg << this->getId(); 
     864         msg << id; 
    869865         const std::list<int>& ranks = client->getRanksServerLeader(); 
    870866         for (std::list<int>::const_iterator itRank = ranks.begin(), itRankEnd = ranks.end(); itRank != itRankEnd; ++itRank) 
    871867           event.push(*itRank,1,msg); 
    872          client->sendEvent(event) ; 
     868         client->sendEvent(event); 
    873869       } 
    874        else client->sendEvent(event) ; 
     870       else client->sendEvent(event); 
    875871    } 
    876872 
     
    884880   { 
    885881 
    886       CBufferIn* buffer=event.subEvents.begin()->buffer; 
     882      CBufferIn* buffer = event.subEvents.begin()->buffer; 
    887883      string id; 
    888       *buffer>>id ; 
    889       get(id)->recvAddVariable(*buffer) ; 
     884      *buffer>>id; 
     885      get(id)->recvAddVariable(*buffer); 
    890886   } 
    891887 
     
    896892   void CFile::recvAddVariable(CBufferIn& buffer) 
    897893   { 
    898       string id ; 
    899       buffer>>id ; 
    900       addVariable(id) ; 
     894      string id; 
     895      buffer>>id; 
     896      addVariable(id); 
    901897   } 
    902898 
     
    908904   { 
    909905 
    910       CBufferIn* buffer=event.subEvents.begin()->buffer; 
     906      CBufferIn* buffer = event.subEvents.begin()->buffer; 
    911907      string id; 
    912       *buffer>>id ; 
    913       get(id)->recvAddVariableGroup(*buffer) ; 
     908      *buffer>>id; 
     909      get(id)->recvAddVariableGroup(*buffer); 
    914910   } 
    915911 
     
    920916   void CFile::recvAddVariableGroup(CBufferIn& buffer) 
    921917   { 
    922       string id ; 
    923       buffer>>id ; 
    924       addVariableGroup(id) ; 
     918      string id; 
     919      buffer>>id; 
     920      addVariableGroup(id); 
    925921   } 
    926922 
     
    955951   bool CFile::dispatchEvent(CEventServer& event) 
    956952   { 
    957       if (SuperClass::dispatchEvent(event)) return true ; 
     953      if (SuperClass::dispatchEvent(event)) return true; 
    958954      else 
    959955      { 
     
    961957        { 
    962958           case EVENT_ID_ADD_FIELD : 
    963              recvAddField(event) ; 
    964              return true ; 
    965              break ; 
     959             recvAddField(event); 
     960             return true; 
     961             break; 
    966962 
    967963           case EVENT_ID_ADD_FIELD_GROUP : 
    968              recvAddFieldGroup(event) ; 
    969              return true ; 
    970              break ; 
     964             recvAddFieldGroup(event); 
     965             return true; 
     966             break; 
    971967 
    972968            case EVENT_ID_ADD_VARIABLE : 
    973              recvAddVariable(event) ; 
    974              return true ; 
    975              break ; 
     969             recvAddVariable(event); 
     970             return true; 
     971             break; 
    976972 
    977973           case EVENT_ID_ADD_VARIABLE_GROUP : 
    978              recvAddVariableGroup(event) ; 
    979              return true ; 
    980              break ; 
     974             recvAddVariableGroup(event); 
     975             return true; 
     976             break; 
    981977           default : 
    982               ERROR("bool CFile::dispatchEvent(CEventServer& event)", <<"Unknown Event") ; 
    983            return false ; 
     978              ERROR("bool CFile::dispatchEvent(CEventServer& event)", << "Unknown Event"); 
     979           return false; 
    984980        } 
    985981      } 
  • XIOS/trunk/src/node/file.hpp

    r645 r651  
    5353         enum EEventId 
    5454         { 
    55            EVENT_ID_ADD_FIELD=0,EVENT_ID_ADD_FIELD_GROUP, EVENT_ID_ADD_VARIABLE, 
     55           EVENT_ID_ADD_FIELD, EVENT_ID_ADD_FIELD_GROUP, EVENT_ID_ADD_VARIABLE, 
    5656           EVENT_ID_ADD_VARIABLE_GROUP, EVENT_ID_CREATE_ENABLED_FIELDS 
    57          } ; 
     57         }; 
    5858 
    5959         typedef CFileAttributes RelAttributes; 
     
    6262         /// Constructeurs /// 
    6363         CFile(void); 
    64          explicit CFile(const StdString & id); 
    65          CFile(const CFile & file);       // Not implemented yet. 
    66          CFile(const CFile * const file); // Not implemented yet. 
     64         explicit CFile(const StdString& id); 
     65         CFile(const CFile& file);       // Not implemented yet. 
     66         CFile(const CFile* const file); // Not implemented yet. 
    6767 
    6868         /// Destructeur /// 
     
    8484      public : 
    8585         // Some functions to verify state of file 
    86          bool isSyncTime(void) ; 
    87          bool checkSplit(void) ; 
    88          bool checkSync(void) ; 
    89          void checkFile(void) ; 
    90          void initFile(void) ; 
     86         bool isSyncTime(void); 
     87         bool checkSplit(void); 
     88         bool checkSync(void); 
     89         void checkFile(void); 
     90         void initFile(void); 
    9191 
    9292         /// Mutateurs /// 
     
    9999         void createHeader(void); 
    100100         void openInReadMode(void); 
    101          void close(void) ; 
     101         void close(void); 
    102102 
    103103         // Some processing on file 
    104104         void solveFieldRefInheritance(bool apply); 
    105          void processEnabledFile(void) ; 
     105         void processEnabledFile(void); 
    106106         void solveAllRefOfEnabledFields(bool sendToServer); 
    107107         void buildFilterGraphOfEnabledFields(CGarbageCollector& gc); 
     
    110110 
    111111         // Add component into file 
    112          CField* addField(const string& id="") ; 
    113          CFieldGroup* addFieldGroup(const string& id="") ; 
    114          CVariable* addVariable(const string& id="") ; 
    115          CVariableGroup* addVariableGroup(const string& id="") ; 
     112         CField* addField(const string& id = ""); 
     113         CFieldGroup* addFieldGroup(const string& id = ""); 
     114         CVariable* addVariable(const string& id = ""); 
     115         CVariableGroup* addVariableGroup(const string& id = ""); 
    116116 
    117117         // Send info to serever 
    118118         void sendEnabledFields(); 
    119          void sendAddField(const string& id="") ; 
    120          void sendAddFieldGroup(const string& id="") ; 
     119         void sendAddField(const string& id = ""); 
     120         void sendAddFieldGroup(const string& id = ""); 
    121121         void sendAddAllVariables(); 
    122          void sendAddVariable(const string& id="") ; 
    123          void sendAddVariableGroup(const string& id="") ; 
     122         void sendAddVariable(const string& id = ""); 
     123         void sendAddVariableGroup(const string& id = ""); 
    124124 
    125125         // Receive info from client 
    126          static void recvAddField(CEventServer& event) ; 
    127          void recvAddField(CBufferIn& buffer) ; 
    128          static void recvAddFieldGroup(CEventServer& event) ; 
    129          void recvAddFieldGroup(CBufferIn& buffer) ; 
    130          static void recvAddVariable(CEventServer& event) ; 
    131          void recvAddVariable(CBufferIn& buffer) ; 
    132          static void recvAddVariableGroup(CEventServer& event) ; 
    133          void recvAddVariableGroup(CBufferIn& buffer) ; 
     126         static void recvAddField(CEventServer& event); 
     127         void recvAddField(CBufferIn& buffer); 
     128         static void recvAddFieldGroup(CEventServer& event); 
     129         void recvAddFieldGroup(CBufferIn& buffer); 
     130         static void recvAddVariable(CEventServer& event); 
     131         void recvAddVariable(CBufferIn& buffer); 
     132         static void recvAddVariableGroup(CEventServer& event); 
     133         void recvAddVariableGroup(CBufferIn& buffer); 
    134134 
    135135         // Dispatch event 
    136          static bool dispatchEvent(CEventServer& event) ; 
     136         static bool dispatchEvent(CEventServer& event); 
    137137 
    138138      public: 
     
    144144      public: 
    145145         /// Traitements /// 
    146          virtual void solveDescInheritance(bool apply, const CAttributeMap * const parent = 0); 
     146         virtual void solveDescInheritance(bool apply, const CAttributeMap* const parent = 0); 
    147147 
    148148          /// Autres /// 
    149          virtual void parse(xml::CXMLNode & node); 
     149         virtual void parse(xml::CXMLNode& node); 
    150150         virtual StdString toString(void) const; 
    151151      public: 
    152152 
    153          CDate* lastSync ; 
    154          CDate* lastSplit ; 
     153         CDate lastSync; 
     154         CDate lastSplit; 
    155155         int nbAxis, nbDomains; 
    156          bool isOpen ; 
    157          bool allDomainEmpty ; 
    158          MPI_Comm fileComm ; 
     156         bool isOpen; 
     157         bool allDomainEmpty; 
     158         MPI_Comm fileComm; 
    159159 
    160160      private : 
    161161         /// Propriétés privées /// 
    162162         CFieldGroup* vFieldGroup; 
    163          CVariableGroup* vVariableGroup ; 
     163         CVariableGroup* vVariableGroup; 
    164164         boost::shared_ptr<CDataOutput> data_out; 
    165165         boost::shared_ptr<CDataInput> data_in; 
     
    167167 
    168168      public: 
    169         //         virtual void toBinary  (StdOStream & os) const; 
    170         //         virtual void fromBinary(StdIStream & is); 
     169        //         virtual void toBinary  (StdOStream& os) const; 
     170        //         virtual void fromBinary(StdIStream& is); 
    171171 
    172172   }; // class CFile 
  • XIOS/trunk/src/output/nc4_data_output.cpp

    r645 r651  
    11541154        if (wtime) 
    11551155        { 
    1156           time_counter(0)= (Time(*field->last_Write_srv) + Time(*field->lastlast_Write_srv)) / 2; 
     1156          time_counter(0)= (Time(field->last_Write_srv) + Time(field->lastlast_Write_srv)) / 2; 
    11571157          if (field->getOperationTimeType() == func::CFunctor::instant) 
    1158             time_data(0) = Time(*field->last_Write_srv); 
     1158            time_data(0) = Time(field->last_Write_srv); 
    11591159          else if (field->getOperationTimeType() == func::CFunctor::centered) time_data(0) = time_counter(0); 
    11601160 
    1161           time_counter_bound(0) = Time(*field->lastlast_Write_srv); 
    1162           time_counter_bound(1) = Time(*field->last_Write_srv); 
     1161          time_counter_bound(0) = Time(field->lastlast_Write_srv); 
     1162          time_counter_bound(1) = Time(field->last_Write_srv); 
    11631163          if (field->getOperationTimeType() == func::CFunctor::instant) 
    1164             time_data_bound(0) = time_data_bound(1) = Time(*field->last_Write_srv); 
     1164            time_data_bound(0) = time_data_bound(1) = Time(field->last_Write_srv); 
    11651165          else if (field->getOperationTimeType() == func::CFunctor::centered) 
    11661166          { 
Note: See TracChangeset for help on using the changeset viewer.