Index: /XIOS/dev/XIOS_DEV_CMIP6/src/config/node_type.conf
===================================================================
--- /XIOS/dev/XIOS_DEV_CMIP6/src/config/node_type.conf	(revision 1300)
+++ /XIOS/dev/XIOS_DEV_CMIP6/src/config/node_type.conf	(revision 1301)
@@ -67,4 +67,8 @@
 #endif //__XIOS_CReduceDomainToAxis__
 
+#ifdef __XIOS_CReduceAxisToAxis__
+   DECLARE_NODE(ReduceAxisToAxis, reduce_domain)
+#endif //__XIOS_CReduceAxisToAxis__
+
 #ifdef __XIOS_CExtractDomainToAxis__
    DECLARE_NODE(ExtractDomainToAxis, extract_domain)
Index: /XIOS/dev/XIOS_DEV_CMIP6/src/config/reduce_axis_to_axis_attribute.conf
===================================================================
--- /XIOS/dev/XIOS_DEV_CMIP6/src/config/reduce_axis_to_axis_attribute.conf	(revision 1301)
+++ /XIOS/dev/XIOS_DEV_CMIP6/src/config/reduce_axis_to_axis_attribute.conf	(revision 1301)
@@ -0,0 +1,4 @@
+DECLARE_ENUM4(operation, min, max, sum, average)
+
+/* Direction to apply operation (i, j) */
+DECLARE_ATTRIBUTE(bool, local)
Index: /XIOS/dev/XIOS_DEV_CMIP6/src/generate_fortran_interface.cpp
===================================================================
--- /XIOS/dev/XIOS_DEV_CMIP6/src/generate_fortran_interface.cpp	(revision 1300)
+++ /XIOS/dev/XIOS_DEV_CMIP6/src/generate_fortran_interface.cpp	(revision 1301)
@@ -40,4 +40,5 @@
   CInverseAxis inverseAxis;
   CReduceDomainToAxis reduceDomainToAxis;
+  CReduceAxisToAxis reduceAxisToAxis;
   CExtractDomainToAxis extractDomainToAxis;
   CTemporalSplitting temporalSplitting;
@@ -342,4 +343,8 @@
   reduceDomainToAxis.generateFortran2003Interface(file);
   file.close();
+ 
+  file.open((path+"reduce_domain_to_axis_interface_attr.F90").c_str());
+  reduceDomainToAxis.generateFortran2003Interface(file);
+  file.close();
 
   file.open((path+"icreduce_domain_to_axis_attr.cpp").c_str());
@@ -349,4 +354,20 @@
   file.open((path+"ireduce_domain_to_axis_attr.F90").c_str());
   reduceDomainToAxis.generateFortranInterface(file);
+  file.close();
+
+  file.open((path+"reduce_axis_to_axis_interface_attr.F90").c_str());
+  reduceAxisToAxis.generateFortran2003Interface(file);
+  file.close();
+ 
+  file.open((path+"reduce_axis_to_axis_interface_attr.F90").c_str());
+  reduceAxisToAxis.generateFortran2003Interface(file);
+  file.close();
+
+  file.open((path+"icreduce_axis_to_axis_attr.cpp").c_str());
+  reduceAxisToAxis.generateCInterface(file);
+  file.close();
+
+  file.open((path+"ireduce_axis_to_axis_attr.F90").c_str());
+  reduceAxisToAxis.generateFortranInterface(file);
   file.close();
   
Index: /XIOS/dev/XIOS_DEV_CMIP6/src/group_factory_decl.cpp
===================================================================
--- /XIOS/dev/XIOS_DEV_CMIP6/src/group_factory_decl.cpp	(revision 1300)
+++ /XIOS/dev/XIOS_DEV_CMIP6/src/group_factory_decl.cpp	(revision 1301)
@@ -34,4 +34,5 @@
   macro(CReduceAxisToScalarGroup)
   macro(CReduceDomainToAxisGroup)
+  macro(CReduceAxisToAxisGroup)
   macro(CExtractDomainToAxisGroup)
   macro(CComputeConnectivityDomainGroup)
Index: /XIOS/dev/XIOS_DEV_CMIP6/src/group_template_decl.cpp
===================================================================
--- /XIOS/dev/XIOS_DEV_CMIP6/src/group_template_decl.cpp	(revision 1300)
+++ /XIOS/dev/XIOS_DEV_CMIP6/src/group_template_decl.cpp	(revision 1301)
@@ -23,4 +23,5 @@
   macro(ReduceAxisToScalar)
   macro(ReduceDomainToAxis)
+  macro(ReduceAxisToAxis)
   macro(ExtractDomainToAxis)
   macro(ComputeConnectivityDomain)
Index: /XIOS/dev/XIOS_DEV_CMIP6/src/node/axis.cpp
===================================================================
--- /XIOS/dev/XIOS_DEV_CMIP6/src/node/axis.cpp	(revision 1300)
+++ /XIOS/dev/XIOS_DEV_CMIP6/src/node/axis.cpp	(revision 1301)
@@ -51,4 +51,5 @@
      m["inverse_axis"] = TRANS_INVERSE_AXIS;
      m["reduce_domain"] = TRANS_REDUCE_DOMAIN_TO_AXIS;
+     m["reduce_axis"] = TRANS_REDUCE_AXIS_TO_AXIS;
      m["extract_domain"] = TRANS_EXTRACT_DOMAIN_TO_AXIS;
      m["temporal_splitting"] = TRANS_TEMPORAL_SPLITTING;
@@ -1273,5 +1274,6 @@
 
     // Resize index to its real size
-    index.resizeAndPreserve(nbIndexGlob);
+    if (nbIndexGlob==0) index.resize(nbIndexGlob) ;
+    else index.resizeAndPreserve(nbIndexGlob);
 
     int nbData = nbIndexGlob;
Index: /XIOS/dev/XIOS_DEV_CMIP6/src/node/node_enum.hpp
===================================================================
--- /XIOS/dev/XIOS_DEV_CMIP6/src/node/node_enum.hpp	(revision 1300)
+++ /XIOS/dev/XIOS_DEV_CMIP6/src/node/node_enum.hpp	(revision 1301)
@@ -29,4 +29,5 @@
          eReduceAxisToScalar,
          eReduceDomainToAxis,
+         eReduceAxisToAxis,
          eExtractDomainToAxis,
          eComputeConnectivityDomain,
Index: /XIOS/dev/XIOS_DEV_CMIP6/src/node/node_type.hpp
===================================================================
--- /XIOS/dev/XIOS_DEV_CMIP6/src/node/node_type.hpp	(revision 1300)
+++ /XIOS/dev/XIOS_DEV_CMIP6/src/node/node_type.hpp	(revision 1301)
@@ -19,4 +19,5 @@
 #include "reduce_axis_to_scalar.hpp"
 #include "reduce_domain_to_axis.hpp"
+#include "reduce_axis_to_axis.hpp"
 #include "extract_domain_to_axis.hpp"
 #include "compute_connectivity_domain.hpp"
Index: /XIOS/dev/XIOS_DEV_CMIP6/src/node/reduce_axis_to_axis.cpp
===================================================================
--- /XIOS/dev/XIOS_DEV_CMIP6/src/node/reduce_axis_to_axis.cpp	(revision 1301)
+++ /XIOS/dev/XIOS_DEV_CMIP6/src/node/reduce_axis_to_axis.cpp	(revision 1301)
@@ -0,0 +1,59 @@
+#include "reduce_axis_to_axis.hpp"
+#include "type.hpp"
+#include "axis.hpp"
+
+namespace xios {
+
+  /// ////////////////////// DÃ©finitions ////////////////////// ///
+
+  CReduceAxisToAxis::CReduceAxisToAxis(void)
+    : CObjectTemplate<CReduceAxisToAxis>(), CReduceAxisToAxisAttributes(), CTransformation<CAxis>()
+  { /* Ne rien faire de plus */ }
+
+  CReduceAxisToAxis::CReduceAxisToAxis(const StdString & id)
+    : CObjectTemplate<CReduceAxisToAxis>(id), CReduceAxisToAxisAttributes(), CTransformation<CAxis>()
+  { /* Ne rien faire de plus */ }
+
+  CReduceAxisToAxis::~CReduceAxisToAxis(void)
+  {}
+
+  CTransformation<CAxis>* CReduceAxisToAxis::create(const StdString& id, xml::CXMLNode* node)
+  {
+    CReduceAxisToAxis* reduceAxis = CReduceAxisToAxisGroup::get("reduce_axis_to_axis_definition")->createChild(id);
+    if (node) reduceAxis->parse(*node);
+    return static_cast<CTransformation<CAxis>*>(reduceAxis);
+  }
+
+  bool CReduceAxisToAxis::registerTrans()
+  {
+    return registerTransformation(TRANS_REDUCE_AXIS_TO_AXIS, CReduceAxisToAxis::create);
+  }
+
+  bool CReduceAxisToAxis::_dummyRegistered = CReduceAxisToAxis::registerTrans();
+
+  //----------------------------------------------------------------
+
+  StdString CReduceAxisToAxis::GetName(void)    { return StdString("reduce_axis_to_axis"); }
+  StdString CReduceAxisToAxis::GetDefName(void) { return StdString("reduce_axis_to_axis"); }
+  ENodeType CReduceAxisToAxis::GetType(void)    { return eReduceAxisToAxis; }
+
+  void CReduceAxisToAxis::checkValid(CAxis* axisDst, CAxis* axisSrc)
+  {
+  
+    if (this->operation.isEmpty())
+      ERROR("CReduceAxisToAxis::checkValid(CAxis* axisDst, CAxis* axisSrc)",
+             << "An operation must be defined."
+             << "Axis source " <<axisSrc->getId() << std::endl
+             << "Axis destination " << axisDst->getId());
+
+    if (this->local.isEmpty()) local=false ;
+
+    if (axisDst->n_glo != axisSrc->n_glo)
+       ERROR("CReduceAxisToAxis::checkValid(CAxis* axisDst, CAxis* axisSrc)",
+            << "both axis should have same n_glo"
+            << "Axis source " <<axisSrc->getId() << " has n_glo " << axisSrc->n_glo << std::endl
+            << "Axis destination " << axisDst->getId() << " has n_glo " << axisDst->n_glo);
+    
+  }
+
+}
Index: /XIOS/dev/XIOS_DEV_CMIP6/src/node/reduce_axis_to_axis.hpp
===================================================================
--- /XIOS/dev/XIOS_DEV_CMIP6/src/node/reduce_axis_to_axis.hpp	(revision 1301)
+++ /XIOS/dev/XIOS_DEV_CMIP6/src/node/reduce_axis_to_axis.hpp	(revision 1301)
@@ -0,0 +1,66 @@
+#ifndef __XIOS_CReduceAxisToAxis__
+#define __XIOS_CReduceAxisToAxis__
+
+/// xios headers ///
+#include "xios_spl.hpp"
+#include "attribute_enum.hpp"
+#include "attribute_enum_impl.hpp"
+#include "attribute_array.hpp"
+#include "declare_attribute.hpp"
+#include "object_template.hpp"
+#include "group_factory.hpp"
+#include "declare_group.hpp"
+#include "transformation.hpp"
+
+namespace xios {
+  /// ////////////////////// DÃ©clarations ////////////////////// ///
+  class CReduceAxisToAxisGroup;
+  class CReduceAxisToAxisAttributes;
+  class CReduceAxisToAxis;
+  class CAxis;
+
+  ///--------------------------------------------------------------
+
+  // Declare/Define CFileAttribute
+  BEGIN_DECLARE_ATTRIBUTE_MAP(CReduceAxisToAxis)
+#include "reduce_axis_to_axis_attribute.conf"
+  END_DECLARE_ATTRIBUTE_MAP(CReduceAxisToAxis)
+
+  ///--------------------------------------------------------------
+  /*!
+    \class CReduceAxisToAxis
+    This class describes reduce_domain in xml file.
+  */
+  class CReduceAxisToAxis
+    : public CObjectTemplate<CReduceAxisToAxis>
+    , public CReduceAxisToAxisAttributes
+    , public CTransformation<CAxis>
+  {
+    public :
+      typedef CObjectTemplate<CReduceAxisToAxis> SuperClass;
+      typedef CReduceAxisToAxisAttributes SuperClassAttribute;
+
+    public :
+      /// Constructeurs ///
+      CReduceAxisToAxis(void);
+      explicit CReduceAxisToAxis(const StdString& id);
+
+      /// Destructeur ///
+      virtual ~CReduceAxisToAxis(void);
+
+      virtual void checkValid(CAxis* axisDst, CAxis* axisSrc);
+
+      /// Accesseurs statiques ///
+      static StdString GetName(void);
+      static StdString GetDefName(void);
+      static ENodeType GetType(void);
+    private:
+      static bool registerTrans();
+      static CTransformation<CAxis>* create(const StdString& id, xml::CXMLNode* node);
+      static bool _dummyRegistered;
+  }; // class CReduceAxisToAxis
+
+  DECLARE_GROUP(CReduceAxisToAxis);
+} // namespace xios
+
+#endif // __XIOS_CReduceAxisToAxis__
Index: /XIOS/dev/XIOS_DEV_CMIP6/src/node/transformation_enum.hpp
===================================================================
--- /XIOS/dev/XIOS_DEV_CMIP6/src/node/transformation_enum.hpp	(revision 1300)
+++ /XIOS/dev/XIOS_DEV_CMIP6/src/node/transformation_enum.hpp	(revision 1301)
@@ -21,4 +21,5 @@
         TRANS_REDUCE_DOMAIN_TO_SCALAR = 12,
         TRANS_TEMPORAL_SPLITTING = 13,
+        TRANS_REDUCE_AXIS_TO_AXIS = 14,
       } ETranformationType;
 
Index: /XIOS/dev/XIOS_DEV_CMIP6/src/object_factory_decl.cpp
===================================================================
--- /XIOS/dev/XIOS_DEV_CMIP6/src/object_factory_decl.cpp	(revision 1300)
+++ /XIOS/dev/XIOS_DEV_CMIP6/src/object_factory_decl.cpp	(revision 1301)
@@ -35,4 +35,5 @@
   macro(CReduceAxisToScalar)
   macro(CReduceDomainToAxis)
+  macro(CReduceAxisToAxis)
   macro(CExtractDomainToAxis)
   macro(CComputeConnectivityDomain)
@@ -58,4 +59,5 @@
   macro(CReduceAxisToScalarGroup)
   macro(CReduceDomainToAxisGroup)
+  macro(CReduceAxisToAxisGroup)
   macro(CExtractDomainToAxisGroup)
   macro(CComputeConnectivityDomainGroup)
Index: /XIOS/dev/XIOS_DEV_CMIP6/src/object_template_decl.cpp
===================================================================
--- /XIOS/dev/XIOS_DEV_CMIP6/src/object_template_decl.cpp	(revision 1300)
+++ /XIOS/dev/XIOS_DEV_CMIP6/src/object_template_decl.cpp	(revision 1301)
@@ -22,4 +22,5 @@
   template class CObjectTemplate<CReduceAxisToScalar>;
   template class CObjectTemplate<CReduceDomainToAxis>;
+  template class CObjectTemplate<CReduceAxisToAxis>;
   template class CObjectTemplate<CExtractDomainToAxis>;
   template class CObjectTemplate<CComputeConnectivityDomain>;
@@ -45,4 +46,5 @@
   template class CObjectTemplate<CReduceAxisToScalarGroup>;
   template class CObjectTemplate<CReduceDomainToAxisGroup>;
+  template class CObjectTemplate<CReduceAxisToAxisGroup>;
   template class CObjectTemplate<CExtractDomainToAxisGroup>;
   template class CObjectTemplate<CComputeConnectivityDomainGroup>;
Index: /XIOS/dev/XIOS_DEV_CMIP6/src/transformation/algo_types.hpp
===================================================================
--- /XIOS/dev/XIOS_DEV_CMIP6/src/transformation/algo_types.hpp	(revision 1300)
+++ /XIOS/dev/XIOS_DEV_CMIP6/src/transformation/algo_types.hpp	(revision 1301)
@@ -18,4 +18,5 @@
 #include "axis_algorithm_interpolate.hpp"
 #include "axis_algorithm_reduce_domain.hpp"
+#include "axis_algorithm_reduce_axis.hpp"
 #include "axis_algorithm_transformation.hpp"
 #include "axis_algorithm_extract_domain.hpp"
Index: /XIOS/dev/XIOS_DEV_CMIP6/src/transformation/axis_algorithm_reduce_axis.cpp
===================================================================
--- /XIOS/dev/XIOS_DEV_CMIP6/src/transformation/axis_algorithm_reduce_axis.cpp	(revision 1301)
+++ /XIOS/dev/XIOS_DEV_CMIP6/src/transformation/axis_algorithm_reduce_axis.cpp	(revision 1301)
@@ -0,0 +1,113 @@
+/*!
+   \file axis_algorithm_reduce_axis.cpp
+   \author Ha NGUYEN
+   \since 23 June 2016
+   \date 23 June 2016
+
+   \brief Algorithm for reduce a axis to an axis
+ */
+#include "axis_algorithm_reduce_axis.hpp"
+#include "reduce_axis_to_axis.hpp"
+#include "axis.hpp"
+#include "grid.hpp"
+#include "grid_transformation_factory_impl.hpp"
+#include "reduction.hpp"
+
+namespace xios {
+CGenericAlgorithmTransformation* CAxisAlgorithmReduceAxis::create(CGrid* gridDst, CGrid* gridSrc,
+                                                                   CTransformation<CAxis>* transformation,
+                                                                   int elementPositionInGrid,
+                                                                   std::map<int, int>& elementPositionInGridSrc2ScalarPosition,
+                                                                   std::map<int, int>& elementPositionInGridSrc2AxisPosition,
+                                                                   std::map<int, int>& elementPositionInGridSrc2DomainPosition,
+                                                                   std::map<int, int>& elementPositionInGridDst2ScalarPosition,
+                                                                   std::map<int, int>& elementPositionInGridDst2AxisPosition,
+                                                                   std::map<int, int>& elementPositionInGridDst2DomainPosition)
+{
+  std::vector<CAxis*> axisListDestP = gridDst->getAxis();
+  std::vector<CAxis*> axisListSrcP  = gridSrc->getAxis();
+
+  CReduceAxisToAxis* reduceAxis = dynamic_cast<CReduceAxisToAxis*> (transformation);
+  int axisDstIndex   = elementPositionInGridDst2AxisPosition[elementPositionInGrid];
+  int axisSrcIndex = elementPositionInGridSrc2AxisPosition[elementPositionInGrid];
+
+  return (new CAxisAlgorithmReduceAxis(axisListDestP[axisDstIndex], axisListSrcP[axisSrcIndex], reduceAxis));
+}
+
+bool CAxisAlgorithmReduceAxis::registerTrans()
+{
+  CGridTransformationFactory<CAxis>::registerTransformation(TRANS_REDUCE_AXIS_TO_AXIS, create);
+}
+
+
+CAxisAlgorithmReduceAxis::CAxisAlgorithmReduceAxis(CAxis* axisDestination, CAxis* axisSource, CReduceAxisToAxis* algo)
+ : CAxisAlgorithmTransformation(axisDestination, axisSource), reduction_(0)
+{
+  eliminateRedondantSrc_= false ;
+  algo->checkValid(axisDestination, axisSource);
+  StdString op;
+  switch (algo->operation)
+  {
+    case CReduceAxisToAxis::operation_attr::sum:
+      op = "sum";
+      break;
+    case CReduceAxisToAxis::operation_attr::min:
+      op = "min";
+      break;
+    case CReduceAxisToAxis::operation_attr::max:
+      op = "max";
+      break;
+    case CReduceAxisToAxis::operation_attr::average:
+      op = "average";
+      break;
+    default:
+        ERROR("CAxisAlgorithmReduceAxis::CAxisAlgorithmReduceAxis(CAxis* axisDestination, CAxis* axisSource, CReduceAxisToAxis* algo)",
+         << "Operation is wrongly defined. Supported operations: sum, min, max, average." << std::endl
+         << "Axis source " <<axisSource->getId() << std::endl
+         << "Axis destination " << axisDestination->getId());
+
+  }
+
+  reduction_ = CReductionAlgorithm::createOperation(CReductionAlgorithm::ReductionOperations[op]);
+  local = algo->local ;
+}
+
+void CAxisAlgorithmReduceAxis::apply(const std::vector<std::pair<int,double> >& localIndex,
+                                       const double* dataInput,
+                                       CArray<double,1>& dataOut,
+                                       std::vector<bool>& flagInitial,                     
+                                       bool ignoreMissingValue, bool firstPass)
+{
+  reduction_->apply(localIndex, dataInput, dataOut, flagInitial, ignoreMissingValue, firstPass);
+}
+
+void CAxisAlgorithmReduceAxis::updateData(CArray<double,1>& dataOut)
+{
+  reduction_->updateData(dataOut);
+}
+
+CAxisAlgorithmReduceAxis::~CAxisAlgorithmReduceAxis()
+{
+  if (0 != reduction_) delete reduction_;
+}
+
+void CAxisAlgorithmReduceAxis::computeIndexSourceMapping_(const std::vector<CArray<double,1>* >& dataAuxInputs)
+{
+  this->transformationMapping_.resize(1);
+  this->transformationWeight_.resize(1);
+
+  TransformationIndexMap& transMap = this->transformationMapping_[0];
+  TransformationWeightMap& transWeight = this->transformationWeight_[0];
+  CArray<int,1>& axisDstIndex = axisDest_->index;
+  int nbAxisIdx = axisDstIndex.numElements();
+  for (int idxAxis = 0; idxAxis < nbAxisIdx; ++idxAxis)
+  {
+    int globalAxisIdx = axisDstIndex(idxAxis);
+    transMap[globalAxisIdx].resize(1);
+    transWeight[globalAxisIdx].resize(1);
+    transMap[globalAxisIdx][0]=globalAxisIdx ;      
+    transWeight[globalAxisIdx][0] = 1.0 ;      
+  }
+}
+
+}
Index: /XIOS/dev/XIOS_DEV_CMIP6/src/transformation/axis_algorithm_reduce_axis.hpp
===================================================================
--- /XIOS/dev/XIOS_DEV_CMIP6/src/transformation/axis_algorithm_reduce_axis.hpp	(revision 1301)
+++ /XIOS/dev/XIOS_DEV_CMIP6/src/transformation/axis_algorithm_reduce_axis.hpp	(revision 1301)
@@ -0,0 +1,63 @@
+/*!
+   \file axis_algorithm_reduce_axis.hpp
+   \author Ha NGUYEN
+   \since 23 June 2016
+   \date 23 June 2016
+
+   \brief Algorithm for reduce an axis to a axis
+ */
+#ifndef __XIOS_AXIS_ALGORITHM_REDUCE_AXIS_HPP__
+#define __XIOS_AXIS_ALGORITHM_REDUCE_AXIS_HPP__
+
+#include "axis_algorithm_transformation.hpp"
+#include "transformation.hpp"
+
+namespace xios {
+
+class CAxis;
+class CReduceAxisToAxis;
+class CReductionAlgorithm;
+
+/*!
+  \class CAxisAlgorithmReduceAxis
+  Reduce a axis to an axis
+*/
+class CAxisAlgorithmReduceAxis : public CAxisAlgorithmTransformation
+{
+public:
+  CAxisAlgorithmReduceAxis(CAxis* axisDestination, CAxis* axisSource, CReduceAxisToAxis* algo);
+
+  virtual void apply(const std::vector<std::pair<int,double> >& localIndex,
+                     const double* dataInput,
+                     CArray<double,1>& dataOut,
+                     std::vector<bool>& flagInitial,                     
+                     bool ignoreMissingValue, bool firstPass);
+
+  virtual void updateData(CArray<double,1>& dataOut);
+  
+  virtual ~CAxisAlgorithmReduceAxis();
+
+  static bool registerTrans();
+protected:
+  bool local ;
+  
+protected:
+  void computeIndexSourceMapping_(const std::vector<CArray<double,1>* >& dataAuxInputs); 
+  
+protected:
+  CReductionAlgorithm* reduction_;
+
+private:
+  static CGenericAlgorithmTransformation* create(CGrid* gridDst, CGrid* gridSrc,
+                                                CTransformation<CAxis>* transformation,
+                                                int elementPositionInGrid,
+                                                std::map<int, int>& elementPositionInGridSrc2ScalarPosition,
+                                                std::map<int, int>& elementPositionInGridSrc2AxisPosition,
+                                                std::map<int, int>& elementPositionInGridSrc2DomainPosition,
+                                                std::map<int, int>& elementPositionInGridDst2ScalarPosition,
+                                                std::map<int, int>& elementPositionInGridDst2AxisPosition,
+                                                std::map<int, int>& elementPositionInGridDst2DomainPosition);
+};
+
+}
+#endif // __XIOS_AXIS_ALGORITHM_REDUCE_AXIS_HPP__
Index: /XIOS/dev/XIOS_DEV_CMIP6/src/transformation/grid_transformation_selector.cpp
===================================================================
--- /XIOS/dev/XIOS_DEV_CMIP6/src/transformation/grid_transformation_selector.cpp	(revision 1300)
+++ /XIOS/dev/XIOS_DEV_CMIP6/src/transformation/grid_transformation_selector.cpp	(revision 1301)
@@ -29,4 +29,5 @@
   CAxisAlgorithmInverse::registerTrans();
   CAxisAlgorithmReduceDomain::registerTrans();
+  CAxisAlgorithmReduceAxis::registerTrans();
   CAxisAlgorithmTemporalSplitting::registerTrans();
 
Index: /XIOS/dev/XIOS_DEV_CMIP6/src/type/type_util.hpp
===================================================================
--- /XIOS/dev/XIOS_DEV_CMIP6/src/type/type_util.hpp	(revision 1300)
+++ /XIOS/dev/XIOS_DEV_CMIP6/src/type/type_util.hpp	(revision 1301)
@@ -38,4 +38,6 @@
     class CReduceDomainToAxis;
     class CReduceDomainToAxisGroup;
+    class CReduceAxisToAxis;
+    class CReduceAxisToAxisGroup;
     class CExtractDomainToAxis;
     class CExtractDomainToAxisGroup;
@@ -104,4 +106,6 @@
   macro(CReduceDomainToAxis)
   macro(CReduceDomainToAxisGroup)
+  macro(CReduceAxisToAxis)
+  macro(CReduceAxisToAxisGroup)
   macro(CExtractDomainToAxis)
   macro(CExtractDomainToAxisGroup)
Index: /XIOS/dev/XIOS_DEV_CMIP6/src/xml_parser_decl.cpp
===================================================================
--- /XIOS/dev/XIOS_DEV_CMIP6/src/xml_parser_decl.cpp	(revision 1300)
+++ /XIOS/dev/XIOS_DEV_CMIP6/src/xml_parser_decl.cpp	(revision 1301)
@@ -28,4 +28,5 @@
     macro( ReduceAxisToScalar )
     macro( ReduceDomainToAxis )
+    macro( ReduceAxisToAxis )
     macro( ExtractDomainToAxis )
     macro( ComputeConnectivityDomain )
