Index: /XIOS/dev/dev_ym/XIOS_COUPLING/src/transformation/axis_algorithm/axis_algorithm_interpolate.cpp
===================================================================
--- /XIOS/dev/dev_ym/XIOS_COUPLING/src/transformation/axis_algorithm/axis_algorithm_interpolate.cpp	(revision 2008)
+++ /XIOS/dev/dev_ym/XIOS_COUPLING/src/transformation/axis_algorithm/axis_algorithm_interpolate.cpp	(revision 2009)
@@ -51,15 +51,20 @@
 
 CAxisAlgorithmInterpolate::CAxisAlgorithmInterpolate(bool isSource, CAxis* axisDestination, CAxis* axisSource, CInterpolateAxis* interpAxis)
-: CAxisAlgorithmTransformation(isSource, axisDestination, axisSource), coordinate_(), transPosition_()
+: CAlgorithmTransformationWeight(isSource), coordinate_(), transPosition_(), axisSrc_(axisSource), axisDest_(axisDestination)
 TRY
 {
   interpAxis->checkValid(axisSource);
+  axisDestination->checkAttributes() ;
+
   order_ = interpAxis->order.getValue();
   if (!interpAxis->coordinate.isEmpty())
   {
     coordinate_ = interpAxis->coordinate.getValue();
-    this->idAuxInputs_.resize(1);
-    this->idAuxInputs_[0] = coordinate_;
-  }
+//    this->idAuxInputs_.resize(1);
+//    this->idAuxInputs_[0] = coordinate_;
+  }
+  std::vector<CArray<double,1>* > dataAuxInputs ;
+  computeRemap(dataAuxInputs) ;
+  this->computeAlgorithm(axisSource->getLocalView(CElementView::WORKFLOW), axisDestination->getLocalView(CElementView::WORKFLOW)) ;
 }
 CATCH
@@ -68,5 +73,5 @@
   Compute the index mapping between axis on grid source and one on grid destination
 */
-void CAxisAlgorithmInterpolate::computeIndexSourceMapping_(const std::vector<CArray<double,1>* >& dataAuxInputs)
+void CAxisAlgorithmInterpolate::computeRemap(const std::vector<CArray<double,1>* >& dataAuxInputs)
 TRY
 {
@@ -179,6 +184,6 @@
 TRY
 {
-  TransformationIndexMap& transMap = this->transformationMapping_[transPos];
-  TransformationWeightMap& transWeight = this->transformationWeight_[transPos];
+  TransformationIndexMap& transMap = this->transformationMapping_;
+  TransformationWeightMap& transWeight = this->transformationWeight_;
   std::map<int, std::vector<std::pair<int,double> > >::const_iterator itb = interpolatingIndexValues.begin(), it,
                                                                       ite = interpolatingIndexValues.end();
@@ -205,13 +210,16 @@
       transMap[globalIndexDest][idx] = index;
       transWeight[globalIndexDest][idx] = weight;
+/*
       if (!transPosition_.empty())
       {
         (this->transformationPosition_[transPos])[globalIndexDest] = transPosition_[transPos];
       }
-    }
-  }
+*/
+    }
+  }
+/*
   if (!transPosition_.empty() && this->transformationPosition_[transPos].empty())
     (this->transformationPosition_[transPos])[0] = transPosition_[transPos];
-
+*/
 }
 CATCH
@@ -308,9 +316,10 @@
     vecAxisValue[0].resize(axisSrc_->value.numElements());
     vecAxisValue[0] = axisSrc_->value;
-    this->transformationMapping_.resize(1);
-    this->transformationWeight_.resize(1);
+//    this->transformationMapping_.resize(1);
+//    this->transformationWeight_.resize(1);
   }
   else
   {
+/*
     CField* field = CField::get(coordinate_);
     CGrid* grid = field->getGrid();
@@ -388,7 +397,8 @@
       }
     }
-  }
-}
-CATCH
-
-}
+  */
+  }
+}
+CATCH
+
+}
Index: /XIOS/dev/dev_ym/XIOS_COUPLING/src/transformation/axis_algorithm/axis_algorithm_interpolate.hpp
===================================================================
--- /XIOS/dev/dev_ym/XIOS_COUPLING/src/transformation/axis_algorithm/axis_algorithm_interpolate.hpp	(revision 2008)
+++ /XIOS/dev/dev_ym/XIOS_COUPLING/src/transformation/axis_algorithm/axis_algorithm_interpolate.hpp	(revision 2009)
@@ -10,5 +10,5 @@
 #define __XIOS_AXIS_ALGORITHM_INTERPOLATE_HPP__
 
-#include "axis_algorithm_transformation.hpp"
+#include "algorithm_transformation_weight.hpp"
 #include "transformation.hpp"
 
@@ -24,5 +24,5 @@
   The values on axis source are assumed monotonic
 */
-class CAxisAlgorithmInterpolate : public CAxisAlgorithmTransformation
+class CAxisAlgorithmInterpolate : public CAlgorithmTransformationWeight
 {
 public:
@@ -32,8 +32,7 @@
 
   static bool registerTrans();
-protected:
-  void computeIndexSourceMapping_(const std::vector<CArray<double,1>* >& dataAuxInputs);
 
 private:
+  void computeRemap(const std::vector<CArray<double,1>* >& dataAuxInputs) ;
   void retrieveAllAxisValue(const CArray<double,1>& axisValue, const CArray<bool,1>& axisMask,
                             std::vector<double>& recvBuff, std::vector<int>& indexVec);
@@ -48,6 +47,8 @@
   StdString coordinate_;
   std::vector<std::vector<int> > transPosition_;
+  CAxis* axisSrc_=nullptr ;
+  CAxis* axisDest_=nullptr;
+private:
 
-private:
   static CGenericAlgorithmTransformation* create(bool isSource, CGrid* gridDst, CGrid* gridSrc,
                                                 CTransformation<CAxis>* transformation,
