Index: /XIOS/trunk/src/node/field.cpp
===================================================================
--- /XIOS/trunk/src/node/field.cpp	(revision 631)
+++ /XIOS/trunk/src/node/field.cpp	(revision 632)
@@ -797,5 +797,5 @@
        if ((0 != gridRefOfFieldRef) && (relGridRef != gridRefOfFieldRef) && (!(relGridRef->isTransformed())))
        {
-         gridRefOfFieldRef->transformGrid(relGridRef);
+         relGridRef->transformGrid(gridRefOfFieldRef);
          filterSources_.push_back(fieldRef);
        }
@@ -817,8 +817,8 @@
         for (; itFilterSrc != iteFilterSrc; ++itFilterSrc)
         {
-          if (0 != (*itFilterSrc)->grid->getTransformations())
+          if (0 != grid->getTransformations())
           {
-             const std::map<int, CArray<int,1>* >& localIndexToSend = (*itFilterSrc)->grid->getTransformations()->getLocalIndexToSendFromGridSource();
-             const std::map<int,std::vector<std::vector<std::pair<int,double> > > >& localIndexToReceive = (*itFilterSrc)->grid->getTransformations()->getLocalIndexToReceiveOnGridDest();
+             const std::map<int, CArray<int,1>* >& localIndexToSend = grid->getTransformations()->getLocalIndexToSendFromGridSource();
+             const std::map<int,std::vector<std::vector<std::pair<int,double> > > >& localIndexToReceive = grid->getTransformations()->getLocalIndexToReceiveOnGridDest();
 
              sendAndReceiveTransformedData(localIndexToSend, dataToSend,
Index: /XIOS/trunk/src/node/grid.cpp
===================================================================
--- /XIOS/trunk/src/node/grid.cpp	(revision 631)
+++ /XIOS/trunk/src/node/grid.cpp	(revision 632)
@@ -1161,14 +1161,14 @@
   }
 
-  void CGrid::transformGrid(CGrid* transformedGrid)
-  {
-    if (transformedGrid->isTransformed()) return;
-    transformedGrid->setTransformed();
-    if (axis_domain_order.numElements() != transformedGrid->axis_domain_order.numElements())
-    {
-      ERROR("CGrid::transformGrid(CGrid* transformedGrid)",
+  void CGrid::transformGrid(CGrid* transformGridSrc)
+  {
+    if (isTransformed()) return;
+    setTransformed();
+    if (axis_domain_order.numElements() != transformGridSrc->axis_domain_order.numElements())
+    {
+      ERROR("CGrid::transformGrid(CGrid* transformGridSrc)",
            << "Two grids have different dimension size"
-           << "Dimension of grid source " <<this->getId() << " is " << axis_domain_order.numElements() << std::endl
-           << "Dimension of grid destination " <<transformedGrid->getId() << " is " << transformedGrid->axis_domain_order.numElements());
+           << "Dimension of grid destination " <<this->getId() << " is " << axis_domain_order.numElements() << std::endl
+           << "Dimension of grid source " <<transformGridSrc->getId() << " is " << transformGridSrc->axis_domain_order.numElements());
     }
     else
@@ -1176,15 +1176,15 @@
       int ssize = axis_domain_order.numElements();
       for (int i = 0; i < ssize; ++i)
-        if (axis_domain_order(i) != (transformedGrid->axis_domain_order)(i))
-          ERROR("CGrid::transformGrid(CGrid* transformedGrid)",
-                << "Grids " <<this->getId() <<" and " << transformedGrid->getId()
+        if (axis_domain_order(i) != (transformGridSrc->axis_domain_order)(i))
+          ERROR("CGrid::transformGrid(CGrid* transformGridSrc)",
+                << "Grids " <<this->getId() <<" and " << transformGridSrc->getId()
                 << " don't have elements in the same order");
     }
 
-    transformations_ = new CGridTransformation(transformedGrid, this);
+    transformations_ = new CGridTransformation(this, transformGridSrc);
     transformations_->computeAll();
 
     // Ok, now need to compute index of grid source
-    checkMaskIndex(false);
+    transformGridSrc->checkMaskIndex(false);
   }
 
Index: /XIOS/trunk/src/node/grid.hpp
===================================================================
--- /XIOS/trunk/src/node/grid.hpp	(revision 631)
+++ /XIOS/trunk/src/node/grid.hpp	(revision 632)
@@ -187,5 +187,5 @@
          CGridTransformation* getTransformations();
 
-         void transformGrid(CGrid* transformedGrid);
+         void transformGrid(CGrid* transformGridSrc);
          bool isTransformed();
          void setTransformed();
Index: /XIOS/trunk/src/transformation/grid_transformation.hpp
===================================================================
--- /XIOS/trunk/src/transformation/grid_transformation.hpp	(revision 631)
+++ /XIOS/trunk/src/transformation/grid_transformation.hpp	(revision 632)
@@ -42,4 +42,6 @@
   const std::map<int, CArray<int,1>* >& getLocalIndexToSendFromGridSource() const;
   const std::map<int, std::vector<std::vector<std::pair<int,double> > > >& getLocalIndexToReceiveOnGridDest() const;
+  CGrid* getGridSource() {return gridSource_; }
+  CGrid* getGridDestination() { return gridDestination_; }
 
 private:
