Index: XMLIO_V2/dev/dev_rv/src/xmlio/node/field.cpp
===================================================================
--- XMLIO_V2/dev/dev_rv/src/xmlio/node/field.cpp	(revision 180)
+++ XMLIO_V2/dev/dev_rv/src/xmlio/node/field.cpp	(revision 181)
@@ -130,4 +130,18 @@
    {
       // TODO : Ã  complÃ©ter;
+   }
+   
+   //----------------------------------------------------------------
+   
+   void CField::fromBinary(StdIStream & is)
+   {
+      SuperClass::fromBinary(is);
+#define CLEAR_ATT(name_)\
+      SuperClassAttribute::operator[](#name_)->clear()
+
+         CLEAR_ATT(domain_ref);
+         CLEAR_ATT(axis_ref);
+#undef CLEAR_ATT
+
    }
 
Index: XMLIO_V2/dev/dev_rv/src/xmlio/node/field.hpp
===================================================================
--- XMLIO_V2/dev/dev_rv/src/xmlio/node/field.hpp	(revision 180)
+++ XMLIO_V2/dev/dev_rv/src/xmlio/node/field.hpp	(revision 181)
@@ -76,4 +76,6 @@
          void solveOperation(void);
 
+         virtual void fromBinary(StdIStream & is);
+
          /// Destructeur ///
          virtual ~CField(void);
Index: XMLIO_V2/dev/dev_rv/src/xmlio/node/grid.cpp
===================================================================
--- XMLIO_V2/dev/dev_rv/src/xmlio/node/grid.cpp	(revision 180)
+++ XMLIO_V2/dev/dev_rv/src/xmlio/node/grid.cpp	(revision 181)
@@ -13,5 +13,5 @@
       : CObjectTemplate<CGrid>(), CGridAttributes()
       , withAxis(false), isChecked(false), axis(), domain()
-      , storeIndex(), out_i_index(), out_j_index(), out_l_index()
+      , storeIndex(1), out_i_index(1), out_j_index(1), out_l_index(1)
    { /* Ne rien faire de plus */ }
 
@@ -19,5 +19,5 @@
       : CObjectTemplate<CGrid>(id), CGridAttributes()
       , withAxis(false), isChecked(false), axis(), domain()
-      , storeIndex(), out_i_index(), out_j_index(), out_l_index()
+      , storeIndex(1), out_i_index(1), out_j_index(1), out_l_index(1)
    { /* Ne rien faire de plus */ }
 
@@ -33,5 +33,5 @@
    //----------------------------------------------------------------
 
-   const ARRAY(int, 1) & CGrid::getStoreIndex(void) const
+   const std::deque<ARRAY(int, 1)> & CGrid::getStoreIndex(void) const
    { 
       return (this->storeIndex );
@@ -40,5 +40,5 @@
    //---------------------------------------------------------------
 
-   const ARRAY(int, 1) & CGrid::getOutIIndex(void)  const
+   const std::deque<ARRAY(int, 1)> & CGrid::getOutIIndex(void)  const
    { 
       return (this->out_i_index ); 
@@ -47,5 +47,5 @@
    //---------------------------------------------------------------
 
-   const ARRAY(int, 1) & CGrid::getOutJIndex(void)  const
+   const std::deque<ARRAY(int, 1)> & CGrid::getOutJIndex(void)  const
    { 
       return (this->out_j_index ); 
@@ -54,5 +54,5 @@
    //---------------------------------------------------------------
 
-   const ARRAY(int, 1) & CGrid::getOutLIndex(void)  const
+   const std::deque<ARRAY(int, 1)> & CGrid::getOutLIndex(void)  const
    { 
       return (this->out_l_index ); 
@@ -87,5 +87,6 @@
       this->solveDomainRef() ;
       this->solveAxisRef() ;
-      this->computeIndex() ;
+      if (this->storeIndex.size() == 1)
+         this->computeIndex() ;
       this->isChecked = true;
    }
@@ -175,8 +176,8 @@
       
       //std::cout << indexCount  << std::endl;
-      ARRAY_ASSIGN(this->storeIndex , int, 1, [indexCount]);
-      ARRAY_ASSIGN(this->out_l_index, int, 1, [indexCount]);
-      ARRAY_ASSIGN(this->out_i_index, int, 1, [indexCount]);
-      ARRAY_ASSIGN(this->out_j_index, int, 1, [indexCount]);
+      ARRAY_ASSIGN(this->storeIndex[0] , int, 1, [indexCount]);
+      ARRAY_ASSIGN(this->out_l_index[0], int, 1, [indexCount]);
+      ARRAY_ASSIGN(this->out_i_index[0], int, 1, [indexCount]);
+      ARRAY_ASSIGN(this->out_j_index[0], int, 1, [indexCount]);
 
       for(int count = 0, indexCount = 0,  l = 0; l < size; l++)
@@ -195,8 +196,8 @@
                 (j >= 0 && j < nj) && (*mask)[i][j])
             {
-               (*this->storeIndex) [indexCount] = count ;
-               (*this->out_l_index)[indexCount] = l ;
-               (*this->out_i_index)[indexCount] = i ;
-               (*this->out_j_index)[indexCount] = j ;
+               (*this->storeIndex[0]) [indexCount] = count ;
+               (*this->out_l_index[0])[indexCount] = l ;
+               (*this->out_i_index[0])[indexCount] = i ;
+               (*this->out_j_index[0])[indexCount] = j ;
                indexCount++ ;
             }
@@ -235,6 +236,6 @@
          (const ARRAY(double, 1) stored,  ARRAY(double, 3) field) const
    {
-      for(StdSize n = 0; n < storeIndex->num_elements(); n++)
-         (*field)[(*out_i_index)[n]][(*out_j_index)[n]][(*out_l_index)[n]] = (*stored)[n] ;
+      for(StdSize n = 0; n < storeIndex[0]->num_elements(); n++)
+         (*field)[(*out_i_index[0])[n]][(*out_j_index[0])[n]][(*out_l_index[0])[n]] = (*stored)[n] ;
    }
 
@@ -245,6 +246,6 @@
          (const ARRAY(double, 1) stored,  ARRAY(double, 2) field) const
    {
-      for(StdSize n = 0; n < storeIndex->num_elements(); n++)
-         (*field)[(*out_i_index)[n]][(*out_j_index)[n]] = (*stored)[n] ;
+      for(StdSize n = 0; n < storeIndex[0]->num_elements(); n++)
+         (*field)[(*out_i_index[0])[n]][(*out_j_index[0])[n]] = (*stored)[n] ;
    }
 
@@ -255,6 +256,6 @@
          (const ARRAY(double, 1) stored,  ARRAY(double, 1) field) const
    {
-      for(StdSize n = 0; n < storeIndex->num_elements(); n++)
-         (*field)[(*out_i_index)[n]] = (*stored)[n] ;
+      for(StdSize n = 0; n < storeIndex[0]->num_elements(); n++)
+         (*field)[(*out_i_index[0])[n]] = (*stored)[n] ;
    }
 
@@ -264,8 +265,8 @@
       (const double * const data, ARRAY(double, 1) stored) const
    {
-      const StdSize size = storeIndex->num_elements() ;
+      const StdSize size = storeIndex[0]->num_elements() ;
       stored->resize(boost::extents[size]) ;
       for(StdSize i = 0; i < size; i++)
-         (*stored)[i] = data[(*storeIndex)[i]] ;
+         (*stored)[i] = data[(*storeIndex[0])[i]] ;
    }
    
@@ -275,8 +276,8 @@
    {
       SuperClass::toBinary(os);
-      this->storeIndex->toBinary(os);
-      this->out_i_index->toBinary(os);
-      this->out_j_index->toBinary(os);
-      this->out_l_index->toBinary(os);
+      this->storeIndex[0]->toBinary(os);
+      this->out_i_index[0]->toBinary(os);
+      this->out_j_index[0]->toBinary(os);
+      this->out_l_index[0]->toBinary(os);
    }
 
@@ -297,4 +298,8 @@
       out_l_index_->fromBinary(is);
       
+      this->storeIndex .push_back(storeIndex_);
+      this->out_i_index.push_back(out_i_index_);
+      this->out_j_index.push_back(out_j_index_);
+      this->out_l_index.push_back(out_l_index_);
    }
 
Index: XMLIO_V2/dev/dev_rv/src/xmlio/node/grid.hpp
===================================================================
--- XMLIO_V2/dev/dev_rv/src/xmlio/node/grid.hpp	(revision 180)
+++ XMLIO_V2/dev/dev_rv/src/xmlio/node/grid.hpp	(revision 181)
@@ -59,8 +59,8 @@
 
          /// Accesseurs ///
-         const ARRAY(int, 1) & getStoreIndex(void) const;
-         const ARRAY(int, 1) & getOutIIndex(void)  const;
-         const ARRAY(int, 1) & getOutJIndex(void)  const;
-         const ARRAY(int, 1) & getOutLIndex(void)  const;
+         const std::deque<ARRAY(int, 1)> & getStoreIndex(void) const;
+         const std::deque<ARRAY(int, 1)> & getOutIIndex(void)  const;
+         const std::deque<ARRAY(int, 1)> & getOutJIndex(void)  const;
+         const std::deque<ARRAY(int, 1)> & getOutLIndex(void)  const;
 
          const boost::shared_ptr<CAxis>   getRelAxis  (void) const;
@@ -110,8 +110,8 @@
          boost::shared_ptr<CDomain> domain ;
 
-         ARRAY(int, 1) storeIndex ;
-         ARRAY(int, 1) out_i_index ;
-         ARRAY(int, 1) out_j_index ;
-         ARRAY(int, 1) out_l_index ;
+         std::deque<ARRAY(int, 1)> storeIndex ;
+         std::deque<ARRAY(int, 1)> out_i_index ;
+         std::deque<ARRAY(int, 1)> out_j_index ;
+         std::deque<ARRAY(int, 1)> out_l_index ;
 
    }; // class CGrid
