Changeset 124


Ignore:
Timestamp:
10/01/10 11:32:41 (14 years ago)
Author:
hozdoba
Message:

Commit pour sauvegarde - diverses corrections de bogues et améliorations du code.

Location:
XMLIO_V2/dev/dev_rv/src/XMLIO
Files:
17 edited

Legend:

Unmodified
Added
Removed
  • XMLIO_V2/dev/dev_rv/src/XMLIO/NetCDF4_data_output.hpp

    r123 r124  
    150150            for ( it = enabledFields.begin() ; it != enabledFields.end(); it++ ) 
    151151            { 
    152                const CField* field = (*it); 
     152               CField* field = (*it); 
    153153               const CField* bfield = (*it)->getBaseObject(); 
    154154 
    155155               lonlat = !field->getGrid()->_hasAxis(); 
     156 
    156157               if (field->operation.hasValue()) 
    157                   if (string(field->operation).compare("once") == 0) wtime = false; 
     158               { // Si une opération sur le champ est définie ... 
     159                  if (field->operation.getId().compare("once") == 0) 
     160                  { 
     161                     wtime = false; 
     162                     field->freq_op.setValue(NoneDu); 
     163                  } 
     164               } 
     165               else 
     166               { // Si aucune opération sur le champ n'est définie ... 
     167                  FieldOperation ope("inst"); 
     168                  field->operation.setValue(ope); 
     169               } 
     170 
     171               // Si la fréquence d'opération n'est pas définie, on l'initialise à 0s. 
     172               // Une fréquence à 0s signifie que l'opération se fera à chaque écriture de données depuis la simulation. 
     173               if (!field->freq_op.hasValue()) 
     174                  field->freq_op.setValue(NoneDu); 
     175               ((FieldOperation)field->operation).setFreqOp(Duration(field->freq_op)); 
     176 
    158177 
    159178               tvar = ncFloat; 
  • XMLIO_V2/dev/dev_rv/src/XMLIO/NetCDF4_data_treatment.hpp

    r120 r124  
    88      public : 
    99 
    10          NetCDF4DataTreatment(Context* const _ctxt) : AbstractDataTreatment(_ctxt) 
     10         NetCDF4DataTreatment(Context* const _ctxt = Context::GetCurrentContext()) : AbstractDataTreatment(_ctxt, *_ctxt->getCalendar()) 
    1111         { /* Ne rien faire de plus */ } 
     12 
     13         virtual void createDataOutput(void) 
     14         { 
     15            for (unsigned int i = 0; i < enabledFiles.size(); i++) 
     16            { 
     17               // Initialisation des instances de sortie de données. 
     18               enabledFiles[i]->initializeDataOutput(new NetCDF4DataOutput(enabledFiles[i])); 
     19               // Ouverture des fichiers et création des entêtes. 
     20               enabledFiles[i]->getDataOutput()->createFileAndHeader(); 
     21            } 
     22         } 
    1223 
    1324         virtual ~NetCDF4DataTreatment() 
  • XMLIO_V2/dev/dev_rv/src/XMLIO/abstract_calendar.hpp

    r123 r124  
    2020         friend std::ostream& operator<<(std::ostream& out, AbstractCalendar& c) 
    2121         { out << "[type: " << c.getId() << ", start: " << c.getInitDate() << ", current: " << c.getCurrentDate() << "]"; return (out); } 
     22 
     23         const Date& getInitDate(void) const { return(initDate); } 
     24         Date& getCurrentDate(void) { return(currentDate); } 
     25 
     26         void setTempo(const Duration& dr) { tempo = dr; } 
     27         Duration getTempo(void) const { return (tempo); } 
     28 
     29         Date& update(void); 
    2230 
    2331         virtual int getYearTotalLength(const Date& d) const { return (365 * 86400); } // Retourne la durée d'une année en seconde. 
     
    4957         { string value = getMonthName(_mi); value.resize(3); return (value); } 
    5058 
    51          const Date& getInitDate(void) const { return(initDate); } 
    52          Date& getCurrentDate(void) { return(currentDate); } 
    53  
    5459         virtual ~AbstractCalendar() 
    5560         {/* Ne rien faire de plus */} 
     
    5762      protected : 
    5863 
    59          AbstractCalendar() : AbstractObject(), initDate(*this), currentDate(initDate) 
     64         AbstractCalendar() 
     65            : AbstractObject(), initDate(*this), currentDate(initDate), tempo(Hour) 
    6066         {/* Ne rien faire de plus */} 
    6167 
    6268         AbstractCalendar(const string& _id, int yr = 0, int mth = 1, int d = 1, int hr = 0, int min = 0 , int sec = 0) 
    63             : AbstractObject(_id), initDate(*this, yr, mth, d, hr, min, sec), currentDate(initDate) 
     69            : AbstractObject(_id), initDate(*this, yr, mth, d, hr, min, sec), currentDate(initDate), tempo(Hour) 
    6470         {/* Ne rien faire de plus */} 
    6571 
    6672         AbstractCalendar(const string& _id, const string& dateStr) 
    67             : AbstractObject(_id), initDate(Date::FromString(dateStr, *this)), currentDate(initDate) 
     73            : AbstractObject(_id), initDate(Date::FromString(dateStr, *this)), currentDate(initDate), tempo(Hour) 
    6874         {/* Ne rien faire de plus */} 
    6975 
     
    7278         const Date initDate; 
    7379         Date currentDate; 
     80         Duration tempo; 
    7481 
    7582   }; // class AbstractCalendar 
  • XMLIO_V2/dev/dev_rv/src/XMLIO/abstract_data_treatment.hpp

    r123 r124  
    1111         { return (currentContext); } 
    1212 
    13          const std::vector<CFile*> getEnabledFiles(void) const 
     13         const std::vector<CFile*>& getEnabledFiles(void) const 
    1414         { return (enabledFiles); } 
    1515 
     
    2222         void printEnabledFilesId(std::ostream& out = std::clog) const 
    2323         { 
    24             out << "Liste des fichiers à sortir dans le contexte analysé nommé \"" << currentContext->getId() << "\"" << std::endl; 
    25             std::vector<std::string> __vect; getEnabledFilesId(__vect); 
     24            out << "Liste des fichiers à sortir dans le contexte analysé nommé \"" 
     25                << currentContext->getId() << "\"" << std::endl; 
     26 
     27            std::vector<std::string> __vect; 
     28            this->getEnabledFilesId(__vect); 
     29 
    2630            for (unsigned int i = 0; i < __vect.size(); i++) 
    2731               out << __vect[i] << "|"; 
    2832            out << "fin" << std::endl; 
    2933         } 
     34 
     35         template <class T> 
     36            bool writeData(const std::string& id, const T& arr) 
     37         { 
     38            const CField* const field_entry = CField::GetObject(id); 
     39            const vector<CField*>& vectRef = field_entry->getVectRefObject(); 
     40 
     41            std::vector<CField*>::const_iterator it; 
     42            for (it = vectRef.begin(); it != vectRef.end(); it++ ) 
     43            { 
     44               if ((*it)->isStorable(currentContext->getCalendar()->getCurrentDate())) 
     45               { // Stockage des données dans l'instance CField si nécessaire. 
     46                  Array<double, 1> data_uni; 
     47                  (*it)->getGrid()->storeField(arr, data_uni); 
     48                  (*it)->storeData(data_uni, currentContext->getCalendar()->getCurrentDate()); 
     49               } 
     50            } 
     51 
     52            return (false); 
     53         } 
     54         virtual void createDataOutput(void) = 0; 
    3055 
    3156         virtual ~AbstractDataTreatment() 
     
    3459      protected : 
    3560 
    36          AbstractDataTreatment(Context* const _ctxt) : currentContext(_ctxt), enabledFiles() 
     61         AbstractDataTreatment(Context* const _ctxt, const AbstractCalendar& cal) : enabledFiles(), currentContext(_ctxt) 
    3762         { 
    3863            //std::cout << "(Message temporaire) Résolution des héritages ..." << std::endl; 
     
    4671            // Recherche des champs à sortir (enable à true + niveau de sortie correct) pour chaque fichier précédemment listé. 
    4772            //std::cout << "(Message temporaire) Recherche des champs à sortir ..." << std::endl; 
    48             findAllEnabledFields(); 
     73            findAllEnabledFields(cal.getInitDate()); 
    4974 
    5075            // Résolution des références de grilles pour chacun des champs. 
     
    5580         } 
    5681 
     82         std::vector<CFile*> enabledFiles; // Liste des fichiers à créer dans un context donné. 
     83 
    5784      private : 
    5885 
    59          void findAllEnabledFields(void)// <- ajouter attribut par défault ici. 
     86         void findAllEnabledFields(const Date& iniDate)// <- ajouter attribut par défault ici. 
    6087         { 
    6188            for (unsigned int i = 0; i < enabledFiles.size(); i++) 
    62                enabledFiles[i]->findEnabledFields(); 
     89               enabledFiles[i]->findEnabledFields(iniDate); 
    6390         } 
    6491 
     
    82109         { 
    83110            const std::vector<CFile*>& allFiles = CFile::GetCurrentListObject().getVector(); 
     111 
    84112            for (unsigned int i = 0; i < allFiles.size(); i++) 
    85113               if (allFiles[i]->enabled.hasValue()) // Si l'attribut 'enabled' est défini. 
    86114                  if ((bool)allFiles[i]->enabled) // Si l'attribut 'enabled' est fixé à vrai. 
    87115                     enabledFiles.push_back ( allFiles[i] ); 
     116 
    88117            if (enabledFiles.size() == 0) 
    89118               WARNING("Aucun fichier ne va être sorti dans le contexte nommé \"" + currentContext->getId() + "\" !"); 
     
    91120 
    92121         Context* const currentContext; 
    93          std::vector<CFile*> enabledFiles; // Liste des fichiers à créer dans un context donné. 
    94122 
    95123   }; //class AbstractDataTreatment 
  • XMLIO_V2/dev/dev_rv/src/XMLIO/attribut_registrar.hpp

    r120 r124  
    2424         friend ostream& operator<< (ostream& out, const AttributRegistrar& c) 
    2525         { 
    26             for(unsigned int i = 0; i < c.attrList.getVectorSize(); i++) out << *c.attrList.getVector()[i]; 
     26            for(unsigned int i = 0; i < c.attrList.getVectorSize(); i++) 
     27               if (c.attrList.getVector()[i]->hasValue()) 
     28                  out << *c.attrList.getVector()[i]; 
    2729            return (out); 
    2830         } 
  • XMLIO_V2/dev/dev_rv/src/XMLIO/c_interface.cpp

    r123 r124  
    2323   try 
    2424   { 
    25       Array<double, 3> arr(3, 3, 3) ; // Les données. 
     25      Array<double, 3> arr(100, 100, 20) ; // Les données(les arguments en fonction des dimensions). 
    2626      string file("/local/XMLIOSERVER_DEV/dev_rv/test/iodef_simple_test.xml"); // Le fichier de définition. 
    2727      ifstream istr( file.c_str() , ifstream::in ); 
     
    3838      std::cout << " * ----------- Début du traitement ----------- * " << std::endl; 
    3939 
    40       //Affichage de la date initiale (pour vérification). 
    41       std::cout << *Context::GetObject("context1")->getCalendar() << std::endl; 
     40      { 
     41         // On crée une instance de traitement de données dans le format NetCDF4. 
     42         AbstractDataTreatment *dtreat = new NetCDF4DataTreatment(); 
     43         dtreat->createDataOutput(); 
    4244 
    43       // On crée une instance de traitement de données dans le format NetCDF4. 
    44       AbstractDataTreatment *dtreat = new NetCDF4DataTreatment(Context::GetObject("context1")); 
     45         // Récupération du calendrier assossié au context courant et initialisation des delais d'écriture. 
     46         AbstractCalendar* calendar = dtreat->getCurrentContext()->getCalendar(); 
     47         calendar->setTempo(1*Hour); 
    4548 
    46       NetCDF4DataOutput dop(CFile::GetObject("fichier1")); 
    47       dop.createFileAndHeader(); 
     49         //Affichage de la date initiale (pour vérification). 
     50         std::cout << *calendar << std::endl; 
    4851 
    49       for(int tcourant = 0, tfinal = 9; tcourant <= tfinal; tcourant++) 
    50       { 
    51          // Mise à jour de la date. 
     52         for(int tcourant = 0, tfinal = 9; tcourant <= tfinal; tcourant++) 
     53         { /***************************** BOUCLE DE CALCUL *****************************/ 
    5254 
     55            // Mise à jour de la date. 
     56            calendar->update(); 
    5357 
    54          // Mise à jour des données. 
    55          updateDataTest<Array<double, 3>::iterator>(arr.begin(), arr.end()); 
     58            std::cout << "> Itération de calcul " << tcourant << ",  " << *calendar << std::endl; 
    5659 
    57          // Ecriture des données. 
    58          // dtreat->writeData("Premier_champ", arr); 
     60            // Mise à jour des données. 
     61            updateDataTest<Array<double, 3>::iterator>(arr.begin(), arr.end()); 
    5962 
     63            // Ecriture des données. 
     64            dtreat->writeData<Array<double, 3> >("champ1", arr); 
     65 
     66         } 
     67 
     68         // On écrit l'arborescence résultante du traitement sur la sortie de log. 
     69         Context::ShowTree(std::clog); 
     70 
     71         delete dtreat; 
    6072      } 
    61  
    62       // On écrit l'arborescence résultante du traitement sur la sortie de log. 
    63       //Context::ShowTree(std::clog); 
    64  
    65       delete dtreat; 
    6673 
    6774   } 
  • XMLIO_V2/dev/dev_rv/src/XMLIO/calendar_utils.hpp

    r119 r124  
    190190   bool operator!=(const Date& dt0, const Date& dt1) { return !(dt1 == dt0); } 
    191191   bool operator> (const Date& dt0, const Date& dt1) { return (dt1 < dt0); } 
    192    bool operator>=(const Date& dt0, const Date& dt1) { return ((dt1 > dt0) || (dt1 == dt0)); } 
    193    bool operator<=(const Date& dt0, const Date& dt1) { return ((dt1 < dt0) || (dt1 == dt0)); } 
     192   bool operator>=(const Date& dt0, const Date& dt1) { return ((dt0 > dt1) || (dt1 == dt0)); } 
     193   bool operator<=(const Date& dt0, const Date& dt1) { return ((dt0 < dt1) || (dt1 == dt0)); } 
     194 
     195   Date& AbstractCalendar::update(void) 
     196   { return (getCurrentDate() = getCurrentDate() + tempo); } 
    194197 
    195198} // namespace XMLIOSERVER 
  • XMLIO_V2/dev/dev_rv/src/XMLIO/context.hpp

    r123 r124  
    5252            } 
    5353         } 
     54 
     55         static Context* GetCurrentContext(void) 
     56         { return (Context::GetObject(Context::GetCurrentContextId())); } 
    5457 
    5558         static void SetCurrentContext(const string& id) 
     
    150153         DomainDefinition * getDomainDefinition(void) const { return (this->domainDef); } 
    151154 
    152          void updateCurrentDate(const Duration* const dr = NULL) 
    153          { 
    154             static Duration dur = Hour; 
    155             if (dr != NULL) dur = *dr; 
    156             Date newCurrentDate = ccalendar->getCurrentDate() + dur; 
    157             ccalendar->getCurrentDate() = newCurrentDate; 
    158          } 
    159  
    160155         AbstractCalendar * getCalendar(void) const { return (this->ccalendar ); } 
    161156         AbstractCalendar * setCalendar(const string& _calName, const string& _dateStr) 
  • XMLIO_V2/dev/dev_rv/src/XMLIO/date.hpp

    r123 r124  
    6060         int getSecond(void) const { return (second); } 
    6161 
     62         void setYear  (int newyear)  { year  = newyear; } 
    6263         void setMonth (int newmonth) { month = newmonth; } 
    6364 
     
    6970         } 
    7071 
    71          void setYear  (int newyear)  { year  = newyear; } 
     72 
    7273 
    7374         const AbstractCalendar& getRelCalendar(void) const { return (relCalendar); } 
  • XMLIO_V2/dev/dev_rv/src/XMLIO/field.hpp

    r123 r124  
    88{ 
    99   class CGrid; // CGRID = CDOMAINE + CAXIS 
     10   class CFile; 
    1011 
    1112   class CField : public ObjectTemplate<CField>, public FieldAttribut 
     
    1314      public: 
    1415 
    15          CField(void) : ObjectTemplate<CField>(), FieldAttribut(), grid(NULL) 
     16         CField(void) : ObjectTemplate<CField>(), FieldAttribut(), lastStored(NULL), grid(NULL), file(NULL) 
    1617         {/* Ne rien faire de plus */} 
    17          CField(const string& _id) : ObjectTemplate<CField>(_id), FieldAttribut(), grid(NULL), foper(NULL) 
     18         CField(const string& _id) : ObjectTemplate<CField>(_id), FieldAttribut(), lastStored(NULL), grid(NULL), file(NULL) 
    1819         {/* Ne rien faire de plus */} 
    1920 
    2021         static string GetName(void) { return ("field"); } 
    2122 
    22          inline void SolveGridRef(void) ; 
     23         inline void solveGridRef(void) ; 
    2324 
    2425         const CGrid* getGrid(void) const { return (grid); } 
    2526         const Array<double, 1>& getData(void) const { return (data); } 
    26          const FieldOperation* getFieldOperation(void) const { return (foper); } 
     27 
     28         void initLastStoredDate(const Date& _newlastStored) 
     29         { if(lastStored == NULL) lastStored = new Date(_newlastStored); }; 
     30 
     31         bool isStorable(const Date& currDate) 
     32         { 
     33            if (lastStored == NULL) return (false); 
     34            if (freq_op.hasValue()) 
     35               return (currDate >= (*lastStored + (Duration)freq_op)); 
     36            return (true); 
     37         } 
     38 
     39         void storeData(const Array<double, 1> & arr, const Date& currDate) 
     40         { 
     41            *lastStored = currDate; 
     42            data.resize(shape(arr.size())) ; 
     43            data = arr; 
     44         } 
     45 
     46         const CFile* getRelFile(void) const { return (file); } 
     47         void setRelFile(CFile* _file) { file = _file; } 
    2748 
    2849         virtual CField* getReference(void) const 
     
    3657 
    3758         virtual ~CField(void) 
    38          { /* Ne rien faire de plus */ } 
     59         { if(lastStored !=  NULL) delete lastStored; } 
    3960 
    4061      private : 
    4162 
     63         Date* lastStored; 
     64 
    4265         CGrid* grid ; 
    43          FieldOperation* foper; 
    44          Array<double, 1> data; 
     66         CFile* file; 
     67 
     68         Array<double, 1>  data; 
    4569 
    4670   }; // class CField 
  • XMLIO_V2/dev/dev_rv/src/XMLIO/field_attribut.hpp

    r120 r124  
    1111         DECLARE_ATTR(description, string) ; 
    1212         DECLARE_ATTR(unit, string) ; 
    13          DECLARE_ATTR(operation, string); 
     13         DECLARE_ATTR(operation, FieldOperation); 
    1414 
    15          DECLARE_ATTR(freq_op, int) ; 
     15         DECLARE_ATTR(freq_op, Duration) ; 
    1616         DECLARE_ATTR(level, int) ; 
    1717         DECLARE_ATTR(prec, int) ; 
  • XMLIO_V2/dev/dev_rv/src/XMLIO/field_gridrefsolver.hpp

    r122 r124  
    44namespace XMLIOSERVER 
    55{ 
    6    void CField::SolveGridRef(void) 
     6   void CField::solveGridRef(void) 
    77   { 
    88      CDomain* domain = NULL; 
  • XMLIO_V2/dev/dev_rv/src/XMLIO/field_operation.hpp

    r123 r124  
    99      public : 
    1010 
    11          FieldOperation() : AbstractObject("Inst(X)") 
     11         FieldOperation(const string& _id = string("inst"), const Duration& _dr = Hour) 
     12            : AbstractObject(_id), freqOp(_dr) 
    1213         { /* Ne rien faire de plus */ } 
    1314 
    14          FieldOperation(const string& _id) : AbstractObject(_id) 
    15          { /* Ne rien faire de plus */ } 
     15         friend std::ostream& operator<<(std::ostream& out, const FieldOperation& fo) 
     16         { out << fo.getId(); return (out); } 
     17 
     18         friend std::istream& operator>>(std::istream& in, FieldOperation& fo) 
     19         { string __id; in >> __id; fo.setId(__id); return (in); } 
     20 
     21         const Duration& getFreqOp(void) const { return (freqOp); } 
     22         void setFreqOp(const Duration& _dr) { freqOp = _dr; } 
     23 
     24         //void getOutputField(const Array<double, 1>& inField, Array<double, 1>& outField) const 
     25 
     26         //void getStoreField(const Array<double, 1>& inField, Array<double, 1>& outField) const 
    1627 
    1728         virtual ~FieldOperation() 
     
    2334      private : 
    2435 
     36         Duration freqOp; 
     37 
    2538 
    2639   }; // class FieldOperation 
  • XMLIO_V2/dev/dev_rv/src/XMLIO/file.hpp

    r122 r124  
    3636         } 
    3737 
    38          const AbstractDataOutput* getDataOutput(void) const { return (output); } 
     38         AbstractDataOutput* getDataOutput(void) const { return (output); } 
    3939         void initializeDataOutput(AbstractDataOutput* _output) 
    4040         { 
     
    9696         } 
    9797 
    98          FieldGroup* getVirtualFieldGroup(void) { return (vfieldGroup); } 
     98         FieldGroup* getVirtualFieldGroup(void) const { return (vfieldGroup); } 
    9999 
    100          void findEnabledFields(int default_outputlevel = 5, int default_level = 1, bool default_enabled = true ) 
     100         void findEnabledFields(const Date& inidate, int default_outputlevel = 5, int default_level = 1, bool default_enabled = true ) 
    101101         { 
    102102            const int _outputlevel = (output_level.hasValue()) ? (int)output_level : default_outputlevel; 
     
    128128                  { enabledFields.erase(it); continue; } 
    129129               } 
     130 
     131               // Le champ est finalement actif, on ajoute la référence au champ de base. 
     132               (*it)->getBaseObject()->addRefObject(*it); 
     133               (*it)->setRelFile(this); 
     134               (*it)->initLastStoredDate(inidate); 
    130135            } 
    131136         } 
     
    134139         { 
    135140            for (unsigned int i = 0; i < enabledFields.size(); i++) 
    136                enabledFields[i]->SolveGridRef(); 
     141               enabledFields[i]->solveGridRef(); 
    137142         } 
    138143 
     
    147152         FieldGroup* vfieldGroup; // FieldGroup "virtuel" 
    148153         std::vector<CField*> enabledFields; // Liste des champs à sortie dans le fichier courant. 
     154 
    149155         AbstractDataOutput* output; // Gestion de la sortie des données. 
    150156 
  • XMLIO_V2/dev/dev_rv/src/XMLIO/grid.hpp

    r123 r124  
    3030         bool _hasAxis(void) const { return (hasAxis); } 
    3131 
    32          inline void storeField(const Array<double, 1>& field, Array<double, 1>& stored); 
    33          inline void storeField(const Array<double, 2>& field, Array<double, 1>& stored); 
    34          inline void storeField(const Array<double, 3>& field, Array<double, 1>& stored); 
    35          inline void storeField(const double* const data, Array<double, 1>& stored); 
    36  
    37          inline void outputField(const Array<double,1>& stored, Array<double, 2>& outField); 
    38          inline void outputField(const Array<double,1>& stored, Array<double, 3>& outField); 
     32         inline void storeField(const Array<double, 1>& field, Array<double, 1>& stored) const; 
     33         inline void storeField(const Array<double, 2>& field, Array<double, 1>& stored) const; 
     34         inline void storeField(const Array<double, 3>& field, Array<double, 1>& stored) const; 
     35         inline void storeField(const double* const data, Array<double, 1>& stored) const; 
     36 
     37         inline void outputField(const Array<double,1>& stored, Array<double, 2>& outField) const; 
     38         inline void outputField(const Array<double,1>& stored, Array<double, 3>& outField) const; 
    3939 
    4040         inline static CGrid* CreateObject(const CDomain* const a_domain, const CAxis* const a_axis); 
     
    207207   } 
    208208 
    209    void CGrid::storeField(const Array<double, 1>& field, Array<double, 1>& stored) 
     209   void CGrid::storeField(const Array<double, 1>& field, Array<double, 1>& stored) const 
    210210   { 
    211211      storeField(field.dataFirst(), stored) ; 
     
    213213   } 
    214214 
    215    void CGrid::storeField(const Array<double, 2>& field, Array<double, 1>& stored) 
     215   void CGrid::storeField(const Array<double, 2>& field, Array<double, 1>& stored) const 
    216216   { 
    217217      storeField(field.dataFirst(), stored) ; 
     
    219219   } 
    220220 
    221    void CGrid::storeField(const Array<double, 3>& field, Array<double, 1>& stored) 
     221   void CGrid::storeField(const Array<double, 3>& field, Array<double, 1>& stored) const 
    222222   { 
    223223      storeField(field.dataFirst(), stored) ; 
     
    225225   } 
    226226 
    227    void CGrid::storeField(const double* const data, Array<double, 1>& stored) 
     227   void CGrid::storeField(const double* const data, Array<double, 1>& stored) const 
    228228   { 
    229229      int size = storeIndex.size() ; 
     
    237237   } 
    238238 
    239    void CGrid::outputField(const Array<double, 1>& stored, Array<double, 2>& outField) 
     239   void CGrid::outputField(const Array<double, 1>& stored, Array<double, 2>& outField) const 
    240240   { 
    241241      for(int n = 0; n < storeIndex.size(); n++) 
     
    243243   } 
    244244 
    245    void CGrid::outputField(const Array<double, 1>& stored, Array<double, 3>& outField) 
     245   void CGrid::outputField(const Array<double, 1>& stored, Array<double, 3>& outField) const 
    246246   { 
    247247      for(int n = 0; n < storeIndex.size(); n++) 
  • XMLIO_V2/dev/dev_rv/src/XMLIO/object_template.hpp

    r122 r124  
    4343         string getName(void) const {return (T::GetName()); } 
    4444 
    45          const T* getBaseObject(void) const { return (baseObject); } 
     45         T* getBaseObject(void) const { return (baseObject); } 
    4646 
    4747         virtual T* getReference(void) const { return (NULL); } 
     48 
     49         const vector<T*>& getVectRefObject(void) const { return (refObject); } 
     50 
     51         bool hasRefObject(void) { return (!refObject.empty()); } 
     52 
     53         const T* addRefObject(T* obj) 
     54         { refObject.push_back (obj); return (obj); } 
    4855 
    4956         virtual bool hasChild(void) const { return (false); } 
     
    7885            // Rien à faire. 
    7986         } 
     87 
     88      public : /* static */ 
    8089 
    8190         static T* CreateObject(const string& _id) throw (XMLIOUndefinedValueException) 
     
    119128      protected : 
    120129 
    121          ObjectTemplate(void) : AbstractObject(), baseObject(NULL) 
     130         ObjectTemplate(void) : AbstractObject(), baseObject(NULL), refObject() 
    122131         {/* Ne rien faire de plus */} 
    123          ObjectTemplate(const string& _id) : AbstractObject(_id), baseObject(NULL) 
     132         ObjectTemplate(const string& _id) : AbstractObject(_id), baseObject(NULL), refObject() 
    124133         {/* Ne rien faire de plus */} 
    125134 
     
    145154      private : 
    146155         T* baseObject; 
     156         vector<T*> refObject; 
    147157 
    148158         static string CurrContext; 
  • XMLIO_V2/dev/dev_rv/src/XMLIO/xmlio.hpp

    r123 r124  
    77#include <cmath> 
    88 
     9 
     10// Conteneurs. 
    911#include <vector> 
    1012#include <set> 
    1113 
     14//Flux. 
    1215#include <iostream> 
    1316#include <fstream> 
     
    5457#include "object_template.hpp" 
    5558 
     59// Traitement des opérations sur les champs 
     60#include "field_operation.hpp" 
     61 
    5662// Gestion des attributs des objets. 
    5763#include "grid_attribut.hpp" 
     
    6066#include "field_attribut.hpp" 
    6167#include "file_attribut.hpp" 
    62  
    63 // Traitement des opérations sur les champs 
    64 #include "field_operation.hpp" 
    6568 
    6669#include "group_template.hpp" 
     
    7477#include "file.hpp" 
    7578 
    76 // Résolution des références aux grilles pour les champs. 
    77 #include "field_gridrefsolver.hpp" 
    78  
    7979//.... 
    8080#include "context.hpp" 
    8181#include "xml_parser.hpp" 
    8282 
     83// Résolution des références aux grilles pour les champs. 
     84#include "field_gridrefsolver.hpp" 
    8385 
    8486// Gestion de l'écriture des données NetCDF 
     
    8991#include "NetCDF4_data_treatment.hpp" 
    9092 
     93 
     94 
    9195#endif // __XMLIO__ 
Note: See TracChangeset for help on using the changeset viewer.