Index: XIOS/trunk/src/config/expand_domain_attribute.conf
===================================================================
--- XIOS/trunk/src/config/expand_domain_attribute.conf	(revision 935)
+++ XIOS/trunk/src/config/expand_domain_attribute.conf	(revision 935)
@@ -0,0 +1,1 @@
+DECLARE_ATTRIBUTE(int, order)
Index: XIOS/trunk/src/config/node_type.conf
===================================================================
--- XIOS/trunk/src/config/node_type.conf	(revision 934)
+++ XIOS/trunk/src/config/node_type.conf	(revision 935)
@@ -75,4 +75,7 @@
 #endif //__XIOS_CComputeConnectivityDomain__
 
+#ifdef __XIOS_CExpandDomain__
+   DECLARE_NODE(ExpandDomain, expand_domain)
+#endif //__XIOS_CExpandDomain__
 
 #ifdef __XIOS_CContext__
Index: XIOS/trunk/src/group_factory_decl.cpp
===================================================================
--- XIOS/trunk/src/group_factory_decl.cpp	(revision 934)
+++ XIOS/trunk/src/group_factory_decl.cpp	(revision 935)
@@ -36,3 +36,4 @@
   macro(CExtractDomainToAxisGroup)
   macro(CComputeConnectivityDomainGroup)
+  macro(CExpandDomainGroup)
 }
Index: XIOS/trunk/src/group_template_decl.cpp
===================================================================
--- XIOS/trunk/src/group_template_decl.cpp	(revision 934)
+++ XIOS/trunk/src/group_template_decl.cpp	(revision 935)
@@ -25,4 +25,5 @@
   macro(ExtractDomainToAxis)
   macro(ComputeConnectivityDomain)
+  macro(ExpandDomain)
 
 }
Index: XIOS/trunk/src/node/domain.cpp
===================================================================
--- XIOS/trunk/src/node/domain.cpp	(revision 934)
+++ XIOS/trunk/src/node/domain.cpp	(revision 935)
@@ -74,4 +74,5 @@
      m["generate_rectilinear_domain"] = TRANS_GENERATE_RECTILINEAR_DOMAIN;
      m["compute_connectivity_domain"] = TRANS_COMPUTE_CONNECTIVITY_DOMAIN;
+     m["expand_domain"] = TRANS_EXPAND_DOMAIN;
    }
 
Index: XIOS/trunk/src/node/expand_domain.cpp
===================================================================
--- XIOS/trunk/src/node/expand_domain.cpp	(revision 935)
+++ XIOS/trunk/src/node/expand_domain.cpp	(revision 935)
@@ -0,0 +1,42 @@
+#include "expand_domain.hpp"
+#include "type.hpp"
+
+namespace xios {
+
+  /// ////////////////////// DÃ©finitions ////////////////////// ///
+
+  CExpandDomain::CExpandDomain(void)
+    : CObjectTemplate<CExpandDomain>(), CExpandDomainAttributes(), CTransformation<CDomain>()
+  { /* Ne rien faire de plus */ }
+
+  CExpandDomain::CExpandDomain(const StdString & id)
+    : CObjectTemplate<CExpandDomain>(id), CExpandDomainAttributes(), CTransformation<CDomain>()
+  { /* Ne rien faire de plus */ }
+
+  CExpandDomain::~CExpandDomain(void)
+  {}
+
+  CTransformation<CDomain>* CExpandDomain::create(const StdString& id, xml::CXMLNode* node)
+  {
+    CExpandDomain* expandDomain = CExpandDomainGroup::get("expand_domain_definition")->createChild(id);
+    if (node) expandDomain->parse(*node);
+    return static_cast<CTransformation<CDomain>*>(expandDomain);
+  }
+
+  bool CExpandDomain::_dummyRegistered = CExpandDomain::registerTrans();
+  bool CExpandDomain::registerTrans()
+  {
+    registerTransformation(TRANS_COMPUTE_CONNECTIVITY_DOMAIN, CExpandDomain::create);
+  }
+
+  //----------------------------------------------------------------
+
+  StdString CExpandDomain::GetName(void)    { return StdString("expand_domain"); }
+  StdString CExpandDomain::GetDefName(void) { return StdString("expand_domain"); }
+  ENodeType CExpandDomain::GetType(void)    { return eExpandDomain; }
+
+  void CExpandDomain::checkValid(CDomain* domainDst)
+  {
+  }
+
+}
Index: XIOS/trunk/src/node/expand_domain.hpp
===================================================================
--- XIOS/trunk/src/node/expand_domain.hpp	(revision 935)
+++ XIOS/trunk/src/node/expand_domain.hpp	(revision 935)
@@ -0,0 +1,67 @@
+#ifndef __XIOS_CExpandDomain__
+#define __XIOS_CExpandDomain__
+
+/// 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"
+#include "domain.hpp"
+
+namespace xios {
+  /// ////////////////////// DÃ©clarations ////////////////////// ///
+  class CExpandDomainGroup;
+  class CExpandDomainAttributes;
+  class CExpandDomain;
+  class CDomain;
+
+  ///--------------------------------------------------------------
+
+  // Declare/Define CFileAttribute
+  BEGIN_DECLARE_ATTRIBUTE_MAP(CExpandDomain)
+#include "expand_domain_attribute.conf"
+  END_DECLARE_ATTRIBUTE_MAP(CExpandDomain)
+
+  ///--------------------------------------------------------------
+  /*!
+    \class CExpandDomain
+    This class describes expand_domain in xml file.
+  */
+  class CExpandDomain
+    : public CObjectTemplate<CExpandDomain>
+    , public CExpandDomainAttributes
+    , public CTransformation<CDomain>
+  {
+    public :
+      typedef CObjectTemplate<CExpandDomain> SuperClass;
+      typedef CExpandDomainAttributes SuperClassAttribute;
+
+    public :
+      /// Constructeurs ///
+      CExpandDomain(void);
+      explicit CExpandDomain(const StdString& id);
+
+      /// Destructeur ///
+      virtual ~CExpandDomain(void);
+
+      virtual void checkValid(CDomain* domain);
+
+      /// Accesseurs statiques ///
+      static StdString GetName(void);
+      static StdString GetDefName(void);
+      static ENodeType GetType(void);
+    private:
+      static bool registerTrans();
+      static CTransformation<CDomain>* create(const StdString& id, xml::CXMLNode* node);
+      static bool _dummyRegistered;
+  }; // class CExpandDomain
+
+  DECLARE_GROUP(CExpandDomain);
+} // namespace xios
+
+#endif // __XIOS_CExpandDomain__
Index: XIOS/trunk/src/node/node_enum.hpp
===================================================================
--- XIOS/trunk/src/node/node_enum.hpp	(revision 934)
+++ XIOS/trunk/src/node/node_enum.hpp	(revision 935)
@@ -30,5 +30,6 @@
          eReduceDomainToAxis,
          eExtractDomainToAxis,
-         eComputeConnectivityDomain
+         eComputeConnectivityDomain,
+         eExpandDomain
 
       } ENodeType;
Index: XIOS/trunk/src/node/node_type.hpp
===================================================================
--- XIOS/trunk/src/node/node_type.hpp	(revision 934)
+++ XIOS/trunk/src/node/node_type.hpp	(revision 935)
@@ -21,4 +21,5 @@
 #include "extract_domain_to_axis.hpp"
 #include "compute_connectivity_domain.hpp"
+#include "expand_domain.hpp"
 
 
Index: XIOS/trunk/src/node/transformation_enum.hpp
===================================================================
--- XIOS/trunk/src/node/transformation_enum.hpp	(revision 934)
+++ XIOS/trunk/src/node/transformation_enum.hpp	(revision 935)
@@ -16,5 +16,6 @@
         TRANS_REDUCE_DOMAIN_TO_AXIS = 7,
         TRANS_EXTRACT_DOMAIN_TO_AXIS = 8,
-        TRANS_COMPUTE_CONNECTIVITY_DOMAIN = 9
+        TRANS_COMPUTE_CONNECTIVITY_DOMAIN = 9,
+        TRANS_EXPAND_DOMAIN = 10,
       } ETranformationType;
 
Index: XIOS/trunk/src/object_factory_decl.cpp
===================================================================
--- XIOS/trunk/src/object_factory_decl.cpp	(revision 934)
+++ XIOS/trunk/src/object_factory_decl.cpp	(revision 935)
@@ -37,4 +37,5 @@
   macro(CExtractDomainToAxis)
   macro(CComputeConnectivityDomain)
+  macro(CExpandDomain)
 
   macro(CFieldGroup)
@@ -56,3 +57,4 @@
   macro(CExtractDomainToAxisGroup)
   macro(CComputeConnectivityDomainGroup)
+  macro(CExpandDomainGroup)
 }
Index: XIOS/trunk/src/object_template_decl.cpp
===================================================================
--- XIOS/trunk/src/object_template_decl.cpp	(revision 934)
+++ XIOS/trunk/src/object_template_decl.cpp	(revision 935)
@@ -24,4 +24,5 @@
   template class CObjectTemplate<CExtractDomainToAxis>;
   template class CObjectTemplate<CComputeConnectivityDomain>;
+  template class CObjectTemplate<CExpandDomain>;
 
   template class CObjectTemplate<CContextGroup>;
@@ -43,3 +44,4 @@
   template class CObjectTemplate<CExtractDomainToAxisGroup>;
   template class CObjectTemplate<CComputeConnectivityDomainGroup>;
+  template class CObjectTemplate<CExpandDomainGroup>;
 }
Index: XIOS/trunk/src/transformation/domain_algorithm_expand.cpp
===================================================================
--- XIOS/trunk/src/transformation/domain_algorithm_expand.cpp	(revision 935)
+++ XIOS/trunk/src/transformation/domain_algorithm_expand.cpp	(revision 935)
@@ -0,0 +1,59 @@
+/*!
+   \file domain_algorithm_expand.cpp
+   \author Ha NGUYEN
+   \since 08 Aug 2016
+   \date 08 Aug 2016
+
+   \brief Algorithm for expand on an domain.
+ */
+#include "domain_algorithm_expand.hpp"
+#include "expand_domain.hpp"
+#include "mesh.hpp"
+#include "domain.hpp"
+#include "grid.hpp"
+#include "grid_transformation_factory_impl.hpp"
+
+namespace xios {
+CGenericAlgorithmTransformation* CDomainAlgorithmExpand::create(CGrid* gridDst, CGrid* gridSrc,
+                                                               CTransformation<CDomain>* 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<CDomain*> domainListDestP = gridDst->getDomains();
+  std::vector<CDomain*> domainListSrcP  = gridSrc->getDomains();
+
+  CExpandDomain* expandDomain = dynamic_cast<CExpandDomain*> (transformation);
+  int domainDstIndex = elementPositionInGridDst2AxisPosition[elementPositionInGrid];
+  int domainSrcIndex = elementPositionInGridSrc2AxisPosition[elementPositionInGrid];
+
+  return (new CDomainAlgorithmExpand(domainListDestP[domainDstIndex], domainListSrcP[domainSrcIndex], expandDomain));
+}
+
+bool CDomainAlgorithmExpand::registerTrans()
+{
+  CGridTransformationFactory<CDomain>::registerTransformation(TRANS_EXPAND_DOMAIN, create);
+}
+
+CDomainAlgorithmExpand::CDomainAlgorithmExpand(CDomain* domainDestination,
+                                               CDomain* domainSource,
+                                               CExpandDomain* expandDomain)
+: CDomainAlgorithmTransformation(domainDestination, domainSource)
+{
+  this->type_ = (ELEMENT_MODIFICATION_WITH_DATA);
+  expandDomain->checkValid(domainDestination);
+}
+
+/*!
+  Compute the index mapping between domain on grid source and one on grid destination
+*/
+void CDomainAlgorithmExpand::computeIndexSourceMapping_(const std::vector<CArray<double,1>* >& dataAuxInputs)
+{
+
+}
+
+}
Index: XIOS/trunk/src/transformation/domain_algorithm_expand.hpp
===================================================================
--- XIOS/trunk/src/transformation/domain_algorithm_expand.hpp	(revision 935)
+++ XIOS/trunk/src/transformation/domain_algorithm_expand.hpp	(revision 935)
@@ -0,0 +1,46 @@
+/*!
+   \file domain_algorithm_expand.hpp
+   \author Ha NGUYEN
+   \since 08 Aug 2016
+   \date 08 Aug 2016
+
+   \brief Algorithm for expanding an domain.
+ */
+#ifndef __XIOS_DOMAIN_ALGORITHM_EXPAND_HPP__
+#define __XIOS_DOMAIN_ALGORITHM_EXPAND_HPP__
+
+#include "domain_algorithm_transformation.hpp"
+#include "transformation.hpp"
+
+namespace xios {
+class CDomain;
+class CExpandDomain;
+
+/*!
+  \class CDomainAlgorithmExpand
+*/
+class CDomainAlgorithmExpand : public CDomainAlgorithmTransformation
+{
+public:
+  CDomainAlgorithmExpand(CDomain* domainDestination, CDomain* domainSource, CExpandDomain* expandDomain);
+
+  virtual ~CDomainAlgorithmExpand() {}
+
+  static bool registerTrans();
+protected:
+  void computeIndexSourceMapping_(const std::vector<CArray<double,1>* >& dataAuxInputs);
+
+private:
+  static CGenericAlgorithmTransformation* create(CGrid* gridDst, CGrid* gridSrc,
+                                                CTransformation<CDomain>* 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_DOMAIN_ALGORITHM_EXPAND_HPP__
Index: XIOS/trunk/src/type/type_util.hpp
===================================================================
--- XIOS/trunk/src/type/type_util.hpp	(revision 934)
+++ XIOS/trunk/src/type/type_util.hpp	(revision 935)
@@ -42,4 +42,6 @@
     class CComputeConnectivityDomain;
     class CComputeConnectivityDomainGroup;
+    class CExpandDomain;
+    class CExpandDomainGroup;
 
   template <typename T> inline string getStrType(void);
@@ -100,4 +102,6 @@
   macro(CComputeConnectivityDomain)
   macro(CComputeConnectivityDomainGroup)
+  macro(CExpandDomain)
+  macro(CExpandDomainGroup)
 #undef macro
 }
Index: XIOS/trunk/src/xml_parser_decl.cpp
===================================================================
--- XIOS/trunk/src/xml_parser_decl.cpp	(revision 934)
+++ XIOS/trunk/src/xml_parser_decl.cpp	(revision 935)
@@ -30,4 +30,5 @@
     macro( ExtractDomainToAxis )
     macro( ComputeConnectivityDomain )
+    macro( ExpandDomain )
   }
 }
