Index: /XMLIO_V2/dev/dev_rv/src/XMLIO/NetCDF4_data_output.hpp
===================================================================
--- /XMLIO_V2/dev/dev_rv/src/XMLIO/NetCDF4_data_output.hpp	(revision 123)
+++ /XMLIO_V2/dev/dev_rv/src/XMLIO/NetCDF4_data_output.hpp	(revision 124)
@@ -150,10 +150,29 @@
             for ( it = enabledFields.begin() ; it != enabledFields.end(); it++ )
             {
-               const CField* field = (*it);
+               CField* field = (*it);
                const CField* bfield = (*it)->getBaseObject();
 
                lonlat = !field->getGrid()->_hasAxis();
+
                if (field->operation.hasValue())
-                  if (string(field->operation).compare("once") == 0) wtime = false;
+               { // Si une opÃ©ration sur le champ est dÃ©finie ...
+                  if (field->operation.getId().compare("once") == 0)
+                  {
+                     wtime = false;
+                     field->freq_op.setValue(NoneDu);
+                  }
+               }
+               else
+               { // Si aucune opÃ©ration sur le champ n'est dÃ©finie ...
+                  FieldOperation ope("inst");
+                  field->operation.setValue(ope);
+               }
+
+               // Si la frÃ©quence d'opÃ©ration n'est pas dÃ©finie, on l'initialise Ã  0s.
+               // Une frÃ©quence Ã  0s signifie que l'opÃ©ration se fera Ã  chaque Ã©criture de donnÃ©es depuis la simulation.
+               if (!field->freq_op.hasValue())
+                  field->freq_op.setValue(NoneDu);
+               ((FieldOperation)field->operation).setFreqOp(Duration(field->freq_op));
+
 
                tvar = ncFloat;
Index: /XMLIO_V2/dev/dev_rv/src/XMLIO/NetCDF4_data_treatment.hpp
===================================================================
--- /XMLIO_V2/dev/dev_rv/src/XMLIO/NetCDF4_data_treatment.hpp	(revision 123)
+++ /XMLIO_V2/dev/dev_rv/src/XMLIO/NetCDF4_data_treatment.hpp	(revision 124)
@@ -8,6 +8,17 @@
       public :
 
-         NetCDF4DataTreatment(Context* const _ctxt) : AbstractDataTreatment(_ctxt)
+         NetCDF4DataTreatment(Context* const _ctxt = Context::GetCurrentContext()) : AbstractDataTreatment(_ctxt, *_ctxt->getCalendar())
          { /* Ne rien faire de plus */ }
+
+         virtual void createDataOutput(void)
+         {
+            for (unsigned int i = 0; i < enabledFiles.size(); i++)
+            {
+               // Initialisation des instances de sortie de donnÃ©es.
+               enabledFiles[i]->initializeDataOutput(new NetCDF4DataOutput(enabledFiles[i]));
+               // Ouverture des fichiers et crÃ©ation des entÃªtes.
+               enabledFiles[i]->getDataOutput()->createFileAndHeader();
+            }
+         }
 
          virtual ~NetCDF4DataTreatment()
Index: /XMLIO_V2/dev/dev_rv/src/XMLIO/abstract_calendar.hpp
===================================================================
--- /XMLIO_V2/dev/dev_rv/src/XMLIO/abstract_calendar.hpp	(revision 123)
+++ /XMLIO_V2/dev/dev_rv/src/XMLIO/abstract_calendar.hpp	(revision 124)
@@ -20,4 +20,12 @@
          friend std::ostream& operator<<(std::ostream& out, AbstractCalendar& c)
          { out << "[type: " << c.getId() << ", start: " << c.getInitDate() << ", current: " << c.getCurrentDate() << "]"; return (out); }
+
+         const Date& getInitDate(void) const { return(initDate); }
+         Date& getCurrentDate(void) { return(currentDate); }
+
+         void setTempo(const Duration& dr) { tempo = dr; }
+         Duration getTempo(void) const { return (tempo); }
+
+         Date& update(void);
 
          virtual int getYearTotalLength(const Date& d) const { return (365 * 86400); } // Retourne la durÃ©e d'une annÃ©e en seconde.
@@ -49,7 +57,4 @@
          { string value = getMonthName(_mi); value.resize(3); return (value); }
 
-         const Date& getInitDate(void) const { return(initDate); }
-         Date& getCurrentDate(void) { return(currentDate); }
-
          virtual ~AbstractCalendar()
          {/* Ne rien faire de plus */}
@@ -57,13 +62,14 @@
       protected :
 
-         AbstractCalendar() : AbstractObject(), initDate(*this), currentDate(initDate)
+         AbstractCalendar()
+            : AbstractObject(), initDate(*this), currentDate(initDate), tempo(Hour)
          {/* Ne rien faire de plus */}
 
          AbstractCalendar(const string& _id, int yr = 0, int mth = 1, int d = 1, int hr = 0, int min = 0 , int sec = 0)
-            : AbstractObject(_id), initDate(*this, yr, mth, d, hr, min, sec), currentDate(initDate)
+            : AbstractObject(_id), initDate(*this, yr, mth, d, hr, min, sec), currentDate(initDate), tempo(Hour)
          {/* Ne rien faire de plus */}
 
          AbstractCalendar(const string& _id, const string& dateStr)
-            : AbstractObject(_id), initDate(Date::FromString(dateStr, *this)), currentDate(initDate)
+            : AbstractObject(_id), initDate(Date::FromString(dateStr, *this)), currentDate(initDate), tempo(Hour)
          {/* Ne rien faire de plus */}
 
@@ -72,4 +78,5 @@
          const Date initDate;
          Date currentDate;
+         Duration tempo;
 
    }; // class AbstractCalendar
Index: /XMLIO_V2/dev/dev_rv/src/XMLIO/abstract_data_treatment.hpp
===================================================================
--- /XMLIO_V2/dev/dev_rv/src/XMLIO/abstract_data_treatment.hpp	(revision 123)
+++ /XMLIO_V2/dev/dev_rv/src/XMLIO/abstract_data_treatment.hpp	(revision 124)
@@ -11,5 +11,5 @@
          { return (currentContext); }
 
-         const std::vector<CFile*> getEnabledFiles(void) const
+         const std::vector<CFile*>& getEnabledFiles(void) const
          { return (enabledFiles); }
 
@@ -22,10 +22,35 @@
          void printEnabledFilesId(std::ostream& out = std::clog) const
          {
-            out << "Liste des fichiers Ã  sortir dans le contexte analysÃ© nommÃ© \"" << currentContext->getId() << "\"" << std::endl;
-            std::vector<std::string> __vect; getEnabledFilesId(__vect);
+            out << "Liste des fichiers Ã  sortir dans le contexte analysÃ© nommÃ© \""
+                << currentContext->getId() << "\"" << std::endl;
+
+            std::vector<std::string> __vect;
+            this->getEnabledFilesId(__vect);
+
             for (unsigned int i = 0; i < __vect.size(); i++)
                out << __vect[i] << "|";
             out << "fin" << std::endl;
          }
+
+         template <class T>
+            bool writeData(const std::string& id, const T& arr)
+         {
+            const CField* const field_entry = CField::GetObject(id);
+            const vector<CField*>& vectRef = field_entry->getVectRefObject();
+
+            std::vector<CField*>::const_iterator it;
+            for (it = vectRef.begin(); it != vectRef.end(); it++ )
+            {
+               if ((*it)->isStorable(currentContext->getCalendar()->getCurrentDate()))
+               { // Stockage des donnÃ©es dans l'instance CField si nÃ©cessaire.
+                  Array<double, 1> data_uni;
+                  (*it)->getGrid()->storeField(arr, data_uni);
+                  (*it)->storeData(data_uni, currentContext->getCalendar()->getCurrentDate());
+               }
+            }
+
+            return (false);
+         }
+         virtual void createDataOutput(void) = 0;
 
          virtual ~AbstractDataTreatment()
@@ -34,5 +59,5 @@
       protected :
 
-         AbstractDataTreatment(Context* const _ctxt) : currentContext(_ctxt), enabledFiles()
+         AbstractDataTreatment(Context* const _ctxt, const AbstractCalendar& cal) : enabledFiles(), currentContext(_ctxt)
          {
             //std::cout << "(Message temporaire) RÃ©solution des hÃ©ritages ..." << std::endl;
@@ -46,5 +71,5 @@
             // Recherche des champs Ã  sortir (enable Ã  true + niveau de sortie correct) pour chaque fichier prÃ©cÃ©demment listÃ©.
             //std::cout << "(Message temporaire) Recherche des champs Ã  sortir ..." << std::endl;
-            findAllEnabledFields();
+            findAllEnabledFields(cal.getInitDate());
 
             // RÃ©solution des rÃ©fÃ©rences de grilles pour chacun des champs.
@@ -55,10 +80,12 @@
          }
 
+         std::vector<CFile*> enabledFiles; // Liste des fichiers Ã  crÃ©er dans un context donnÃ©.
+
       private :
 
-         void findAllEnabledFields(void)// <- ajouter attribut par dÃ©fault ici.
+         void findAllEnabledFields(const Date& iniDate)// <- ajouter attribut par dÃ©fault ici.
          {
             for (unsigned int i = 0; i < enabledFiles.size(); i++)
-               enabledFiles[i]->findEnabledFields();
+               enabledFiles[i]->findEnabledFields(iniDate);
          }
 
@@ -82,8 +109,10 @@
          {
             const std::vector<CFile*>& allFiles = CFile::GetCurrentListObject().getVector();
+
             for (unsigned int i = 0; i < allFiles.size(); i++)
                if (allFiles[i]->enabled.hasValue()) // Si l'attribut 'enabled' est dÃ©fini.
                   if ((bool)allFiles[i]->enabled) // Si l'attribut 'enabled' est fixÃ© Ã  vrai.
                      enabledFiles.push_back ( allFiles[i] );
+
             if (enabledFiles.size() == 0)
                WARNING("Aucun fichier ne va Ãªtre sorti dans le contexte nommÃ© \"" + currentContext->getId() + "\" !");
@@ -91,5 +120,4 @@
 
          Context* const currentContext;
-         std::vector<CFile*> enabledFiles; // Liste des fichiers Ã  crÃ©er dans un context donnÃ©.
 
    }; //class AbstractDataTreatment
Index: /XMLIO_V2/dev/dev_rv/src/XMLIO/attribut_registrar.hpp
===================================================================
--- /XMLIO_V2/dev/dev_rv/src/XMLIO/attribut_registrar.hpp	(revision 123)
+++ /XMLIO_V2/dev/dev_rv/src/XMLIO/attribut_registrar.hpp	(revision 124)
@@ -24,5 +24,7 @@
          friend ostream& operator<< (ostream& out, const AttributRegistrar& c)
          {
-            for(unsigned int i = 0; i < c.attrList.getVectorSize(); i++) out << *c.attrList.getVector()[i];
+            for(unsigned int i = 0; i < c.attrList.getVectorSize(); i++)
+               if (c.attrList.getVector()[i]->hasValue())
+                  out << *c.attrList.getVector()[i];
             return (out);
          }
Index: /XMLIO_V2/dev/dev_rv/src/XMLIO/c_interface.cpp
===================================================================
--- /XMLIO_V2/dev/dev_rv/src/XMLIO/c_interface.cpp	(revision 123)
+++ /XMLIO_V2/dev/dev_rv/src/XMLIO/c_interface.cpp	(revision 124)
@@ -23,5 +23,5 @@
    try
    {
-      Array<double, 3> arr(3, 3, 3) ; // Les donnÃ©es.
+      Array<double, 3> arr(100, 100, 20) ; // Les donnÃ©es(les arguments en fonction des dimensions).
       string file("/local/XMLIOSERVER_DEV/dev_rv/test/iodef_simple_test.xml"); // Le fichier de dÃ©finition.
       ifstream istr( file.c_str() , ifstream::in );
@@ -38,30 +38,37 @@
       std::cout << " * ----------- DÃ©but du traitement ----------- * " << std::endl;
 
-      //Affichage de la date initiale (pour vÃ©rification).
-      std::cout << *Context::GetObject("context1")->getCalendar() << std::endl;
+      {
+         // On crÃ©e une instance de traitement de donnÃ©es dans le format NetCDF4.
+         AbstractDataTreatment *dtreat = new NetCDF4DataTreatment();
+         dtreat->createDataOutput();
 
-      // On crÃ©e une instance de traitement de donnÃ©es dans le format NetCDF4.
-      AbstractDataTreatment *dtreat = new NetCDF4DataTreatment(Context::GetObject("context1"));
+         // RÃ©cupÃ©ration du calendrier assossiÃ© au context courant et initialisation des delais d'Ã©criture.
+         AbstractCalendar* calendar = dtreat->getCurrentContext()->getCalendar();
+         calendar->setTempo(1*Hour);
 
-      NetCDF4DataOutput dop(CFile::GetObject("fichier1"));
-      dop.createFileAndHeader();
+         //Affichage de la date initiale (pour vÃ©rification).
+         std::cout << *calendar << std::endl;
 
-      for(int tcourant = 0, tfinal = 9; tcourant <= tfinal; tcourant++)
-      {
-         // Mise Ã  jour de la date.
+         for(int tcourant = 0, tfinal = 9; tcourant <= tfinal; tcourant++)
+         { /***************************** BOUCLE DE CALCUL *****************************/
 
+            // Mise Ã  jour de la date.
+            calendar->update();
 
-         // Mise Ã  jour des donnÃ©es.
-         updateDataTest<Array<double, 3>::iterator>(arr.begin(), arr.end());
+            std::cout << "> ItÃ©ration de calcul " << tcourant << ",  " << *calendar << std::endl;
 
-         // Ecriture des donnÃ©es.
-         // dtreat->writeData("Premier_champ", arr);
+            // Mise Ã  jour des donnÃ©es.
+            updateDataTest<Array<double, 3>::iterator>(arr.begin(), arr.end());
 
+            // Ecriture des donnÃ©es.
+            dtreat->writeData<Array<double, 3> >("champ1", arr);
+
+         }
+
+         // On Ã©crit l'arborescence rÃ©sultante du traitement sur la sortie de log.
+         Context::ShowTree(std::clog);
+
+         delete dtreat;
       }
-
-      // On Ã©crit l'arborescence rÃ©sultante du traitement sur la sortie de log.
-      //Context::ShowTree(std::clog);
-
-      delete dtreat;
 
    }
Index: /XMLIO_V2/dev/dev_rv/src/XMLIO/calendar_utils.hpp
===================================================================
--- /XMLIO_V2/dev/dev_rv/src/XMLIO/calendar_utils.hpp	(revision 123)
+++ /XMLIO_V2/dev/dev_rv/src/XMLIO/calendar_utils.hpp	(revision 124)
@@ -190,6 +190,9 @@
    bool operator!=(const Date& dt0, const Date& dt1) { return !(dt1 == dt0); }
    bool operator> (const Date& dt0, const Date& dt1) { return (dt1 < dt0); }
-   bool operator>=(const Date& dt0, const Date& dt1) { return ((dt1 > dt0) || (dt1 == dt0)); }
-   bool operator<=(const Date& dt0, const Date& dt1) { return ((dt1 < dt0) || (dt1 == dt0)); }
+   bool operator>=(const Date& dt0, const Date& dt1) { return ((dt0 > dt1) || (dt1 == dt0)); }
+   bool operator<=(const Date& dt0, const Date& dt1) { return ((dt0 < dt1) || (dt1 == dt0)); }
+
+   Date& AbstractCalendar::update(void)
+   { return (getCurrentDate() = getCurrentDate() + tempo); }
 
 } // namespace XMLIOSERVER
Index: /XMLIO_V2/dev/dev_rv/src/XMLIO/context.hpp
===================================================================
--- /XMLIO_V2/dev/dev_rv/src/XMLIO/context.hpp	(revision 123)
+++ /XMLIO_V2/dev/dev_rv/src/XMLIO/context.hpp	(revision 124)
@@ -52,4 +52,7 @@
             }
          }
+
+         static Context* GetCurrentContext(void)
+         { return (Context::GetObject(Context::GetCurrentContextId())); }
 
          static void SetCurrentContext(const string& id)
@@ -150,12 +153,4 @@
          DomainDefinition * getDomainDefinition(void) const { return (this->domainDef); }
 
-         void updateCurrentDate(const Duration* const dr = NULL)
-         {
-            static Duration dur = Hour;
-            if (dr != NULL) dur = *dr;
-            Date newCurrentDate = ccalendar->getCurrentDate() + dur;
-            ccalendar->getCurrentDate() = newCurrentDate;
-         }
-
          AbstractCalendar * getCalendar(void) const { return (this->ccalendar ); }
          AbstractCalendar * setCalendar(const string& _calName, const string& _dateStr)
Index: /XMLIO_V2/dev/dev_rv/src/XMLIO/date.hpp
===================================================================
--- /XMLIO_V2/dev/dev_rv/src/XMLIO/date.hpp	(revision 123)
+++ /XMLIO_V2/dev/dev_rv/src/XMLIO/date.hpp	(revision 124)
@@ -60,4 +60,5 @@
          int getSecond(void) const { return (second); }
 
+         void setYear  (int newyear)  { year  = newyear; }
          void setMonth (int newmonth) { month = newmonth; }
 
@@ -69,5 +70,5 @@
          }
 
-         void setYear  (int newyear)  { year  = newyear; }
+
 
          const AbstractCalendar& getRelCalendar(void) const { return (relCalendar); }
Index: /XMLIO_V2/dev/dev_rv/src/XMLIO/field.hpp
===================================================================
--- /XMLIO_V2/dev/dev_rv/src/XMLIO/field.hpp	(revision 123)
+++ /XMLIO_V2/dev/dev_rv/src/XMLIO/field.hpp	(revision 124)
@@ -8,4 +8,5 @@
 {
    class CGrid; // CGRID = CDOMAINE + CAXIS
+   class CFile;
 
    class CField : public ObjectTemplate<CField>, public FieldAttribut
@@ -13,16 +14,36 @@
       public:
 
-         CField(void) : ObjectTemplate<CField>(), FieldAttribut(), grid(NULL)
+         CField(void) : ObjectTemplate<CField>(), FieldAttribut(), lastStored(NULL), grid(NULL), file(NULL)
          {/* Ne rien faire de plus */}
-         CField(const string& _id) : ObjectTemplate<CField>(_id), FieldAttribut(), grid(NULL), foper(NULL)
+         CField(const string& _id) : ObjectTemplate<CField>(_id), FieldAttribut(), lastStored(NULL), grid(NULL), file(NULL)
          {/* Ne rien faire de plus */}
 
          static string GetName(void) { return ("field"); }
 
-         inline void SolveGridRef(void) ;
+         inline void solveGridRef(void) ;
 
          const CGrid* getGrid(void) const { return (grid); }
          const Array<double, 1>& getData(void) const { return (data); }
-         const FieldOperation* getFieldOperation(void) const { return (foper); }
+
+         void initLastStoredDate(const Date& _newlastStored)
+         { if(lastStored == NULL) lastStored = new Date(_newlastStored); };
+
+         bool isStorable(const Date& currDate)
+         {
+            if (lastStored == NULL) return (false);
+            if (freq_op.hasValue())
+               return (currDate >= (*lastStored + (Duration)freq_op));
+            return (true);
+         }
+
+         void storeData(const Array<double, 1> & arr, const Date& currDate)
+         {
+            *lastStored = currDate;
+            data.resize(shape(arr.size())) ;
+            data = arr;
+         }
+
+         const CFile* getRelFile(void) const { return (file); }
+         void setRelFile(CFile* _file) { file = _file; }
 
          virtual CField* getReference(void) const
@@ -36,11 +57,14 @@
 
          virtual ~CField(void)
-         { /* Ne rien faire de plus */ }
+         { if(lastStored !=  NULL) delete lastStored; }
 
       private :
 
+         Date* lastStored;
+
          CGrid* grid ;
-         FieldOperation* foper;
-         Array<double, 1> data;
+         CFile* file;
+
+         Array<double, 1>  data;
 
    }; // class CField
Index: /XMLIO_V2/dev/dev_rv/src/XMLIO/field_attribut.hpp
===================================================================
--- /XMLIO_V2/dev/dev_rv/src/XMLIO/field_attribut.hpp	(revision 123)
+++ /XMLIO_V2/dev/dev_rv/src/XMLIO/field_attribut.hpp	(revision 124)
@@ -11,7 +11,7 @@
          DECLARE_ATTR(description, string) ;
          DECLARE_ATTR(unit, string) ;
-         DECLARE_ATTR(operation, string);
+         DECLARE_ATTR(operation, FieldOperation);
 
-         DECLARE_ATTR(freq_op, int) ;
+         DECLARE_ATTR(freq_op, Duration) ;
          DECLARE_ATTR(level, int) ;
          DECLARE_ATTR(prec, int) ;
Index: /XMLIO_V2/dev/dev_rv/src/XMLIO/field_gridrefsolver.hpp
===================================================================
--- /XMLIO_V2/dev/dev_rv/src/XMLIO/field_gridrefsolver.hpp	(revision 123)
+++ /XMLIO_V2/dev/dev_rv/src/XMLIO/field_gridrefsolver.hpp	(revision 124)
@@ -4,5 +4,5 @@
 namespace XMLIOSERVER
 {
-   void CField::SolveGridRef(void)
+   void CField::solveGridRef(void)
    {
       CDomain* domain = NULL;
Index: /XMLIO_V2/dev/dev_rv/src/XMLIO/field_operation.hpp
===================================================================
--- /XMLIO_V2/dev/dev_rv/src/XMLIO/field_operation.hpp	(revision 123)
+++ /XMLIO_V2/dev/dev_rv/src/XMLIO/field_operation.hpp	(revision 124)
@@ -9,9 +9,20 @@
       public :
 
-         FieldOperation() : AbstractObject("Inst(X)")
+         FieldOperation(const string& _id = string("inst"), const Duration& _dr = Hour)
+            : AbstractObject(_id), freqOp(_dr)
          { /* Ne rien faire de plus */ }
 
-         FieldOperation(const string& _id) : AbstractObject(_id)
-         { /* Ne rien faire de plus */ }
+         friend std::ostream& operator<<(std::ostream& out, const FieldOperation& fo)
+         { out << fo.getId(); return (out); }
+
+         friend std::istream& operator>>(std::istream& in, FieldOperation& fo)
+         { string __id; in >> __id; fo.setId(__id); return (in); }
+
+         const Duration& getFreqOp(void) const { return (freqOp); }
+         void setFreqOp(const Duration& _dr) { freqOp = _dr; }
+
+         //void getOutputField(const Array<double, 1>& inField, Array<double, 1>& outField) const
+
+         //void getStoreField(const Array<double, 1>& inField, Array<double, 1>& outField) const
 
          virtual ~FieldOperation()
@@ -23,4 +34,6 @@
       private :
 
+         Duration freqOp;
+
 
    }; // class FieldOperation
Index: /XMLIO_V2/dev/dev_rv/src/XMLIO/file.hpp
===================================================================
--- /XMLIO_V2/dev/dev_rv/src/XMLIO/file.hpp	(revision 123)
+++ /XMLIO_V2/dev/dev_rv/src/XMLIO/file.hpp	(revision 124)
@@ -36,5 +36,5 @@
          }
 
-         const AbstractDataOutput* getDataOutput(void) const { return (output); }
+         AbstractDataOutput* getDataOutput(void) const { return (output); }
          void initializeDataOutput(AbstractDataOutput* _output)
          {
@@ -96,7 +96,7 @@
          }
 
-         FieldGroup* getVirtualFieldGroup(void) { return (vfieldGroup); }
+         FieldGroup* getVirtualFieldGroup(void) const { return (vfieldGroup); }
 
-         void findEnabledFields(int default_outputlevel = 5, int default_level = 1, bool default_enabled = true )
+         void findEnabledFields(const Date& inidate, int default_outputlevel = 5, int default_level = 1, bool default_enabled = true )
          {
             const int _outputlevel = (output_level.hasValue()) ? (int)output_level : default_outputlevel;
@@ -128,4 +128,9 @@
                   { enabledFields.erase(it); continue; }
                }
+
+               // Le champ est finalement actif, on ajoute la rÃ©fÃ©rence au champ de base.
+               (*it)->getBaseObject()->addRefObject(*it);
+               (*it)->setRelFile(this);
+               (*it)->initLastStoredDate(inidate);
             }
          }
@@ -134,5 +139,5 @@
          {
             for (unsigned int i = 0; i < enabledFields.size(); i++)
-               enabledFields[i]->SolveGridRef();
+               enabledFields[i]->solveGridRef();
          }
 
@@ -147,4 +152,5 @@
          FieldGroup* vfieldGroup; // FieldGroup "virtuel"
          std::vector<CField*> enabledFields; // Liste des champs Ã  sortie dans le fichier courant.
+
          AbstractDataOutput* output; // Gestion de la sortie des donnÃ©es.
 
Index: /XMLIO_V2/dev/dev_rv/src/XMLIO/grid.hpp
===================================================================
--- /XMLIO_V2/dev/dev_rv/src/XMLIO/grid.hpp	(revision 123)
+++ /XMLIO_V2/dev/dev_rv/src/XMLIO/grid.hpp	(revision 124)
@@ -30,11 +30,11 @@
          bool _hasAxis(void) const { return (hasAxis); }
 
-         inline void storeField(const Array<double, 1>& field, Array<double, 1>& stored);
-         inline void storeField(const Array<double, 2>& field, Array<double, 1>& stored);
-         inline void storeField(const Array<double, 3>& field, Array<double, 1>& stored);
-         inline void storeField(const double* const data, Array<double, 1>& stored);
-
-         inline void outputField(const Array<double,1>& stored, Array<double, 2>& outField);
-         inline void outputField(const Array<double,1>& stored, Array<double, 3>& outField);
+         inline void storeField(const Array<double, 1>& field, Array<double, 1>& stored) const;
+         inline void storeField(const Array<double, 2>& field, Array<double, 1>& stored) const;
+         inline void storeField(const Array<double, 3>& field, Array<double, 1>& stored) const;
+         inline void storeField(const double* const data, Array<double, 1>& stored) const;
+
+         inline void outputField(const Array<double,1>& stored, Array<double, 2>& outField) const;
+         inline void outputField(const Array<double,1>& stored, Array<double, 3>& outField) const;
 
          inline static CGrid* CreateObject(const CDomain* const a_domain, const CAxis* const a_axis);
@@ -207,5 +207,5 @@
    }
 
-   void CGrid::storeField(const Array<double, 1>& field, Array<double, 1>& stored)
+   void CGrid::storeField(const Array<double, 1>& field, Array<double, 1>& stored) const
    {
       storeField(field.dataFirst(), stored) ;
@@ -213,5 +213,5 @@
    }
 
-   void CGrid::storeField(const Array<double, 2>& field, Array<double, 1>& stored)
+   void CGrid::storeField(const Array<double, 2>& field, Array<double, 1>& stored) const
    {
       storeField(field.dataFirst(), stored) ;
@@ -219,5 +219,5 @@
    }
 
-   void CGrid::storeField(const Array<double, 3>& field, Array<double, 1>& stored)
+   void CGrid::storeField(const Array<double, 3>& field, Array<double, 1>& stored) const
    {
       storeField(field.dataFirst(), stored) ;
@@ -225,5 +225,5 @@
    }
 
-   void CGrid::storeField(const double* const data, Array<double, 1>& stored)
+   void CGrid::storeField(const double* const data, Array<double, 1>& stored) const
    {
       int size = storeIndex.size() ;
@@ -237,5 +237,5 @@
    }
 
-   void CGrid::outputField(const Array<double, 1>& stored, Array<double, 2>& outField)
+   void CGrid::outputField(const Array<double, 1>& stored, Array<double, 2>& outField) const
    {
       for(int n = 0; n < storeIndex.size(); n++)
@@ -243,5 +243,5 @@
    }
 
-   void CGrid::outputField(const Array<double, 1>& stored, Array<double, 3>& outField)
+   void CGrid::outputField(const Array<double, 1>& stored, Array<double, 3>& outField) const
    {
       for(int n = 0; n < storeIndex.size(); n++)
Index: /XMLIO_V2/dev/dev_rv/src/XMLIO/object_template.hpp
===================================================================
--- /XMLIO_V2/dev/dev_rv/src/XMLIO/object_template.hpp	(revision 123)
+++ /XMLIO_V2/dev/dev_rv/src/XMLIO/object_template.hpp	(revision 124)
@@ -43,7 +43,14 @@
          string getName(void) const {return (T::GetName()); }
 
-         const T* getBaseObject(void) const { return (baseObject); }
+         T* getBaseObject(void) const { return (baseObject); }
 
          virtual T* getReference(void) const { return (NULL); }
+
+         const vector<T*>& getVectRefObject(void) const { return (refObject); }
+
+         bool hasRefObject(void) { return (!refObject.empty()); }
+
+         const T* addRefObject(T* obj)
+         { refObject.push_back (obj); return (obj); }
 
          virtual bool hasChild(void) const { return (false); }
@@ -78,4 +85,6 @@
             // Rien Ã  faire.
          }
+
+      public : /* static */
 
          static T* CreateObject(const string& _id) throw (XMLIOUndefinedValueException)
@@ -119,7 +128,7 @@
       protected :
 
-         ObjectTemplate(void) : AbstractObject(), baseObject(NULL)
+         ObjectTemplate(void) : AbstractObject(), baseObject(NULL), refObject()
          {/* Ne rien faire de plus */}
-         ObjectTemplate(const string& _id) : AbstractObject(_id), baseObject(NULL)
+         ObjectTemplate(const string& _id) : AbstractObject(_id), baseObject(NULL), refObject()
          {/* Ne rien faire de plus */}
 
@@ -145,4 +154,5 @@
       private :
          T* baseObject;
+         vector<T*> refObject;
 
          static string CurrContext;
Index: /XMLIO_V2/dev/dev_rv/src/XMLIO/xmlio.hpp
===================================================================
--- /XMLIO_V2/dev/dev_rv/src/XMLIO/xmlio.hpp	(revision 123)
+++ /XMLIO_V2/dev/dev_rv/src/XMLIO/xmlio.hpp	(revision 124)
@@ -7,7 +7,10 @@
 #include <cmath>
 
+
+// Conteneurs.
 #include <vector>
 #include <set>
 
+//Flux.
 #include <iostream>
 #include <fstream>
@@ -54,4 +57,7 @@
 #include "object_template.hpp"
 
+// Traitement des opÃ©rations sur les champs
+#include "field_operation.hpp"
+
 // Gestion des attributs des objets.
 #include "grid_attribut.hpp"
@@ -60,7 +66,4 @@
 #include "field_attribut.hpp"
 #include "file_attribut.hpp"
-
-// Traitement des opÃ©rations sur les champs
-#include "field_operation.hpp"
 
 #include "group_template.hpp"
@@ -74,11 +77,10 @@
 #include "file.hpp"
 
-// RÃ©solution des rÃ©fÃ©rences aux grilles pour les champs.
-#include "field_gridrefsolver.hpp"
-
 //....
 #include "context.hpp"
 #include "xml_parser.hpp"
 
+// RÃ©solution des rÃ©fÃ©rences aux grilles pour les champs.
+#include "field_gridrefsolver.hpp"
 
 // Gestion de l'Ã©criture des donnÃ©es NetCDF
@@ -89,3 +91,5 @@
 #include "NetCDF4_data_treatment.hpp"
 
+
+
 #endif // __XMLIO__
