Index: /XIOS/trunk/src/generate_fortran_interface.cpp
===================================================================
--- /XIOS/trunk/src/generate_fortran_interface.cpp	(revision 980)
+++ /XIOS/trunk/src/generate_fortran_interface.cpp	(revision 981)
@@ -34,10 +34,15 @@
   CGenerateRectilinearDomain genDomain;
   CComputeConnectivityDomain compConDomain;
+  CExpandDomain expandDomain;
 
   CInterpolateAxis interpolateAxis;
   CZoomAxis zoomAxis;
   CInverseAxis inverseAxis;
+  CReduceDomainToAxis reduceDomainToAxis;
+  CExtractDomainToAxis extractDomainToAxis;
 
   CReduceAxisToScalar reduceAxisToScalar;
+  CExtractAxisToScalar extractAxisToScalar;
+  CReduceDomainToScalar reduceDomainToScalar;
 
   ostringstream oss;
@@ -231,4 +236,7 @@
   file.close();
 
+  /*!
+    Domain transformations
+  */
   file.open((path+"zoom_domain_interface_attr.F90").c_str());
   zoomDomain.generateFortran2003Interface(file);
@@ -243,4 +251,55 @@
   file.close();
 
+  file.open((path+"interpolate_domain_interface_attr.F90").c_str());
+  interpolateDomain.generateFortran2003Interface(file);
+  file.close();
+
+  file.open((path+"icinterpolate_domain_attr.cpp").c_str());
+  interpolateDomain.generateCInterface(file);
+  file.close();
+
+  file.open((path+"iinterpolate_domain_attr.F90").c_str());
+  interpolateDomain.generateFortranInterface(file);
+  file.close();
+
+  file.open((path+"generate_rectilinear_domain_interface_attr.F90").c_str());
+  genDomain.generateFortran2003Interface(file);
+  file.close();
+
+  file.open((path+"icgenerate_rectilinear_domain_attr.cpp").c_str());
+  genDomain.generateCInterface(file);
+  file.close();
+
+  file.open((path+"igenerate_rectilinear_domain_attr.F90").c_str());
+  genDomain.generateFortranInterface(file);
+  file.close();
+
+  file.open((path+"compute_connectivity_domain_interface_attr.F90").c_str());
+  compConDomain.generateFortran2003Interface(file);
+  file.close();
+
+  file.open((path+"iccompute_connectivity_domain_attr.cpp").c_str());
+  compConDomain.generateCInterface(file);
+  file.close();
+
+  file.open((path+"icompute_connectivity_domain_attr.F90").c_str());
+  compConDomain.generateFortranInterface(file);
+  file.close();
+
+  file.open((path+"expand_domain_interface_attr.F90").c_str());
+  expandDomain.generateFortran2003Interface(file);
+  file.close();
+
+  file.open((path+"icexpand_domain_attr.cpp").c_str());
+  expandDomain.generateCInterface(file);
+  file.close();
+
+  file.open((path+"iexpand_domain_attr.F90").c_str());
+  expandDomain.generateFortranInterface(file);
+  file.close();
+  
+  /*!
+    Axis transformations
+  */
   file.open((path+"zoom_axis_interface_attr.F90").c_str());
   zoomAxis.generateFortran2003Interface(file);
@@ -267,43 +326,4 @@
   file.close();
 
-  file.open((path+"interpolate_domain_interface_attr.F90").c_str());
-  interpolateDomain.generateFortran2003Interface(file);
-  file.close();
-
-  file.open((path+"icinterpolate_domain_attr.cpp").c_str());
-  interpolateDomain.generateCInterface(file);
-  file.close();
-
-  file.open((path+"iinterpolate_domain_attr.F90").c_str());
-  interpolateDomain.generateFortranInterface(file);
-  file.close();
-
-  file.open((path+"generate_rectilinear_domain_interface_attr.F90").c_str());
-  genDomain.generateFortran2003Interface(file);
-  file.close();
-
-  file.open((path+"icgenerate_rectilinear_domain_attr.cpp").c_str());
-  genDomain.generateCInterface(file);
-  file.close();
-
-  file.open((path+"igenerate_rectilinear_domain_attr.F90").c_str());
-  genDomain.generateFortranInterface(file);
-  file.close();
-
-  file.open((path+"compute_connectivity_domain_interface_attr.F90").c_str());
-  compConDomain.generateFortran2003Interface(file);
-  file.close();
-
-  file.open((path+"iccompute_connectivity_domain_attr.cpp").c_str());
-  compConDomain.generateCInterface(file);
-  file.close();
-
-  file.open((path+"icompute_connectivity_domain_attr.F90").c_str());
-  compConDomain.generateFortranInterface(file);
-  file.close();
-
-
-
-
   file.open((path+"inverse_axis_interface_attr.F90").c_str());
   inverseAxis.generateFortran2003Interface(file);
@@ -318,4 +338,32 @@
   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());
+  reduceDomainToAxis.generateCInterface(file);
+  file.close();
+
+  file.open((path+"ireduce_domain_to_axis_attr.F90").c_str());
+  reduceDomainToAxis.generateFortranInterface(file);
+  file.close();
+  
+  file.open((path+"extract_domain_to_axis_interface_attr.F90").c_str());
+  extractDomainToAxis.generateFortran2003Interface(file);
+  file.close();
+
+  file.open((path+"icextract_domain_to_axis_attr.cpp").c_str());
+  extractDomainToAxis.generateCInterface(file);
+  file.close();
+
+  file.open((path+"iextract_domain_to_axis_attr.F90").c_str());
+  extractDomainToAxis.generateFortranInterface(file);
+  file.close();
+
+
+  /*!
+    Scalar transformations
+  */
   file.open((path+"reduce_axis_to_scalar_interface_attr.F90").c_str());
   reduceAxisToScalar.generateFortran2003Interface(file);
@@ -330,4 +378,28 @@
   file.close();
 
+  file.open((path+"extract_axis_to_scalar_interface_attr.F90").c_str());
+  extractAxisToScalar.generateFortran2003Interface(file);
+  file.close();
+
+  file.open((path+"icextract_axis_to_scalar_attr.cpp").c_str());
+  extractAxisToScalar.generateCInterface(file);
+  file.close();
+
+  file.open((path+"iextract_axis_to_scalar_attr.F90").c_str());
+  extractAxisToScalar.generateFortranInterface(file);
+  file.close();
+
+  file.open((path+"reduce_domain_to_scalar_interface_attr.F90").c_str());
+  reduceDomainToScalar.generateFortran2003Interface(file);
+  file.close();
+
+  file.open((path+"icreduce_domain_to_scalar_attr.cpp").c_str());
+  reduceDomainToScalar.generateCInterface(file);
+  file.close();
+
+  file.open((path+"ireduce_domain_to_scalar_attr.F90").c_str());
+  reduceDomainToScalar.generateFortranInterface(file);
+  file.close();
+
   file.open((path+"context_interface_attr.F90").c_str());
   context->generateFortran2003Interface(file);
Index: /XIOS/trunk/src/interface/c/icexpand_domain.cpp
===================================================================
--- /XIOS/trunk/src/interface/c/icexpand_domain.cpp	(revision 981)
+++ /XIOS/trunk/src/interface/c/icexpand_domain.cpp	(revision 981)
@@ -0,0 +1,46 @@
+/* ************************************************************************** *
+ *      Copyright Â© IPSL/LSCE, xios, Avril 2010 - Octobre 2011         *
+ * ************************************************************************** */
+
+#include <boost/multi_array.hpp>
+#include <boost/shared_ptr.hpp>
+
+#include "xios.hpp"
+
+#include "object_template.hpp"
+#include "group_template.hpp"
+#include "attribute_template.hpp"
+
+#include "icutil.hpp"
+#include "timer.hpp"
+#include "expand_domain.hpp"
+
+extern "C"
+{
+// /////////////////////////////// DÃ©finitions ////////////////////////////// //
+
+   // ----------------------- RedÃ©finition de types ----------------------------
+
+   typedef xios::CExpandDomain   * XExpandDomainPtr;
+
+   // ------------------------ CrÃ©ation des handle -----------------------------
+   void cxios_expand_domain_handle_create(XExpandDomainPtr * _ret, const char * _id, int _id_len)
+   {
+      std::string id;
+      if (!cstr2string(_id, _id_len, id)) return;
+      CTimer::get("XIOS").resume() ;
+      *_ret = xios::CExpandDomain::get(id);
+      CTimer::get("XIOS").suspend() ;
+   }
+
+   // -------------------- VÃ©rification des identifiants -----------------------
+   void cxios_expand_domain_valid_id(bool * _ret, const char * _id, int _id_len)
+   {
+      std::string id;
+      if (!cstr2string(_id, _id_len, id)) return;
+
+      CTimer::get("XIOS").resume() ;
+      *_ret = xios::CExpandDomain::has(id);
+      CTimer::get("XIOS").suspend() ;
+   }
+} // extern "C"
Index: /XIOS/trunk/src/interface/c/icextract_to_axis.cpp
===================================================================
--- /XIOS/trunk/src/interface/c/icextract_to_axis.cpp	(revision 981)
+++ /XIOS/trunk/src/interface/c/icextract_to_axis.cpp	(revision 981)
@@ -0,0 +1,47 @@
+/* ************************************************************************** *
+ *      Copyright Â© IPSL/LSCE, xios, Avril 2010 - Octobre 2011         *
+ * ************************************************************************** */
+
+#include <boost/multi_array.hpp>
+#include <boost/shared_ptr.hpp>
+
+#include "xios.hpp"
+
+#include "object_template.hpp"
+#include "group_template.hpp"
+#include "attribute_template.hpp"
+
+#include "icutil.hpp"
+#include "timer.hpp"
+#include "extract_domain_to_axis.hpp"
+
+extern "C"
+{
+// /////////////////////////////// DÃ©finitions ////////////////////////////// //
+
+   // ----------------------- RedÃ©finition de types ----------------------------
+
+   typedef xios::CExtractDomainToAxis      * XExtractDomainToAxisPtr;
+   
+   // ------------------------ CrÃ©ation des handle -----------------------------
+   void cxios_extract_domain_to_axis_handle_create(XExtractDomainToAxisPtr * _ret, const char * _id, int _id_len)
+   {
+      std::string id;
+      if (!cstr2string(_id, _id_len, id)) return;
+      CTimer::get("XIOS").resume() ;
+      *_ret = xios::CExtractDomainToAxis::get(id);
+      CTimer::get("XIOS").suspend() ;
+   }
+
+   // -------------------- VÃ©rification des identifiants -----------------------
+   void cxios_extract_domain_to_axis_valid_id(bool * _ret, const char * _id, int _id_len)
+   {
+      std::string id;
+      if (!cstr2string(_id, _id_len, id)) return;
+
+      CTimer::get("XIOS").resume() ;
+      *_ret = xios::CExtractDomainToAxis::has(id);
+      CTimer::get("XIOS").suspend() ;
+   }
+
+} // extern "C"
Index: /XIOS/trunk/src/interface/c/icextract_to_scalar.cpp
===================================================================
--- /XIOS/trunk/src/interface/c/icextract_to_scalar.cpp	(revision 981)
+++ /XIOS/trunk/src/interface/c/icextract_to_scalar.cpp	(revision 981)
@@ -0,0 +1,47 @@
+/* ************************************************************************** *
+ *      Copyright Â© IPSL/LSCE, xios, Avril 2010 - Octobre 2011         *
+ * ************************************************************************** */
+
+#include <boost/multi_array.hpp>
+#include <boost/shared_ptr.hpp>
+
+#include "xios.hpp"
+
+#include "object_template.hpp"
+#include "group_template.hpp"
+#include "attribute_template.hpp"
+
+#include "icutil.hpp"
+#include "timer.hpp"
+#include "extract_axis_to_scalar.hpp"
+
+extern "C"
+{
+// /////////////////////////////// DÃ©finitions ////////////////////////////// //
+
+   // ----------------------- RedÃ©finition de types ----------------------------
+
+   typedef xios::CExtractAxisToScalar      * XExtractAxisToScalarPtr;
+   
+   // ------------------------ CrÃ©ation des handle -----------------------------
+   void cxios_extract_axis_to_scalar_handle_create(XExtractAxisToScalarPtr * _ret, const char * _id, int _id_len)
+   {
+      std::string id;
+      if (!cstr2string(_id, _id_len, id)) return;
+      CTimer::get("XIOS").resume() ;
+      *_ret = xios::CExtractAxisToScalar::get(id);
+      CTimer::get("XIOS").suspend() ;
+   }
+
+   // -------------------- VÃ©rification des identifiants -----------------------
+   void cxios_extract_axis_to_scalar_valid_id(bool * _ret, const char * _id, int _id_len)
+   {
+      std::string id;
+      if (!cstr2string(_id, _id_len, id)) return;
+
+      CTimer::get("XIOS").resume() ;
+      *_ret = xios::CExtractAxisToScalar::has(id);
+      CTimer::get("XIOS").suspend() ;
+   }
+
+} // extern "C"
Index: OS/trunk/src/interface/c/icreduce_axis_to_scalar.cpp
===================================================================
--- /XIOS/trunk/src/interface/c/icreduce_axis_to_scalar.cpp	(revision 980)
+++ 	(revision )
@@ -1,46 +1,0 @@
-/* ************************************************************************** *
- *      Copyright Â© IPSL/LSCE, xios, Avril 2010 - Octobre 2011         *
- * ************************************************************************** */
-
-#include <boost/multi_array.hpp>
-#include <boost/shared_ptr.hpp>
-
-#include "xios.hpp"
-
-#include "object_template.hpp"
-#include "group_template.hpp"
-#include "attribute_template.hpp"
-
-#include "icutil.hpp"
-#include "timer.hpp"
-#include "reduce_axis_to_scalar.hpp"
-
-extern "C"
-{
-// /////////////////////////////// DÃ©finitions ////////////////////////////// //
-
-   // ----------------------- RedÃ©finition de types ----------------------------
-
-   typedef xios::CReduceAxisToScalar      * XReduceAxisToScalarPtr;
-
-   // ------------------------ CrÃ©ation des handle -----------------------------
-   void cxios_reduce_axis_to_scalar_handle_create(XReduceAxisToScalarPtr * _ret, const char * _id, int _id_len)
-   {
-      std::string id;
-      if (!cstr2string(_id, _id_len, id)) return;
-      CTimer::get("XIOS").resume() ;
-      *_ret = xios::CReduceAxisToScalar::get(id);
-      CTimer::get("XIOS").suspend() ;
-   }
-
-   // -------------------- VÃ©rification des identifiants -----------------------
-   void cxios_reduce_axis_to_scalar_valid_id(bool * _ret, const char * _id, int _id_len)
-   {
-      std::string id;
-      if (!cstr2string(_id, _id_len, id)) return;
-
-      CTimer::get("XIOS").resume() ;
-      *_ret = xios::CReduceAxisToScalar::has(id);
-      CTimer::get("XIOS").suspend() ;
-   }
-} // extern "C"
Index: /XIOS/trunk/src/interface/c/icreduce_to_axis.cpp
===================================================================
--- /XIOS/trunk/src/interface/c/icreduce_to_axis.cpp	(revision 981)
+++ /XIOS/trunk/src/interface/c/icreduce_to_axis.cpp	(revision 981)
@@ -0,0 +1,47 @@
+/* ************************************************************************** *
+ *      Copyright Â© IPSL/LSCE, xios, Avril 2010 - Octobre 2011         *
+ * ************************************************************************** */
+
+#include <boost/multi_array.hpp>
+#include <boost/shared_ptr.hpp>
+
+#include "xios.hpp"
+
+#include "object_template.hpp"
+#include "group_template.hpp"
+#include "attribute_template.hpp"
+
+#include "icutil.hpp"
+#include "timer.hpp"
+#include "reduce_domain_to_axis.hpp"
+
+extern "C"
+{
+// /////////////////////////////// DÃ©finitions ////////////////////////////// //
+
+   // ----------------------- RedÃ©finition de types ----------------------------
+
+   typedef xios::CReduceDomainToAxis      * XReduceDomainToAxisPtr;
+   
+   // ------------------------ CrÃ©ation des handle -----------------------------
+   void cxios_reduce_domain_to_axis_handle_create(XReduceDomainToAxisPtr * _ret, const char * _id, int _id_len)
+   {
+      std::string id;
+      if (!cstr2string(_id, _id_len, id)) return;
+      CTimer::get("XIOS").resume() ;
+      *_ret = xios::CReduceDomainToAxis::get(id);
+      CTimer::get("XIOS").suspend() ;
+   }
+
+   // -------------------- VÃ©rification des identifiants -----------------------
+   void cxios_reduce_domain_to_axis_valid_id(bool * _ret, const char * _id, int _id_len)
+   {
+      std::string id;
+      if (!cstr2string(_id, _id_len, id)) return;
+
+      CTimer::get("XIOS").resume() ;
+      *_ret = xios::CReduceDomainToAxis::has(id);
+      CTimer::get("XIOS").suspend() ;
+   }
+
+} // extern "C"
Index: /XIOS/trunk/src/interface/c/icreduce_to_scalar.cpp
===================================================================
--- /XIOS/trunk/src/interface/c/icreduce_to_scalar.cpp	(revision 981)
+++ /XIOS/trunk/src/interface/c/icreduce_to_scalar.cpp	(revision 981)
@@ -0,0 +1,69 @@
+/* ************************************************************************** *
+ *      Copyright Â© IPSL/LSCE, xios, Avril 2010 - Octobre 2011         *
+ * ************************************************************************** */
+
+#include <boost/multi_array.hpp>
+#include <boost/shared_ptr.hpp>
+
+#include "xios.hpp"
+
+#include "object_template.hpp"
+#include "group_template.hpp"
+#include "attribute_template.hpp"
+
+#include "icutil.hpp"
+#include "timer.hpp"
+#include "reduce_axis_to_scalar.hpp"
+#include "reduce_domain_to_scalar.hpp"
+
+extern "C"
+{
+// /////////////////////////////// DÃ©finitions ////////////////////////////// //
+
+   // ----------------------- RedÃ©finition de types ----------------------------
+
+   typedef xios::CReduceAxisToScalar      * XReduceAxisToScalarPtr;
+   typedef xios::CReduceDomainToScalar    * XReduceDomainToScalarPtr;
+
+   // ------------------------ CrÃ©ation des handle -----------------------------
+   void cxios_reduce_axis_to_scalar_handle_create(XReduceAxisToScalarPtr * _ret, const char * _id, int _id_len)
+   {
+      std::string id;
+      if (!cstr2string(_id, _id_len, id)) return;
+      CTimer::get("XIOS").resume() ;
+      *_ret = xios::CReduceAxisToScalar::get(id);
+      CTimer::get("XIOS").suspend() ;
+   }
+
+   // -------------------- VÃ©rification des identifiants -----------------------
+   void cxios_reduce_axis_to_scalar_valid_id(bool * _ret, const char * _id, int _id_len)
+   {
+      std::string id;
+      if (!cstr2string(_id, _id_len, id)) return;
+
+      CTimer::get("XIOS").resume() ;
+      *_ret = xios::CReduceAxisToScalar::has(id);
+      CTimer::get("XIOS").suspend() ;
+   }
+
+   void cxios_reduce_domain_to_scalar_handle_create(XReduceDomainToScalarPtr * _ret, const char * _id, int _id_len)
+   {
+      std::string id;
+      if (!cstr2string(_id, _id_len, id)) return;
+      CTimer::get("XIOS").resume() ;
+      *_ret = xios::CReduceDomainToScalar::get(id);
+      CTimer::get("XIOS").suspend() ;
+   }
+
+   // -------------------- VÃ©rification des identifiants -----------------------
+   void cxios_reduce_domain_to_scalar_valid_id(bool * _ret, const char * _id, int _id_len)
+   {
+      std::string id;
+      if (!cstr2string(_id, _id_len, id)) return;
+
+      CTimer::get("XIOS").resume() ;
+      *_ret = xios::CReduceDomainToScalar::has(id);
+      CTimer::get("XIOS").suspend() ;
+   }
+
+} // extern "C"
Index: /XIOS/trunk/src/interface/c/icxml_tree.cpp
===================================================================
--- /XIOS/trunk/src/interface/c/icxml_tree.cpp	(revision 980)
+++ /XIOS/trunk/src/interface/c/icxml_tree.cpp	(revision 981)
@@ -51,12 +51,18 @@
    typedef xios::CGenerateRectilinearDomain *  XGenerateRectilinearDomainPtr;
    typedef xios::CComputeConnectivityDomain *  XComputeConnectivityDomainPtr;
-
-   typedef xios::CTransformation<CAxis>   *  XTransformationAxisPtr;
-   typedef xios::CZoomAxis                *  XZoomAxisPtr;
-   typedef xios::CInterpolateAxis         *  XInterpolateAxisPtr;
-   typedef xios::CInverseAxis             *  XInverseAxisPtr;
+   typedef xios::CExpandDomain              *  XExpandDomainPtr;
+
+   typedef xios::CTransformation<CAxis>     *  XTransformationAxisPtr;
+   typedef xios::CZoomAxis                  *  XZoomAxisPtr;
+   typedef xios::CInterpolateAxis           *  XInterpolateAxisPtr;
+   typedef xios::CInverseAxis               *  XInverseAxisPtr;
+   typedef xios::CExtractDomainToAxis       *  XExtractDomainToAxisPtr;
+   typedef xios::CReduceDomainToAxis        *  XReduceDomainToAxisPtr;
 
    typedef xios::CTransformation<CScalar>   *  XTransformationScalarPtr;
    typedef xios::CReduceAxisToScalar        *  XReduceAxisToScalarPtr;
+   typedef xios::CReduceDomainToScalar      *  XReduceDomainToScalarPtr;
+   typedef xios::CExtractAxisToScalar       *  XExtractAxisToScalarPtr;
+
 
    // ----------------------- Ajout d'enfant Ã  un parent -----------------------
@@ -402,4 +408,7 @@
    }
 
+   //---------------------------------------------------------------------------
+   //-------------------------Transformations -----------------------------------
+   //---------------------------------------------------------------------------
    void cxios_xml_tree_add_zoomdomaintodomain
       (XDomainPtr parent_, XZoomDomainPtr * child_, const char * child_id, int child_id_size)
@@ -464,4 +473,22 @@
       if (cstr2string(child_id, child_id_size, child_id_str))
       {
+         tmpChild_ = parent_->addTransformation(TRANS_EXPAND_DOMAIN, child_id_str);
+      }
+      else
+      {
+         tmpChild_ = parent_->addTransformation(TRANS_EXPAND_DOMAIN);
+      }
+      *child_ = static_cast<XComputeConnectivityDomainPtr>(tmpChild_);
+      CTimer::get("XIOS").suspend() ;
+   }
+
+   void cxios_xml_tree_add_expanddomaintodomain
+      (XDomainPtr parent_, XExpandDomainPtr * child_, const char * child_id, int child_id_size)
+   {
+      std::string child_id_str;
+      XTransformationDomainPtr tmpChild_;
+      CTimer::get("XIOS").resume() ;
+      if (cstr2string(child_id, child_id_size, child_id_str))
+      {
          tmpChild_ = parent_->addTransformation(TRANS_COMPUTE_CONNECTIVITY_DOMAIN, child_id_str);
       }
@@ -470,8 +497,9 @@
          tmpChild_ = parent_->addTransformation(TRANS_COMPUTE_CONNECTIVITY_DOMAIN);
       }
-      *child_ = static_cast<XComputeConnectivityDomainPtr>(tmpChild_);
-      CTimer::get("XIOS").suspend() ;
-   }
-
+      *child_ = static_cast<XExpandDomainPtr>(tmpChild_);
+      CTimer::get("XIOS").suspend() ;
+   }
+
+   // -----------------------Axis transformation--------------------------------
    void cxios_xml_tree_add_zoomaxistoaxis
       (XAxisPtr parent_, XZoomAxisPtr * child_, const char * child_id, int child_id_size)
@@ -528,4 +556,41 @@
    }
 
+   void cxios_xml_tree_add_extractdomaintoaxistoaxis
+      (XAxisPtr parent_, XExtractDomainToAxisPtr * child_, const char * child_id, int child_id_size)
+   {
+      std::string child_id_str;
+      XTransformationAxisPtr tmpChild_;
+      CTimer::get("XIOS").resume() ;
+      if (cstr2string(child_id, child_id_size, child_id_str))
+      {
+         tmpChild_ = parent_->addTransformation(TRANS_EXTRACT_DOMAIN_TO_AXIS, child_id_str);
+      }
+      else
+      {
+         tmpChild_ = parent_->addTransformation(TRANS_EXTRACT_DOMAIN_TO_AXIS);
+      }
+      *child_ = static_cast<XExtractDomainToAxisPtr>(tmpChild_);
+      CTimer::get("XIOS").suspend() ;
+   }
+
+   void cxios_xml_tree_add_reducedomaintoaxistoaxis
+      (XAxisPtr parent_, XReduceDomainToAxisPtr * child_, const char * child_id, int child_id_size)
+   {
+      std::string child_id_str;
+      XTransformationAxisPtr tmpChild_;
+      CTimer::get("XIOS").resume() ;
+      if (cstr2string(child_id, child_id_size, child_id_str))
+      {
+         tmpChild_ = parent_->addTransformation(TRANS_REDUCE_DOMAIN_TO_AXIS, child_id_str);
+      }
+      else
+      {
+         tmpChild_ = parent_->addTransformation(TRANS_REDUCE_DOMAIN_TO_AXIS);
+      }
+      *child_ = static_cast<XReduceDomainToAxisPtr>(tmpChild_);
+      CTimer::get("XIOS").suspend() ;
+   }
+
+
    void cxios_xml_tree_add_reduceaxistoscalartoscalar
       (XScalarPtr parent_, XReduceAxisToScalarPtr * child_, const char * child_id, int child_id_size)
@@ -543,4 +608,40 @@
       }
       *child_ = static_cast<XReduceAxisToScalarPtr>(tmpChild_);
+      CTimer::get("XIOS").suspend() ;
+   }
+
+   void cxios_xml_tree_add_reducedomaintoscalartoscalar
+      (XScalarPtr parent_, XReduceDomainToScalarPtr * child_, const char * child_id, int child_id_size)
+   {
+      std::string child_id_str;
+      XTransformationScalarPtr tmpChild_;
+      CTimer::get("XIOS").resume() ;
+      if (cstr2string(child_id, child_id_size, child_id_str))
+      {
+         tmpChild_ = parent_->addTransformation(TRANS_REDUCE_DOMAIN_TO_SCALAR, child_id_str);
+      }
+      else
+      {
+         tmpChild_ = parent_->addTransformation(TRANS_REDUCE_DOMAIN_TO_SCALAR);
+      }
+      *child_ = static_cast<XReduceDomainToScalarPtr>(tmpChild_);
+      CTimer::get("XIOS").suspend() ;
+   }
+
+   void cxios_xml_tree_add_extractaxistoscalartoscalar
+      (XScalarPtr parent_, XExtractAxisToScalarPtr * child_, const char * child_id, int child_id_size)
+   {
+      std::string child_id_str;
+      XTransformationScalarPtr tmpChild_;
+      CTimer::get("XIOS").resume() ;
+      if (cstr2string(child_id, child_id_size, child_id_str))
+      {
+         tmpChild_ = parent_->addTransformation(TRANS_EXTRACT_AXIS_TO_SCALAR, child_id_str);
+      }
+      else
+      {
+         tmpChild_ = parent_->addTransformation(TRANS_EXTRACT_AXIS_TO_SCALAR);
+      }
+      *child_ = static_cast<XExtractAxisToScalarPtr>(tmpChild_);
       CTimer::get("XIOS").suspend() ;
    }
Index: /XIOS/trunk/src/interface/c_attr/icexpand_domain_attr.cpp
===================================================================
--- /XIOS/trunk/src/interface/c_attr/icexpand_domain_attr.cpp	(revision 981)
+++ /XIOS/trunk/src/interface/c_attr/icexpand_domain_attr.cpp	(revision 981)
@@ -0,0 +1,67 @@
+/* ************************************************************************** *
+ *               Interface auto generated - do not modify                     *
+ * ************************************************************************** */
+
+#include <boost/multi_array.hpp>
+#include <boost/shared_ptr.hpp>
+#include "xios.hpp"
+#include "attribute_template.hpp"
+#include "object_template.hpp"
+#include "group_template.hpp"
+#include "icutil.hpp"
+#include "icdate.hpp"
+#include "timer.hpp"
+#include "node_type.hpp"
+
+extern "C"
+{
+  typedef xios::CExpandDomain* expand_domain_Ptr;
+
+  void cxios_set_expand_domain_order(expand_domain_Ptr expand_domain_hdl, int order)
+  {
+    CTimer::get("XIOS").resume();
+    expand_domain_hdl->order.setValue(order);
+    CTimer::get("XIOS").suspend();
+  }
+
+  void cxios_get_expand_domain_order(expand_domain_Ptr expand_domain_hdl, int* order)
+  {
+    CTimer::get("XIOS").resume();
+    *order = expand_domain_hdl->order.getInheritedValue();
+    CTimer::get("XIOS").suspend();
+  }
+
+  bool cxios_is_defined_expand_domain_order(expand_domain_Ptr expand_domain_hdl)
+  {
+     CTimer::get("XIOS").resume();
+     bool isDefined = expand_domain_hdl->order.hasInheritedValue();
+     CTimer::get("XIOS").suspend();
+     return isDefined;
+  }
+
+
+  void cxios_set_expand_domain_type(expand_domain_Ptr expand_domain_hdl, const char * type, int type_size)
+  {
+    std::string type_str;
+    if (!cstr2string(type, type_size, type_str)) return;
+    CTimer::get("XIOS").resume();
+    expand_domain_hdl->type.fromString(type_str);
+    CTimer::get("XIOS").suspend();
+  }
+
+  void cxios_get_expand_domain_type(expand_domain_Ptr expand_domain_hdl, char * type, int type_size)
+  {
+    CTimer::get("XIOS").resume();
+    if (!string_copy(expand_domain_hdl->type.getInheritedStringValue(), type, type_size))
+      ERROR("void cxios_get_expand_domain_type(expand_domain_Ptr expand_domain_hdl, char * type, int type_size)", << "Input string is too short");
+    CTimer::get("XIOS").suspend();
+  }
+
+  bool cxios_is_defined_expand_domain_type(expand_domain_Ptr expand_domain_hdl)
+  {
+     CTimer::get("XIOS").resume();
+     bool isDefined = expand_domain_hdl->type.hasInheritedValue();
+     CTimer::get("XIOS").suspend();
+     return isDefined;
+  }
+}
Index: /XIOS/trunk/src/interface/c_attr/icextract_axis_to_scalar_attr.cpp
===================================================================
--- /XIOS/trunk/src/interface/c_attr/icextract_axis_to_scalar_attr.cpp	(revision 981)
+++ /XIOS/trunk/src/interface/c_attr/icextract_axis_to_scalar_attr.cpp	(revision 981)
@@ -0,0 +1,41 @@
+/* ************************************************************************** *
+ *               Interface auto generated - do not modify                     *
+ * ************************************************************************** */
+
+#include <boost/multi_array.hpp>
+#include <boost/shared_ptr.hpp>
+#include "xios.hpp"
+#include "attribute_template.hpp"
+#include "object_template.hpp"
+#include "group_template.hpp"
+#include "icutil.hpp"
+#include "icdate.hpp"
+#include "timer.hpp"
+#include "node_type.hpp"
+
+extern "C"
+{
+  typedef xios::CExtractAxisToScalar* extract_axis_to_scalar_Ptr;
+
+  void cxios_set_extract_axis_to_scalar_position(extract_axis_to_scalar_Ptr extract_axis_to_scalar_hdl, int position)
+  {
+    CTimer::get("XIOS").resume();
+    extract_axis_to_scalar_hdl->position.setValue(position);
+    CTimer::get("XIOS").suspend();
+  }
+
+  void cxios_get_extract_axis_to_scalar_position(extract_axis_to_scalar_Ptr extract_axis_to_scalar_hdl, int* position)
+  {
+    CTimer::get("XIOS").resume();
+    *position = extract_axis_to_scalar_hdl->position.getInheritedValue();
+    CTimer::get("XIOS").suspend();
+  }
+
+  bool cxios_is_defined_extract_axis_to_scalar_position(extract_axis_to_scalar_Ptr extract_axis_to_scalar_hdl)
+  {
+     CTimer::get("XIOS").resume();
+     bool isDefined = extract_axis_to_scalar_hdl->position.hasInheritedValue();
+     CTimer::get("XIOS").suspend();
+     return isDefined;
+  }
+}
Index: /XIOS/trunk/src/interface/c_attr/icextract_domain_to_axis_attr.cpp
===================================================================
--- /XIOS/trunk/src/interface/c_attr/icextract_domain_to_axis_attr.cpp	(revision 981)
+++ /XIOS/trunk/src/interface/c_attr/icextract_domain_to_axis_attr.cpp	(revision 981)
@@ -0,0 +1,67 @@
+/* ************************************************************************** *
+ *               Interface auto generated - do not modify                     *
+ * ************************************************************************** */
+
+#include <boost/multi_array.hpp>
+#include <boost/shared_ptr.hpp>
+#include "xios.hpp"
+#include "attribute_template.hpp"
+#include "object_template.hpp"
+#include "group_template.hpp"
+#include "icutil.hpp"
+#include "icdate.hpp"
+#include "timer.hpp"
+#include "node_type.hpp"
+
+extern "C"
+{
+  typedef xios::CExtractDomainToAxis* extract_domain_to_axis_Ptr;
+
+  void cxios_set_extract_domain_to_axis_direction(extract_domain_to_axis_Ptr extract_domain_to_axis_hdl, const char * direction, int direction_size)
+  {
+    std::string direction_str;
+    if (!cstr2string(direction, direction_size, direction_str)) return;
+    CTimer::get("XIOS").resume();
+    extract_domain_to_axis_hdl->direction.fromString(direction_str);
+    CTimer::get("XIOS").suspend();
+  }
+
+  void cxios_get_extract_domain_to_axis_direction(extract_domain_to_axis_Ptr extract_domain_to_axis_hdl, char * direction, int direction_size)
+  {
+    CTimer::get("XIOS").resume();
+    if (!string_copy(extract_domain_to_axis_hdl->direction.getInheritedStringValue(), direction, direction_size))
+      ERROR("void cxios_get_extract_domain_to_axis_direction(extract_domain_to_axis_Ptr extract_domain_to_axis_hdl, char * direction, int direction_size)", << "Input string is too short");
+    CTimer::get("XIOS").suspend();
+  }
+
+  bool cxios_is_defined_extract_domain_to_axis_direction(extract_domain_to_axis_Ptr extract_domain_to_axis_hdl)
+  {
+     CTimer::get("XIOS").resume();
+     bool isDefined = extract_domain_to_axis_hdl->direction.hasInheritedValue();
+     CTimer::get("XIOS").suspend();
+     return isDefined;
+  }
+
+
+  void cxios_set_extract_domain_to_axis_position(extract_domain_to_axis_Ptr extract_domain_to_axis_hdl, int position)
+  {
+    CTimer::get("XIOS").resume();
+    extract_domain_to_axis_hdl->position.setValue(position);
+    CTimer::get("XIOS").suspend();
+  }
+
+  void cxios_get_extract_domain_to_axis_position(extract_domain_to_axis_Ptr extract_domain_to_axis_hdl, int* position)
+  {
+    CTimer::get("XIOS").resume();
+    *position = extract_domain_to_axis_hdl->position.getInheritedValue();
+    CTimer::get("XIOS").suspend();
+  }
+
+  bool cxios_is_defined_extract_domain_to_axis_position(extract_domain_to_axis_Ptr extract_domain_to_axis_hdl)
+  {
+     CTimer::get("XIOS").resume();
+     bool isDefined = extract_domain_to_axis_hdl->position.hasInheritedValue();
+     CTimer::get("XIOS").suspend();
+     return isDefined;
+  }
+}
Index: /XIOS/trunk/src/interface/c_attr/icreduce_domain_to_axis_attr.cpp
===================================================================
--- /XIOS/trunk/src/interface/c_attr/icreduce_domain_to_axis_attr.cpp	(revision 981)
+++ /XIOS/trunk/src/interface/c_attr/icreduce_domain_to_axis_attr.cpp	(revision 981)
@@ -0,0 +1,70 @@
+/* ************************************************************************** *
+ *               Interface auto generated - do not modify                     *
+ * ************************************************************************** */
+
+#include <boost/multi_array.hpp>
+#include <boost/shared_ptr.hpp>
+#include "xios.hpp"
+#include "attribute_template.hpp"
+#include "object_template.hpp"
+#include "group_template.hpp"
+#include "icutil.hpp"
+#include "icdate.hpp"
+#include "timer.hpp"
+#include "node_type.hpp"
+
+extern "C"
+{
+  typedef xios::CReduceDomainToAxis* reduce_domain_to_axis_Ptr;
+
+  void cxios_set_reduce_domain_to_axis_direction(reduce_domain_to_axis_Ptr reduce_domain_to_axis_hdl, const char * direction, int direction_size)
+  {
+    std::string direction_str;
+    if (!cstr2string(direction, direction_size, direction_str)) return;
+    CTimer::get("XIOS").resume();
+    reduce_domain_to_axis_hdl->direction.fromString(direction_str);
+    CTimer::get("XIOS").suspend();
+  }
+
+  void cxios_get_reduce_domain_to_axis_direction(reduce_domain_to_axis_Ptr reduce_domain_to_axis_hdl, char * direction, int direction_size)
+  {
+    CTimer::get("XIOS").resume();
+    if (!string_copy(reduce_domain_to_axis_hdl->direction.getInheritedStringValue(), direction, direction_size))
+      ERROR("void cxios_get_reduce_domain_to_axis_direction(reduce_domain_to_axis_Ptr reduce_domain_to_axis_hdl, char * direction, int direction_size)", << "Input string is too short");
+    CTimer::get("XIOS").suspend();
+  }
+
+  bool cxios_is_defined_reduce_domain_to_axis_direction(reduce_domain_to_axis_Ptr reduce_domain_to_axis_hdl)
+  {
+     CTimer::get("XIOS").resume();
+     bool isDefined = reduce_domain_to_axis_hdl->direction.hasInheritedValue();
+     CTimer::get("XIOS").suspend();
+     return isDefined;
+  }
+
+
+  void cxios_set_reduce_domain_to_axis_operation(reduce_domain_to_axis_Ptr reduce_domain_to_axis_hdl, const char * operation, int operation_size)
+  {
+    std::string operation_str;
+    if (!cstr2string(operation, operation_size, operation_str)) return;
+    CTimer::get("XIOS").resume();
+    reduce_domain_to_axis_hdl->operation.fromString(operation_str);
+    CTimer::get("XIOS").suspend();
+  }
+
+  void cxios_get_reduce_domain_to_axis_operation(reduce_domain_to_axis_Ptr reduce_domain_to_axis_hdl, char * operation, int operation_size)
+  {
+    CTimer::get("XIOS").resume();
+    if (!string_copy(reduce_domain_to_axis_hdl->operation.getInheritedStringValue(), operation, operation_size))
+      ERROR("void cxios_get_reduce_domain_to_axis_operation(reduce_domain_to_axis_Ptr reduce_domain_to_axis_hdl, char * operation, int operation_size)", << "Input string is too short");
+    CTimer::get("XIOS").suspend();
+  }
+
+  bool cxios_is_defined_reduce_domain_to_axis_operation(reduce_domain_to_axis_Ptr reduce_domain_to_axis_hdl)
+  {
+     CTimer::get("XIOS").resume();
+     bool isDefined = reduce_domain_to_axis_hdl->operation.hasInheritedValue();
+     CTimer::get("XIOS").suspend();
+     return isDefined;
+  }
+}
Index: /XIOS/trunk/src/interface/c_attr/icreduce_domain_to_scalar_attr.cpp
===================================================================
--- /XIOS/trunk/src/interface/c_attr/icreduce_domain_to_scalar_attr.cpp	(revision 981)
+++ /XIOS/trunk/src/interface/c_attr/icreduce_domain_to_scalar_attr.cpp	(revision 981)
@@ -0,0 +1,44 @@
+/* ************************************************************************** *
+ *               Interface auto generated - do not modify                     *
+ * ************************************************************************** */
+
+#include <boost/multi_array.hpp>
+#include <boost/shared_ptr.hpp>
+#include "xios.hpp"
+#include "attribute_template.hpp"
+#include "object_template.hpp"
+#include "group_template.hpp"
+#include "icutil.hpp"
+#include "icdate.hpp"
+#include "timer.hpp"
+#include "node_type.hpp"
+
+extern "C"
+{
+  typedef xios::CReduceDomainToScalar* reduce_domain_to_scalar_Ptr;
+
+  void cxios_set_reduce_domain_to_scalar_operation(reduce_domain_to_scalar_Ptr reduce_domain_to_scalar_hdl, const char * operation, int operation_size)
+  {
+    std::string operation_str;
+    if (!cstr2string(operation, operation_size, operation_str)) return;
+    CTimer::get("XIOS").resume();
+    reduce_domain_to_scalar_hdl->operation.fromString(operation_str);
+    CTimer::get("XIOS").suspend();
+  }
+
+  void cxios_get_reduce_domain_to_scalar_operation(reduce_domain_to_scalar_Ptr reduce_domain_to_scalar_hdl, char * operation, int operation_size)
+  {
+    CTimer::get("XIOS").resume();
+    if (!string_copy(reduce_domain_to_scalar_hdl->operation.getInheritedStringValue(), operation, operation_size))
+      ERROR("void cxios_get_reduce_domain_to_scalar_operation(reduce_domain_to_scalar_Ptr reduce_domain_to_scalar_hdl, char * operation, int operation_size)", << "Input string is too short");
+    CTimer::get("XIOS").suspend();
+  }
+
+  bool cxios_is_defined_reduce_domain_to_scalar_operation(reduce_domain_to_scalar_Ptr reduce_domain_to_scalar_hdl)
+  {
+     CTimer::get("XIOS").resume();
+     bool isDefined = reduce_domain_to_scalar_hdl->operation.hasInheritedValue();
+     CTimer::get("XIOS").suspend();
+     return isDefined;
+  }
+}
Index: /XIOS/trunk/src/interface/fortran/expand_domain_interface.f90
===================================================================
--- /XIOS/trunk/src/interface/fortran/expand_domain_interface.f90	(revision 981)
+++ /XIOS/trunk/src/interface/fortran/expand_domain_interface.f90	(revision 981)
@@ -0,0 +1,22 @@
+MODULE EXPAND_DOMAIN_INTERFACE
+   USE, INTRINSIC :: ISO_C_BINDING
+
+   INTERFACE ! Ne pas appeler directement/Interface FORTRAN 2003 <-> C99
+
+      SUBROUTINE cxios_expand_domain_handle_create(ret, idt, idt_size) BIND(C)
+         USE ISO_C_BINDING
+         INTEGER  (kind = C_INTPTR_T)               :: ret
+         CHARACTER(kind = C_CHAR)    , DIMENSION(*) :: idt
+         INTEGER  (kind = C_INT)     , VALUE        :: idt_size
+      END SUBROUTINE cxios_expand_domain_handle_create
+
+      SUBROUTINE cxios_expand_domain_valid_id(ret, idt, idt_size) BIND(C)
+         USE ISO_C_BINDING
+         LOGICAL  (kind = C_BOOL)                   :: ret
+         CHARACTER(kind = C_CHAR)    , DIMENSION(*) :: idt
+         INTEGER  (kind = C_INT)     , VALUE        :: idt_size
+      END SUBROUTINE cxios_expand_domain_valid_id
+
+   END INTERFACE
+
+END MODULE EXPAND_DOMAIN_INTERFACE
Index: /XIOS/trunk/src/interface/fortran/extract_axis_to_scalar_interface.f90
===================================================================
--- /XIOS/trunk/src/interface/fortran/extract_axis_to_scalar_interface.f90	(revision 981)
+++ /XIOS/trunk/src/interface/fortran/extract_axis_to_scalar_interface.f90	(revision 981)
@@ -0,0 +1,22 @@
+MODULE EXTRACT_AXIS_TO_SCALAR_INTERFACE
+   USE, INTRINSIC :: ISO_C_BINDING
+
+   INTERFACE ! Ne pas appeler directement/Interface FORTRAN 2003 <-> C99
+
+      SUBROUTINE cxios_extract_axis_to_scalar_handle_create(ret, idt, idt_size) BIND(C)
+         USE ISO_C_BINDING
+         INTEGER  (kind = C_INTPTR_T)               :: ret
+         CHARACTER(kind = C_CHAR)    , DIMENSION(*) :: idt
+         INTEGER  (kind = C_INT)     , VALUE        :: idt_size
+      END SUBROUTINE cxios_extract_axis_to_scalar_handle_create
+
+      SUBROUTINE cxios_extract_axis_to_scalar_valid_id(ret, idt, idt_size) BIND(C)
+         USE ISO_C_BINDING
+         LOGICAL  (kind = C_BOOL)                   :: ret
+         CHARACTER(kind = C_CHAR)    , DIMENSION(*) :: idt
+         INTEGER  (kind = C_INT)     , VALUE        :: idt_size
+      END SUBROUTINE cxios_extract_axis_to_scalar_valid_id
+
+   END INTERFACE
+
+END MODULE EXTRACT_AXIS_TO_SCALAR_INTERFACE
Index: /XIOS/trunk/src/interface/fortran/extract_domain_to_axis_interface.f90
===================================================================
--- /XIOS/trunk/src/interface/fortran/extract_domain_to_axis_interface.f90	(revision 981)
+++ /XIOS/trunk/src/interface/fortran/extract_domain_to_axis_interface.f90	(revision 981)
@@ -0,0 +1,22 @@
+MODULE EXTRACT_DOMAIN_TO_AXIS_INTERFACE
+   USE, INTRINSIC :: ISO_C_BINDING
+
+   INTERFACE ! Ne pas appeler directement/Interface FORTRAN 2003 <-> C99
+
+      SUBROUTINE cxios_extract_domain_to_axis_handle_create(ret, idt, idt_size) BIND(C)
+         USE ISO_C_BINDING
+         INTEGER  (kind = C_INTPTR_T)               :: ret
+         CHARACTER(kind = C_CHAR)    , DIMENSION(*) :: idt
+         INTEGER  (kind = C_INT)     , VALUE        :: idt_size
+      END SUBROUTINE cxios_extract_domain_to_axis_handle_create
+
+      SUBROUTINE cxios_extract_domain_to_axis_valid_id(ret, idt, idt_size) BIND(C)
+         USE ISO_C_BINDING
+         LOGICAL  (kind = C_BOOL)                   :: ret
+         CHARACTER(kind = C_CHAR)    , DIMENSION(*) :: idt
+         INTEGER  (kind = C_INT)     , VALUE        :: idt_size
+      END SUBROUTINE cxios_extract_domain_to_axis_valid_id
+
+   END INTERFACE
+
+END MODULE EXTRACT_DOMAIN_TO_AXIS_INTERFACE
Index: /XIOS/trunk/src/interface/fortran/iexpand_domain.F90
===================================================================
--- /XIOS/trunk/src/interface/fortran/iexpand_domain.F90	(revision 981)
+++ /XIOS/trunk/src/interface/fortran/iexpand_domain.F90	(revision 981)
@@ -0,0 +1,30 @@
+#include "xios_fortran_prefix.hpp"
+
+MODULE IEXPAND_DOMAIN
+   USE, INTRINSIC :: ISO_C_BINDING
+   USE EXPAND_DOMAIN_INTERFACE
+
+   TYPE txios(expand_domain)
+      INTEGER(kind = C_INTPTR_T) :: daddr
+   END TYPE txios(expand_domain)
+
+   CONTAINS ! Fonctions disponibles pour les utilisateurs.
+
+   SUBROUTINE xios(get_expand_domain_handle)(idt,ret)
+      IMPLICIT NONE
+      CHARACTER(len = *)         , INTENT(IN) :: idt
+      TYPE(txios(expand_domain)) , INTENT(OUT):: ret
+      CALL cxios_expand_domain_handle_create(ret%daddr, idt, len(idt))
+   END SUBROUTINE xios(get_expand_domain_handle)
+
+   LOGICAL FUNCTION xios(is_valid_expand_domain)(idt)
+      IMPLICIT NONE
+      CHARACTER(len  = *)    , INTENT(IN) :: idt
+      LOGICAL  (kind = 1)                 :: val
+
+      CALL cxios_expand_domain_valid_id(val, idt, len(idt))
+      xios(is_valid_expand_domain) = val
+
+   END FUNCTION  xios(is_valid_expand_domain)
+
+END MODULE IEXPAND_DOMAIN
Index: /XIOS/trunk/src/interface/fortran/iextract_axis_to_scalar.F90
===================================================================
--- /XIOS/trunk/src/interface/fortran/iextract_axis_to_scalar.F90	(revision 981)
+++ /XIOS/trunk/src/interface/fortran/iextract_axis_to_scalar.F90	(revision 981)
@@ -0,0 +1,30 @@
+#include "xios_fortran_prefix.hpp"
+
+MODULE IEXTRACT_AXIS_TO_SCALAR
+   USE, INTRINSIC :: ISO_C_BINDING
+   USE EXTRACT_AXIS_TO_SCALAR_INTERFACE
+
+   TYPE txios(extract_axis_to_scalar)
+      INTEGER(kind = C_INTPTR_T) :: daddr
+   END TYPE txios(extract_axis_to_scalar)
+
+   CONTAINS ! Fonctions disponibles pour les utilisateurs.
+
+   SUBROUTINE xios(get_extract_axis_to_scalar_handle)(idt,ret)
+      IMPLICIT NONE
+      CHARACTER(len = *), INTENT(IN) :: idt
+      TYPE(txios(extract_axis_to_scalar)) , INTENT(OUT):: ret
+      CALL cxios_extract_axis_to_scalar_handle_create(ret%daddr, idt, len(idt))
+   END SUBROUTINE xios(get_extract_axis_to_scalar_handle)
+
+   LOGICAL FUNCTION xios(is_valid_extract_axis_to_scalar)(idt)
+      IMPLICIT NONE
+      CHARACTER(len  = *)    , INTENT(IN) :: idt
+      LOGICAL  (kind = 1)                 :: val
+
+      CALL cxios_extract_axis_to_scalar_valid_id(val, idt, len(idt))
+      xios(is_valid_extract_axis_to_scalar) = val
+
+   END FUNCTION  xios(is_valid_extract_axis_to_scalar)
+
+END MODULE IEXTRACT_AXIS_TO_SCALAR
Index: /XIOS/trunk/src/interface/fortran/iextract_domain_to_axis.F90
===================================================================
--- /XIOS/trunk/src/interface/fortran/iextract_domain_to_axis.F90	(revision 981)
+++ /XIOS/trunk/src/interface/fortran/iextract_domain_to_axis.F90	(revision 981)
@@ -0,0 +1,30 @@
+#include "xios_fortran_prefix.hpp"
+
+MODULE IEXTRACT_DOMAIN_TO_AXIS
+   USE, INTRINSIC :: ISO_C_BINDING
+   USE EXTRACT_DOMAIN_TO_AXIS_INTERFACE
+
+   TYPE txios(extract_domain_to_axis)
+      INTEGER(kind = C_INTPTR_T) :: daddr
+   END TYPE txios(extract_domain_to_axis)
+
+   CONTAINS ! Fonctions disponibles pour les utilisateurs.
+
+   SUBROUTINE xios(get_extract_domain_to_axis_handle)(idt,ret)
+      IMPLICIT NONE
+      CHARACTER(len = *), INTENT(IN) :: idt
+      TYPE(txios(extract_domain_to_axis)) , INTENT(OUT):: ret
+      CALL cxios_extract_domain_to_axis_handle_create(ret%daddr, idt, len(idt))
+   END SUBROUTINE xios(get_extract_domain_to_axis_handle)
+
+   LOGICAL FUNCTION xios(is_valid_extract_domain_to_axis)(idt)
+      IMPLICIT NONE
+      CHARACTER(len  = *)    , INTENT(IN) :: idt
+      LOGICAL  (kind = 1)                 :: val
+
+      CALL cxios_extract_domain_to_axis_valid_id(val, idt, len(idt))
+      xios(is_valid_extract_domain_to_axis) = val
+
+   END FUNCTION  xios(is_valid_extract_domain_to_axis)
+
+END MODULE IEXTRACT_DOMAIN_TO_AXIS
Index: /XIOS/trunk/src/interface/fortran/ireduce_domain_to_axis.F90
===================================================================
--- /XIOS/trunk/src/interface/fortran/ireduce_domain_to_axis.F90	(revision 981)
+++ /XIOS/trunk/src/interface/fortran/ireduce_domain_to_axis.F90	(revision 981)
@@ -0,0 +1,30 @@
+#include "xios_fortran_prefix.hpp"
+
+MODULE IREDUCE_DOMAIN_TO_AXIS
+   USE, INTRINSIC :: ISO_C_BINDING
+   USE REDUCE_DOMAIN_TO_AXIS_INTERFACE
+
+   TYPE txios(reduce_domain_to_axis)
+      INTEGER(kind = C_INTPTR_T) :: daddr
+   END TYPE txios(reduce_domain_to_axis)
+
+   CONTAINS ! Fonctions disponibles pour les utilisateurs.
+
+   SUBROUTINE xios(get_reduce_domain_to_axis_handle)(idt,ret)
+      IMPLICIT NONE
+      CHARACTER(len = *), INTENT(IN) :: idt
+      TYPE(txios(reduce_domain_to_axis)) , INTENT(OUT):: ret
+      CALL cxios_reduce_domain_to_axis_handle_create(ret%daddr, idt, len(idt))
+   END SUBROUTINE xios(get_reduce_domain_to_axis_handle)
+
+   LOGICAL FUNCTION xios(is_valid_reduce_domain_to_axis)(idt)
+      IMPLICIT NONE
+      CHARACTER(len  = *)    , INTENT(IN) :: idt
+      LOGICAL  (kind = 1)                 :: val
+
+      CALL cxios_reduce_domain_to_axis_valid_id(val, idt, len(idt))
+      xios(is_valid_reduce_domain_to_axis) = val
+
+   END FUNCTION  xios(is_valid_reduce_domain_to_axis)
+
+END MODULE IREDUCE_DOMAIN_TO_AXIS
Index: /XIOS/trunk/src/interface/fortran/ireduce_domain_to_scalar.F90
===================================================================
--- /XIOS/trunk/src/interface/fortran/ireduce_domain_to_scalar.F90	(revision 981)
+++ /XIOS/trunk/src/interface/fortran/ireduce_domain_to_scalar.F90	(revision 981)
@@ -0,0 +1,30 @@
+#include "xios_fortran_prefix.hpp"
+
+MODULE IREDUCE_DOMAIN_TO_SCALAR
+   USE, INTRINSIC :: ISO_C_BINDING
+   USE REDUCE_DOMAIN_TO_SCALAR_INTERFACE
+
+   TYPE txios(reduce_domain_to_scalar)
+      INTEGER(kind = C_INTPTR_T) :: daddr
+   END TYPE txios(reduce_domain_to_scalar)
+
+   CONTAINS ! Fonctions disponibles pour les utilisateurs.
+
+   SUBROUTINE xios(get_reduce_domain_to_scalar_handle)(idt,ret)
+      IMPLICIT NONE
+      CHARACTER(len = *), INTENT(IN) :: idt
+      TYPE(txios(reduce_domain_to_scalar)) , INTENT(OUT):: ret
+      CALL cxios_reduce_domain_to_scalar_handle_create(ret%daddr, idt, len(idt))
+   END SUBROUTINE xios(get_reduce_domain_to_scalar_handle)
+
+   LOGICAL FUNCTION xios(is_valid_reduce_domain_to_scalar)(idt)
+      IMPLICIT NONE
+      CHARACTER(len  = *)    , INTENT(IN) :: idt
+      LOGICAL  (kind = 1)                 :: val
+
+      CALL cxios_reduce_domain_to_scalar_valid_id(val, idt, len(idt))
+      xios(is_valid_reduce_domain_to_scalar) = val
+
+   END FUNCTION  xios(is_valid_reduce_domain_to_scalar)
+
+END MODULE IREDUCE_DOMAIN_TO_SCALAR
Index: /XIOS/trunk/src/interface/fortran/ixios.F90
===================================================================
--- /XIOS/trunk/src/interface/fortran/ixios.F90	(revision 980)
+++ /XIOS/trunk/src/interface/fortran/ixios.F90	(revision 981)
@@ -74,16 +74,11 @@
 USE iscalargroup_attr, ONLY : xios(set_scalargroup_attr), xios(get_scalargroup_attr), xios(is_defined_scalargroup_attr)
 
-USE izoom_axis, ONLY : txios(zoom_axis), xios(is_valid_zoom_axis)
-
-USE izoom_axis_attr, ONLY : xios(set_zoom_axis_attr), xios(get_zoom_axis_attr), xios(is_defined_zoom_axis_attr)
-
+!-------------------------------------------------------------------------------
+!!! Transformation INTERFACES
+!-------------------------------------------------------------------------------
+!!! DOMAIN TRANSFORMATIONS
 USE izoom_domain, ONLY : txios(zoom_domain), xios(is_valid_zoom_domain)
 
 USE izoom_domain_attr, ONLY : xios(set_zoom_domain_attr), xios(get_zoom_domain_attr), xios(is_defined_zoom_domain_attr)
-
-USE iinterpolate_axis, ONLY : txios(interpolate_axis), xios(is_valid_interpolate_axis)
-
-USE iinterpolate_axis_attr, ONLY : xios(set_interpolate_axis_attr), xios(get_interpolate_axis_attr), &
-                                   xios(is_defined_interpolate_axis_attr)
 
 USE iinterpolate_domain, ONLY : txios(interpolate_domain), xios(is_valid_interpolate_domain)
@@ -92,8 +87,4 @@
                                      xios(is_defined_interpolate_domain_attr)
 
-USE iinverse_axis, ONLY : txios(inverse_axis), xios(is_valid_inverse_axis)
-
-USE iinverse_axis_attr, ONLY : xios(set_inverse_axis_attr), xios(get_inverse_axis_attr), xios(is_defined_inverse_axis_attr)
-
 USE igenerate_rectilinear_domain, ONLY : txios(generate_rectilinear_domain), xios(is_valid_generate_rectilinear_domain)
 
@@ -101,8 +92,4 @@
                                               xios(get_generate_rectilinear_domain_attr), &
                                               xios(is_defined_generate_rectilinear_domain_attr)
-USE ireduce_axis_to_scalar, ONLY : txios(reduce_axis_to_scalar), xios(is_valid_reduce_axis_to_scalar)
-
-USE ireduce_axis_to_scalar_attr, ONLY : xios(set_reduce_axis_to_scalar_attr), xios(get_reduce_axis_to_scalar_attr), &
-                                        xios(is_defined_reduce_axis_to_scalar_attr)
 
 USE icompute_connectivity_domain, ONLY : txios(compute_connectivity_domain), xios(is_valid_compute_connectivity_domain)
@@ -112,4 +99,54 @@
                                               xios(is_defined_compute_connectivity_domain_attr)
 
+USE iexpand_domain, ONLY : txios(expand_domain), xios(is_valid_expand_domain)
+
+USE iexpand_domain_attr, ONLY : xios(set_expand_domain_attr), &
+                                xios(get_expand_domain_attr), &
+                                xios(is_defined_expand_domain_attr)
+
+!!! AXIS TRANSFORMATIONS
+USE izoom_axis, ONLY : txios(zoom_axis), xios(is_valid_zoom_axis)
+
+USE izoom_axis_attr, ONLY : xios(set_zoom_axis_attr), xios(get_zoom_axis_attr), xios(is_defined_zoom_axis_attr)
+
+
+USE iinterpolate_axis, ONLY : txios(interpolate_axis), xios(is_valid_interpolate_axis)
+
+USE iinterpolate_axis_attr, ONLY : xios(set_interpolate_axis_attr), xios(get_interpolate_axis_attr), &
+                                   xios(is_defined_interpolate_axis_attr)
+
+USE iinverse_axis, ONLY : txios(inverse_axis), xios(is_valid_inverse_axis)
+
+USE iinverse_axis_attr, ONLY : xios(set_inverse_axis_attr), xios(get_inverse_axis_attr), xios(is_defined_inverse_axis_attr)
+
+USE ireduce_domain_to_axis, ONLY : txios(reduce_domain_to_axis), xios(is_valid_reduce_domain_to_axis)
+
+USE ireduce_domain_to_axis_attr, ONLY : xios(set_reduce_domain_to_axis_attr), &
+                                        xios(get_reduce_domain_to_axis_attr), &
+                                        xios(is_defined_reduce_domain_to_axis_attr)
+
+USE iextract_domain_to_axis, ONLY : txios(extract_domain_to_axis), xios(is_valid_extract_domain_to_axis)
+
+USE iextract_domain_to_axis_attr, ONLY : xios(set_extract_domain_to_axis_attr), &
+                                         xios(get_extract_domain_to_axis_attr), &
+                                         xios(is_defined_extract_domain_to_axis_attr)
+
+!!! SCALAR TRANSFORMATIONS
+USE ireduce_domain_to_scalar, ONLY : txios(reduce_domain_to_scalar), xios(is_valid_reduce_domain_to_scalar)
+
+USE ireduce_domain_to_scalar_attr, ONLY : xios(set_reduce_domain_to_scalar_attr), xios(get_reduce_domain_to_scalar_attr), &
+                                          xios(is_defined_reduce_domain_to_scalar_attr)
+
+USE ireduce_axis_to_scalar, ONLY : txios(reduce_axis_to_scalar), xios(is_valid_reduce_axis_to_scalar)
+
+USE ireduce_axis_to_scalar_attr, ONLY : xios(set_reduce_axis_to_scalar_attr), xios(get_reduce_axis_to_scalar_attr), &
+                                        xios(is_defined_reduce_axis_to_scalar_attr)
+
+USE iextract_axis_to_scalar, ONLY : txios(extract_axis_to_scalar), xios(is_valid_extract_axis_to_scalar)
+
+USE iextract_axis_to_scalar_attr, ONLY : xios(set_extract_axis_to_scalar_attr), &
+                                         xios(get_extract_axis_to_scalar_attr), &
+                                         xios(is_defined_extract_axis_to_scalar_attr)
+
 USE XIOS_INTERFACES, ONLY : xios(set_attr), xios(get_attr), xios(is_defined_attr), xios(get_handle), xios(add_child), &
                             xios(send_field), xios(recv_field), xios(field_is_active), xios(getVar), xios(setVar), &
Index: /XIOS/trunk/src/interface/fortran/ixios_interfaces.F90
===================================================================
--- /XIOS/trunk/src/interface/fortran/ixios_interfaces.F90	(revision 980)
+++ /XIOS/trunk/src/interface/fortran/ixios_interfaces.F90	(revision 981)
@@ -63,16 +63,11 @@
 USE iscalargroup_attr, ONLY : xios(set_scalargroup_attr_hdl), xios(get_scalargroup_attr_hdl), xios(is_defined_scalargroup_attr_hdl)
 
-USE izoom_axis, ONLY : xios(get_zoom_axis_handle)
-
-USE izoom_axis_attr, ONLY : xios(set_zoom_axis_attr_hdl), xios(get_zoom_axis_attr_hdl), xios(is_defined_zoom_axis_attr_hdl)
-
+!-------------------------------------------------------------------------------
+!!! Transformation INTERFACES
+!-------------------------------------------------------------------------------
+!!! DOMAIN TRANSFORMATIONS
 USE izoom_domain, ONLY : xios(get_zoom_domain_handle)
 
 USE izoom_domain_attr, ONLY : xios(set_zoom_domain_attr_hdl), xios(get_zoom_domain_attr_hdl), xios(is_defined_zoom_domain_attr_hdl)
-
-USE iinterpolate_axis, ONLY : xios(get_interpolate_axis_handle)
-
-USE iinterpolate_axis_attr, ONLY : xios(set_interpolate_axis_attr_hdl), xios(get_interpolate_axis_attr_hdl), &
-                                   xios(is_defined_interpolate_axis_attr_hdl)
 
 USE iinterpolate_domain, ONLY : xios(get_interpolate_domain_handle)
@@ -80,8 +75,4 @@
 USE iinterpolate_domain_attr, ONLY : xios(set_interpolate_domain_attr_hdl), xios(get_interpolate_domain_attr_hdl), &
                                      xios(is_defined_interpolate_domain_attr_hdl)
-
-USE iinverse_axis, ONLY : xios(get_inverse_axis_handle)
-
-USE iinverse_axis_attr, ONLY : xios(set_inverse_axis_attr_hdl), xios(get_inverse_axis_attr_hdl), xios(is_defined_inverse_axis_attr_hdl)
 
 USE igenerate_rectilinear_domain, ONLY : xios(get_generate_rectilinear_domain_handle)
@@ -90,4 +81,5 @@
                                               xios(get_generate_rectilinear_domain_attr_hdl), &
                                               xios(is_defined_generate_rectilinear_domain_attr_hdl)
+
 USE icompute_connectivity_domain, ONLY : xios(get_compute_connectivity_domain_handle)
 
@@ -96,4 +88,42 @@
                                               xios(is_defined_compute_connectivity_domain_attr_hdl)
 
+USE iexpand_domain, ONLY : xios(get_expand_domain_handle)
+
+USE iexpand_domain_attr, ONLY : xios(set_expand_domain_attr_hdl), &
+                                xios(get_expand_domain_attr_hdl), &
+                                xios(is_defined_expand_domain_attr_hdl)
+
+!!! AXIS TRANSFORMATIONS
+USE izoom_axis, ONLY : xios(get_zoom_axis_handle)
+
+USE izoom_axis_attr, ONLY : xios(set_zoom_axis_attr_hdl), xios(get_zoom_axis_attr_hdl), xios(is_defined_zoom_axis_attr_hdl)
+
+USE iinterpolate_axis, ONLY : xios(get_interpolate_axis_handle)
+
+USE iinterpolate_axis_attr, ONLY : xios(set_interpolate_axis_attr_hdl), &
+                                   xios(get_interpolate_axis_attr_hdl), &
+                                   xios(is_defined_interpolate_axis_attr_hdl)
+
+USE iinverse_axis, ONLY : xios(get_inverse_axis_handle)
+
+USE iinverse_axis_attr, ONLY : xios(set_inverse_axis_attr_hdl), &
+                               xios(get_inverse_axis_attr_hdl), &
+                               xios(is_defined_inverse_axis_attr_hdl)
+
+USE ireduce_domain_to_axis, ONLY : xios(get_reduce_domain_to_axis_handle)
+
+USE ireduce_domain_to_axis_attr, ONLY : xios(set_reduce_domain_to_axis_attr_hdl), &
+                                        xios(get_reduce_domain_to_axis_attr_hdl), &
+                                        xios(is_defined_reduce_domain_to_axis_attr_hdl)
+
+USE iextract_domain_to_axis, ONLY : xios(get_extract_domain_to_axis_handle)
+
+USE iextract_domain_to_axis_attr, ONLY : xios(set_extract_domain_to_axis_attr_hdl), &
+                                         xios(get_extract_domain_to_axis_attr_hdl), &
+                                         xios(is_defined_extract_domain_to_axis_attr_hdl)
+
+!!! SCALAR TRANSFORMATIONS
+
+
 USE ireduce_axis_to_scalar, ONLY : xios(get_reduce_axis_to_scalar_handle)
 
@@ -101,4 +131,16 @@
                                         xios(get_reduce_axis_to_scalar_attr_hdl), &
                                         xios(is_defined_reduce_axis_to_scalar_attr_hdl)
+
+USE ireduce_domain_to_scalar, ONLY : xios(get_reduce_domain_to_scalar_handle)
+
+USE ireduce_domain_to_scalar_attr, ONLY : xios(set_reduce_domain_to_scalar_attr_hdl), &
+                                          xios(get_reduce_domain_to_scalar_attr_hdl), &
+                                          xios(is_defined_reduce_domain_to_scalar_attr_hdl)
+
+USE iextract_axis_to_scalar, ONLY : xios(get_extract_axis_to_scalar_handle)
+
+USE iextract_axis_to_scalar_attr, ONLY : xios(set_extract_axis_to_scalar_attr_hdl), &
+                                         xios(get_extract_axis_to_scalar_attr_hdl), &
+                                         xios(is_defined_extract_axis_to_scalar_attr_hdl)
 
 USE ixml_tree, ONLY : xios(add_axis), xios(add_file), xios(add_grid), xios(add_field), xios(add_domain),   &
@@ -111,5 +153,7 @@
                       xios(add_interpolateaxistoaxis), xios(add_inverseaxistoaxis), xios(add_scalar),      &
                       xios(add_scalargroup), xios(add_scalartogrid), xios(add_reduceaxistoscalartoscalar), &
-                      xios(add_computeconnectivitydomaintodomain)
+                      xios(add_computeconnectivitydomaintodomain), xios(add_reducedomaintoaxistoaxis),     &
+                      xios(add_extractdomaintoaxistoaxis), xios(add_reducedomaintoscalartoscalar),         &
+                      xios(add_extractaxistoscalartoscalar), xios(add_expanddomaintodomain)
 
 PRIVATE
@@ -125,6 +169,9 @@
                    xios(set_generate_rectilinear_domain_attr_hdl), xios(set_scalar_attr_hdl),                &
                    xios(set_scalargroup_attr_hdl), xios(set_reduce_axis_to_scalar_attr_hdl),                 &
-                   xios(set_compute_connectivity_domain_attr_hdl)
+                   xios(set_compute_connectivity_domain_attr_hdl), xios(set_reduce_domain_to_scalar_attr_hdl), &
+                   xios(set_reduce_domain_to_axis_attr_hdl), xios(set_extract_domain_to_axis_attr_hdl),        &
+                   xios(set_extract_axis_to_scalar_attr_hdl), xios(set_expand_domain_attr_hdl)
 END INTERFACE xios(set_attr)
+
 
 INTERFACE xios(get_attr)
@@ -138,5 +185,7 @@
                    xios(get_generate_rectilinear_domain_attr_hdl), xios(get_scalar_attr_hdl),                &
                    xios(get_scalargroup_attr_hdl), xios(get_reduce_axis_to_scalar_attr_hdl),                 &
-                   xios(get_compute_connectivity_domain_attr_hdl)
+                   xios(get_compute_connectivity_domain_attr_hdl), xios(get_reduce_domain_to_scalar_attr_hdl), &
+                   xios(get_reduce_domain_to_axis_attr_hdl), xios(get_extract_domain_to_axis_attr_hdl),        &
+                   xios(get_extract_axis_to_scalar_attr_hdl), xios(get_expand_domain_attr_hdl)
 END INTERFACE xios(get_attr)
 
@@ -151,18 +200,23 @@
                    xios(is_defined_inverse_axis_attr_hdl), xios(is_defined_generate_rectilinear_domain_attr_hdl),                 &
                    xios(is_defined_scalar_attr_hdl), xios(is_defined_scalargroup_attr_hdl),                                       &
-                   xios(is_defined_reduce_axis_to_scalar_attr_hdl), xios(is_defined_compute_connectivity_domain_attr_hdl)
+                   xios(is_defined_reduce_axis_to_scalar_attr_hdl), xios(is_defined_compute_connectivity_domain_attr_hdl),        &
+                   xios(is_defined_reduce_domain_to_scalar_attr_hdl), xios(is_defined_reduce_domain_to_axis_attr_hdl),            &
+                   xios(is_defined_extract_domain_to_axis_attr_hdl), xios(is_defined_extract_axis_to_scalar_attr_hdl),            &
+                   xios(is_defined_expand_domain_attr_hdl)
 END INTERFACE xios(is_defined_attr)
 
 INTERFACE xios(get_handle)
-  MODULE PROCEDURE xios(get_context_handle), xios(get_domain_handle), xios(get_domaingroup_handle), &
-                   xios(get_file_handle), xios(get_filegroup_handle), xios(get_grid_handle),        &
-                   xios(get_gridgroup_handle), xios(get_axis_handle), xios(get_axisgroup_handle),   &
-                   xios(get_field_handle), xios(get_fieldgroup_handle),xios(get_variable_handle),   &
-                   xios(get_variablegroup_handle), xios(get_zoom_axis_handle),                      &
-                   xios(get_zoom_domain_handle), xios(get_interpolate_axis_handle),                 &
-                   xios(get_interpolate_domain_handle), xios(get_inverse_axis_handle),              &
-                   xios(get_generate_rectilinear_domain_handle), xios(get_scalar_handle),           &
-                   xios(get_scalargroup_handle), xios(get_reduce_axis_to_scalar_handle),            &
-                   xios(get_compute_connectivity_domain_handle)
+  MODULE PROCEDURE xios(get_context_handle), xios(get_domain_handle), xios(get_domaingroup_handle),                  &
+                   xios(get_file_handle), xios(get_filegroup_handle), xios(get_grid_handle),                         &
+                   xios(get_gridgroup_handle), xios(get_axis_handle), xios(get_axisgroup_handle),                    &
+                   xios(get_field_handle), xios(get_fieldgroup_handle),xios(get_variable_handle),                    &
+                   xios(get_variablegroup_handle), xios(get_zoom_axis_handle),                                       &
+                   xios(get_zoom_domain_handle), xios(get_interpolate_axis_handle),                                  &
+                   xios(get_interpolate_domain_handle), xios(get_inverse_axis_handle),                               &
+                   xios(get_generate_rectilinear_domain_handle), xios(get_scalar_handle),                            &
+                   xios(get_scalargroup_handle), xios(get_reduce_axis_to_scalar_handle),                             &
+                   xios(get_compute_connectivity_domain_handle), xios(get_reduce_domain_to_scalar_handle),           &
+                   xios(get_reduce_domain_to_axis_handle), xios(get_extract_domain_to_axis_handle),                  &
+                   xios(get_extract_axis_to_scalar_handle), xios(get_expand_domain_handle)
 END INTERFACE xios(get_handle)
 
@@ -176,5 +230,7 @@
                    xios(add_zoomaxistoaxis), xios(add_interpolateaxistoaxis), xios(add_inverseaxistoaxis),           &
                    xios(add_scalar), xios(add_scalartogrid), xios(add_reduceaxistoscalartoscalar),                   &
-                   xios(add_computeconnectivitydomaintodomain)
+                   xios(add_computeconnectivitydomaintodomain), xios(add_reducedomaintoscalartoscalar),              &
+                   xios(add_reducedomaintoaxistoaxis), xios(add_extractdomaintoaxistoaxis),                          &
+                   xios(add_extractaxistoscalartoscalar), xios(add_expanddomaintodomain)
 END INTERFACE xios(add_child)
 
Index: /XIOS/trunk/src/interface/fortran/ixml_tree.F90
===================================================================
--- /XIOS/trunk/src/interface/fortran/ixml_tree.F90	(revision 980)
+++ /XIOS/trunk/src/interface/fortran/ixml_tree.F90	(revision 981)
@@ -10,12 +10,20 @@
    USE IDOMAIN
    USE IVARIABLE
+   
    USE IZOOM_DOMAIN
    USE IINTERPOLATE_DOMAIN
    USE IGENERATE_RECTILINEAR_DOMAIN
    USE ICOMPUTE_CONNECTIVITY_DOMAIN
+   USE IEXPAND_DOMAIN
+
    USE IZOOM_AXIS
    USE IINTERPOLATE_AXIS
    USE IINVERSE_AXIS
+   USE IREDUCE_DOMAIN_TO_AXIS
+   USE IEXTRACT_DOMAIN_TO_AXIS
+
    USE IREDUCE_AXIS_TO_SCALAR
+   USE IEXTRACT_AXIS_TO_SCALAR
+   USE IREDUCE_DOMAIN_TO_SCALAR
 
    INTERFACE ! Ne pas appeler directement/Interface FORTRAN 2003 <-> C99
@@ -191,4 +199,8 @@
       END SUBROUTINE cxios_xml_tree_add_domaintogrid
 
+      !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
+      !!!   TRANSFORMATIONS 
+      !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
+      !!! DOMAIN
       SUBROUTINE cxios_xml_tree_add_zoomdomaintodomain(parent_, child_, child_id, child_id_size) BIND(C)
          USE ISO_C_BINDING
@@ -223,4 +235,13 @@
       END SUBROUTINE cxios_xml_tree_add_computeconnectivitydomaintodomain
 
+      SUBROUTINE cxios_xml_tree_add_expanddomaintodomain(parent_, child_, child_id, child_id_size) BIND(C)
+         USE ISO_C_BINDING
+         INTEGER  (kind = C_INTPTR_T), VALUE        :: parent_
+         INTEGER  (kind = C_INTPTR_T)               :: child_
+         CHARACTER(kind = C_CHAR)    , DIMENSION(*) :: child_id
+         INTEGER  (kind = C_INT)     , VALUE        :: child_id_size
+      END SUBROUTINE cxios_xml_tree_add_expanddomaintodomain
+
+      !!!! AXIS
       SUBROUTINE cxios_xml_tree_add_zoomaxistoaxis(parent_, child_, child_id, child_id_size) BIND(C)
          USE ISO_C_BINDING
@@ -247,4 +268,21 @@
       END SUBROUTINE cxios_xml_tree_add_inverseaxistoaxis
 
+      SUBROUTINE cxios_xml_tree_add_reducedomaintoaxistoaxis(parent_, child_, child_id, child_id_size) BIND(C)
+         USE ISO_C_BINDING
+         INTEGER  (kind = C_INTPTR_T), VALUE        :: parent_
+         INTEGER  (kind = C_INTPTR_T)               :: child_
+         CHARACTER(kind = C_CHAR)    , DIMENSION(*) :: child_id
+         INTEGER  (kind = C_INT)     , VALUE        :: child_id_size
+      END SUBROUTINE cxios_xml_tree_add_reducedomaintoaxistoaxis
+
+      SUBROUTINE cxios_xml_tree_add_extractdomaintoaxistoaxis(parent_, child_, child_id, child_id_size) BIND(C)
+         USE ISO_C_BINDING
+         INTEGER  (kind = C_INTPTR_T), VALUE        :: parent_
+         INTEGER  (kind = C_INTPTR_T)               :: child_
+         CHARACTER(kind = C_CHAR)    , DIMENSION(*) :: child_id
+         INTEGER  (kind = C_INT)     , VALUE        :: child_id_size
+      END SUBROUTINE cxios_xml_tree_add_extractdomaintoaxistoaxis
+
+      !!! SCALAR
       SUBROUTINE cxios_xml_tree_add_reduceaxistoscalartoscalar(parent_, child_, child_id, child_id_size) BIND(C)
          USE ISO_C_BINDING
@@ -254,4 +292,20 @@
          INTEGER  (kind = C_INT)     , VALUE        :: child_id_size
       END SUBROUTINE cxios_xml_tree_add_reduceaxistoscalartoscalar
+
+      SUBROUTINE cxios_xml_tree_add_extractaxistoscalartoscalar(parent_, child_, child_id, child_id_size) BIND(C)
+         USE ISO_C_BINDING
+         INTEGER  (kind = C_INTPTR_T), VALUE        :: parent_
+         INTEGER  (kind = C_INTPTR_T)               :: child_
+         CHARACTER(kind = C_CHAR)    , DIMENSION(*) :: child_id
+         INTEGER  (kind = C_INT)     , VALUE        :: child_id_size
+      END SUBROUTINE cxios_xml_tree_add_extractaxistoscalartoscalar
+
+      SUBROUTINE cxios_xml_tree_add_reducedomaintoscalartoscalar(parent_, child_, child_id, child_id_size) BIND(C)
+         USE ISO_C_BINDING
+         INTEGER  (kind = C_INTPTR_T), VALUE        :: parent_
+         INTEGER  (kind = C_INTPTR_T)               :: child_
+         CHARACTER(kind = C_CHAR)    , DIMENSION(*) :: child_id
+         INTEGER  (kind = C_INT)     , VALUE        :: child_id_size
+      END SUBROUTINE cxios_xml_tree_add_reducedomaintoscalartoscalar
 
       SUBROUTINE cxios_xml_tree_show(filename, filename_size) BIND(C)
@@ -552,4 +606,8 @@
    END SUBROUTINE xios(add_domaintogrid)
 
+   !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
+   !!!         TRANSFORMATIONS
+   !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
+   !!!         DOAMIN
    SUBROUTINE xios(add_zoomdomaintodomain)(parent_hdl, child_hdl, child_id)
       TYPE(txios(domain))           , INTENT(IN) :: parent_hdl
@@ -604,4 +662,18 @@
    END SUBROUTINE xios(add_computeconnectivitydomaintodomain)
 
+   SUBROUTINE xios(add_expanddomaintodomain)(parent_hdl, child_hdl, child_id)
+      TYPE(txios(domain))                      , INTENT(IN) :: parent_hdl
+      TYPE(txios(expand_domain))               , INTENT(OUT):: child_hdl
+      CHARACTER(len = *), OPTIONAL             , INTENT(IN) :: child_id
+
+      IF (PRESENT(child_id)) THEN
+         CALL cxios_xml_tree_add_expanddomaintodomain(parent_hdl%daddr, child_hdl%daddr, child_id, len(child_id))
+      ELSE
+         CALL cxios_xml_tree_add_expanddomaintodomain(parent_hdl%daddr, child_hdl%daddr, "NONE", -1)
+      END IF
+
+   END SUBROUTINE xios(add_expanddomaintodomain)
+
+   !!!  AXIS
    SUBROUTINE xios(add_zoomaxistoaxis)(parent_hdl, child_hdl, child_id)
       TYPE(txios(axis))                      , INTENT(IN) :: parent_hdl
@@ -643,6 +715,33 @@
    END SUBROUTINE xios(add_inverseaxistoaxis)
 
+   SUBROUTINE xios(add_reducedomaintoaxistoaxis)(parent_hdl, child_hdl, child_id)
+      TYPE(txios(axis))                        , INTENT(IN) :: parent_hdl
+      TYPE(txios(reduce_domain_to_axis))       , INTENT(OUT):: child_hdl
+      CHARACTER(len = *), OPTIONAL             , INTENT(IN) :: child_id
+
+      IF (PRESENT(child_id)) THEN
+         CALL cxios_xml_tree_add_reducedomaintoaxistoaxis(parent_hdl%daddr, child_hdl%daddr, child_id, len(child_id))
+      ELSE
+         CALL cxios_xml_tree_add_reducedomaintoaxistoaxis(parent_hdl%daddr, child_hdl%daddr, "NONE", -1)
+      END IF
+
+   END SUBROUTINE xios(add_reducedomaintoaxistoaxis)
+
+   SUBROUTINE xios(add_extractdomaintoaxistoaxis)(parent_hdl, child_hdl, child_id)
+      TYPE(txios(axis))                        , INTENT(IN) :: parent_hdl
+      TYPE(txios(extract_domain_to_axis))      , INTENT(OUT):: child_hdl
+      CHARACTER(len = *), OPTIONAL             , INTENT(IN) :: child_id
+
+      IF (PRESENT(child_id)) THEN
+         CALL cxios_xml_tree_add_extractdomaintoaxistoaxis(parent_hdl%daddr, child_hdl%daddr, child_id, len(child_id))
+      ELSE
+         CALL cxios_xml_tree_add_extractdomaintoaxistoaxis(parent_hdl%daddr, child_hdl%daddr, "NONE", -1)
+      END IF
+
+   END SUBROUTINE xios(add_extractdomaintoaxistoaxis)
+
+   !!! SCALAR
    SUBROUTINE xios(add_reduceaxistoscalartoscalar)(parent_hdl, child_hdl, child_id)
-      TYPE(txios(axis))                      , INTENT(IN) :: parent_hdl
+      TYPE(txios(scalar))                    , INTENT(IN) :: parent_hdl
       TYPE(txios(reduce_axis_to_scalar))     , INTENT(OUT):: child_hdl
       CHARACTER(len = *), OPTIONAL           , INTENT(IN) :: child_id
@@ -655,3 +754,30 @@
 
    END SUBROUTINE xios(add_reduceaxistoscalartoscalar)
+
+   SUBROUTINE xios(add_extractaxistoscalartoscalar)(parent_hdl, child_hdl, child_id)
+      TYPE(txios(scalar))                    , INTENT(IN) :: parent_hdl
+      TYPE(txios(extract_axis_to_scalar))    , INTENT(OUT):: child_hdl
+      CHARACTER(len = *), OPTIONAL           , INTENT(IN) :: child_id
+
+      IF (PRESENT(child_id)) THEN
+         CALL cxios_xml_tree_add_extractaxistoscalartoscalar(parent_hdl%daddr, child_hdl%daddr, child_id, len(child_id))
+      ELSE
+         CALL cxios_xml_tree_add_extractaxistoscalartoscalar(parent_hdl%daddr, child_hdl%daddr, "NONE", -1)
+      END IF
+
+   END SUBROUTINE xios(add_extractaxistoscalartoscalar)
+
+   SUBROUTINE xios(add_reducedomaintoscalartoscalar)(parent_hdl, child_hdl, child_id)
+      TYPE(txios(scalar))                      , INTENT(IN) :: parent_hdl
+      TYPE(txios(reduce_domain_to_scalar))     , INTENT(OUT):: child_hdl
+      CHARACTER(len = *), OPTIONAL             , INTENT(IN) :: child_id
+
+      IF (PRESENT(child_id)) THEN
+         CALL cxios_xml_tree_add_reducedomaintoscalartoscalar(parent_hdl%daddr, child_hdl%daddr, child_id, len(child_id))
+      ELSE
+         CALL cxios_xml_tree_add_reducedomaintoscalartoscalar(parent_hdl%daddr, child_hdl%daddr, "NONE", -1)
+      END IF
+
+   END SUBROUTINE xios(add_reducedomaintoscalartoscalar)
+
 END MODULE IXML_TREE
Index: /XIOS/trunk/src/interface/fortran/reduce_domain_to_axis_interface.f90
===================================================================
--- /XIOS/trunk/src/interface/fortran/reduce_domain_to_axis_interface.f90	(revision 981)
+++ /XIOS/trunk/src/interface/fortran/reduce_domain_to_axis_interface.f90	(revision 981)
@@ -0,0 +1,22 @@
+MODULE REDUCE_DOMAIN_TO_AXIS_INTERFACE
+   USE, INTRINSIC :: ISO_C_BINDING
+
+   INTERFACE ! Ne pas appeler directement/Interface FORTRAN 2003 <-> C99
+
+      SUBROUTINE cxios_reduce_domain_to_axis_handle_create(ret, idt, idt_size) BIND(C)
+         USE ISO_C_BINDING
+         INTEGER  (kind = C_INTPTR_T)               :: ret
+         CHARACTER(kind = C_CHAR)    , DIMENSION(*) :: idt
+         INTEGER  (kind = C_INT)     , VALUE        :: idt_size
+      END SUBROUTINE cxios_reduce_domain_to_axis_handle_create
+
+      SUBROUTINE cxios_reduce_domain_to_axis_valid_id(ret, idt, idt_size) BIND(C)
+         USE ISO_C_BINDING
+         LOGICAL  (kind = C_BOOL)                   :: ret
+         CHARACTER(kind = C_CHAR)    , DIMENSION(*) :: idt
+         INTEGER  (kind = C_INT)     , VALUE        :: idt_size
+      END SUBROUTINE cxios_reduce_domain_to_axis_valid_id
+
+   END INTERFACE
+
+END MODULE REDUCE_DOMAIN_TO_AXIS_INTERFACE
Index: /XIOS/trunk/src/interface/fortran/reduce_domain_to_scalar_interface.f90
===================================================================
--- /XIOS/trunk/src/interface/fortran/reduce_domain_to_scalar_interface.f90	(revision 981)
+++ /XIOS/trunk/src/interface/fortran/reduce_domain_to_scalar_interface.f90	(revision 981)
@@ -0,0 +1,22 @@
+MODULE REDUCE_DOMAIN_TO_SCALAR_INTERFACE
+   USE, INTRINSIC :: ISO_C_BINDING
+
+   INTERFACE ! Ne pas appeler directement/Interface FORTRAN 2003 <-> C99
+
+      SUBROUTINE cxios_reduce_domain_to_scalar_handle_create(ret, idt, idt_size) BIND(C)
+         USE ISO_C_BINDING
+         INTEGER  (kind = C_INTPTR_T)               :: ret
+         CHARACTER(kind = C_CHAR)    , DIMENSION(*) :: idt
+         INTEGER  (kind = C_INT)     , VALUE        :: idt_size
+      END SUBROUTINE cxios_reduce_domain_to_scalar_handle_create
+
+      SUBROUTINE cxios_reduce_domain_to_scalar_valid_id(ret, idt, idt_size) BIND(C)
+         USE ISO_C_BINDING
+         LOGICAL  (kind = C_BOOL)                   :: ret
+         CHARACTER(kind = C_CHAR)    , DIMENSION(*) :: idt
+         INTEGER  (kind = C_INT)     , VALUE        :: idt_size
+      END SUBROUTINE cxios_reduce_domain_to_scalar_valid_id
+
+   END INTERFACE
+
+END MODULE REDUCE_DOMAIN_TO_SCALAR_INTERFACE
Index: /XIOS/trunk/src/interface/fortran_attr/expand_domain_interface_attr.F90
===================================================================
--- /XIOS/trunk/src/interface/fortran_attr/expand_domain_interface_attr.F90	(revision 981)
+++ /XIOS/trunk/src/interface/fortran_attr/expand_domain_interface_attr.F90	(revision 981)
@@ -0,0 +1,53 @@
+! * ************************************************************************** *
+! *               Interface auto generated - do not modify                     *
+! * ************************************************************************** *
+#include "../fortran/xios_fortran_prefix.hpp"
+
+MODULE expand_domain_interface_attr
+  USE, INTRINSIC :: ISO_C_BINDING
+
+  INTERFACE
+    ! Do not call directly / interface FORTRAN 2003 <-> C99
+
+    SUBROUTINE cxios_set_expand_domain_order(expand_domain_hdl, order) BIND(C)
+      USE ISO_C_BINDING
+      INTEGER (kind = C_INTPTR_T), VALUE :: expand_domain_hdl
+      INTEGER (KIND=C_INT)      , VALUE :: order
+    END SUBROUTINE cxios_set_expand_domain_order
+
+    SUBROUTINE cxios_get_expand_domain_order(expand_domain_hdl, order) BIND(C)
+      USE ISO_C_BINDING
+      INTEGER (kind = C_INTPTR_T), VALUE :: expand_domain_hdl
+      INTEGER (KIND=C_INT)             :: order
+    END SUBROUTINE cxios_get_expand_domain_order
+
+    FUNCTION cxios_is_defined_expand_domain_order(expand_domain_hdl) BIND(C)
+      USE ISO_C_BINDING
+      LOGICAL(kind=C_BOOL) :: cxios_is_defined_expand_domain_order
+      INTEGER (kind = C_INTPTR_T), VALUE :: expand_domain_hdl
+    END FUNCTION cxios_is_defined_expand_domain_order
+
+
+    SUBROUTINE cxios_set_expand_domain_type(expand_domain_hdl, type, type_size) BIND(C)
+      USE ISO_C_BINDING
+      INTEGER (kind = C_INTPTR_T), VALUE :: expand_domain_hdl
+      CHARACTER(kind = C_CHAR)    , DIMENSION(*) :: type
+      INTEGER  (kind = C_INT)     , VALUE        :: type_size
+    END SUBROUTINE cxios_set_expand_domain_type
+
+    SUBROUTINE cxios_get_expand_domain_type(expand_domain_hdl, type, type_size) BIND(C)
+      USE ISO_C_BINDING
+      INTEGER (kind = C_INTPTR_T), VALUE :: expand_domain_hdl
+      CHARACTER(kind = C_CHAR)    , DIMENSION(*) :: type
+      INTEGER  (kind = C_INT)     , VALUE        :: type_size
+    END SUBROUTINE cxios_get_expand_domain_type
+
+    FUNCTION cxios_is_defined_expand_domain_type(expand_domain_hdl) BIND(C)
+      USE ISO_C_BINDING
+      LOGICAL(kind=C_BOOL) :: cxios_is_defined_expand_domain_type
+      INTEGER (kind = C_INTPTR_T), VALUE :: expand_domain_hdl
+    END FUNCTION cxios_is_defined_expand_domain_type
+
+  END INTERFACE
+
+END MODULE expand_domain_interface_attr
Index: /XIOS/trunk/src/interface/fortran_attr/extract_axis_to_scalar_interface_attr.F90
===================================================================
--- /XIOS/trunk/src/interface/fortran_attr/extract_axis_to_scalar_interface_attr.F90	(revision 981)
+++ /XIOS/trunk/src/interface/fortran_attr/extract_axis_to_scalar_interface_attr.F90	(revision 981)
@@ -0,0 +1,32 @@
+! * ************************************************************************** *
+! *               Interface auto generated - do not modify                     *
+! * ************************************************************************** *
+#include "../fortran/xios_fortran_prefix.hpp"
+
+MODULE extract_axis_to_scalar_interface_attr
+  USE, INTRINSIC :: ISO_C_BINDING
+
+  INTERFACE
+    ! Do not call directly / interface FORTRAN 2003 <-> C99
+
+    SUBROUTINE cxios_set_extract_axis_to_scalar_position(extract_axis_to_scalar_hdl, position) BIND(C)
+      USE ISO_C_BINDING
+      INTEGER (kind = C_INTPTR_T), VALUE :: extract_axis_to_scalar_hdl
+      INTEGER (KIND=C_INT)      , VALUE :: position
+    END SUBROUTINE cxios_set_extract_axis_to_scalar_position
+
+    SUBROUTINE cxios_get_extract_axis_to_scalar_position(extract_axis_to_scalar_hdl, position) BIND(C)
+      USE ISO_C_BINDING
+      INTEGER (kind = C_INTPTR_T), VALUE :: extract_axis_to_scalar_hdl
+      INTEGER (KIND=C_INT)             :: position
+    END SUBROUTINE cxios_get_extract_axis_to_scalar_position
+
+    FUNCTION cxios_is_defined_extract_axis_to_scalar_position(extract_axis_to_scalar_hdl) BIND(C)
+      USE ISO_C_BINDING
+      LOGICAL(kind=C_BOOL) :: cxios_is_defined_extract_axis_to_scalar_position
+      INTEGER (kind = C_INTPTR_T), VALUE :: extract_axis_to_scalar_hdl
+    END FUNCTION cxios_is_defined_extract_axis_to_scalar_position
+
+  END INTERFACE
+
+END MODULE extract_axis_to_scalar_interface_attr
Index: /XIOS/trunk/src/interface/fortran_attr/extract_domain_to_axis_interface_attr.F90
===================================================================
--- /XIOS/trunk/src/interface/fortran_attr/extract_domain_to_axis_interface_attr.F90	(revision 981)
+++ /XIOS/trunk/src/interface/fortran_attr/extract_domain_to_axis_interface_attr.F90	(revision 981)
@@ -0,0 +1,53 @@
+! * ************************************************************************** *
+! *               Interface auto generated - do not modify                     *
+! * ************************************************************************** *
+#include "../fortran/xios_fortran_prefix.hpp"
+
+MODULE extract_domain_to_axis_interface_attr
+  USE, INTRINSIC :: ISO_C_BINDING
+
+  INTERFACE
+    ! Do not call directly / interface FORTRAN 2003 <-> C99
+
+    SUBROUTINE cxios_set_extract_domain_to_axis_direction(extract_domain_to_axis_hdl, direction, direction_size) BIND(C)
+      USE ISO_C_BINDING
+      INTEGER (kind = C_INTPTR_T), VALUE :: extract_domain_to_axis_hdl
+      CHARACTER(kind = C_CHAR)    , DIMENSION(*) :: direction
+      INTEGER  (kind = C_INT)     , VALUE        :: direction_size
+    END SUBROUTINE cxios_set_extract_domain_to_axis_direction
+
+    SUBROUTINE cxios_get_extract_domain_to_axis_direction(extract_domain_to_axis_hdl, direction, direction_size) BIND(C)
+      USE ISO_C_BINDING
+      INTEGER (kind = C_INTPTR_T), VALUE :: extract_domain_to_axis_hdl
+      CHARACTER(kind = C_CHAR)    , DIMENSION(*) :: direction
+      INTEGER  (kind = C_INT)     , VALUE        :: direction_size
+    END SUBROUTINE cxios_get_extract_domain_to_axis_direction
+
+    FUNCTION cxios_is_defined_extract_domain_to_axis_direction(extract_domain_to_axis_hdl) BIND(C)
+      USE ISO_C_BINDING
+      LOGICAL(kind=C_BOOL) :: cxios_is_defined_extract_domain_to_axis_direction
+      INTEGER (kind = C_INTPTR_T), VALUE :: extract_domain_to_axis_hdl
+    END FUNCTION cxios_is_defined_extract_domain_to_axis_direction
+
+
+    SUBROUTINE cxios_set_extract_domain_to_axis_position(extract_domain_to_axis_hdl, position) BIND(C)
+      USE ISO_C_BINDING
+      INTEGER (kind = C_INTPTR_T), VALUE :: extract_domain_to_axis_hdl
+      INTEGER (KIND=C_INT)      , VALUE :: position
+    END SUBROUTINE cxios_set_extract_domain_to_axis_position
+
+    SUBROUTINE cxios_get_extract_domain_to_axis_position(extract_domain_to_axis_hdl, position) BIND(C)
+      USE ISO_C_BINDING
+      INTEGER (kind = C_INTPTR_T), VALUE :: extract_domain_to_axis_hdl
+      INTEGER (KIND=C_INT)             :: position
+    END SUBROUTINE cxios_get_extract_domain_to_axis_position
+
+    FUNCTION cxios_is_defined_extract_domain_to_axis_position(extract_domain_to_axis_hdl) BIND(C)
+      USE ISO_C_BINDING
+      LOGICAL(kind=C_BOOL) :: cxios_is_defined_extract_domain_to_axis_position
+      INTEGER (kind = C_INTPTR_T), VALUE :: extract_domain_to_axis_hdl
+    END FUNCTION cxios_is_defined_extract_domain_to_axis_position
+
+  END INTERFACE
+
+END MODULE extract_domain_to_axis_interface_attr
Index: /XIOS/trunk/src/interface/fortran_attr/iexpand_domain_attr.F90
===================================================================
--- /XIOS/trunk/src/interface/fortran_attr/iexpand_domain_attr.F90	(revision 981)
+++ /XIOS/trunk/src/interface/fortran_attr/iexpand_domain_attr.F90	(revision 981)
@@ -0,0 +1,168 @@
+! * ************************************************************************** *
+! *               Interface auto generated - do not modify                     *
+! * ************************************************************************** *
+#include "xios_fortran_prefix.hpp"
+
+MODULE iexpand_domain_attr
+  USE, INTRINSIC :: ISO_C_BINDING
+  USE iexpand_domain
+  USE expand_domain_interface_attr
+
+CONTAINS
+
+  SUBROUTINE xios(set_expand_domain_attr)  &
+    ( expand_domain_id, order, type )
+
+    IMPLICIT NONE
+      TYPE(txios(expand_domain))  :: expand_domain_hdl
+      CHARACTER(LEN=*), INTENT(IN) ::expand_domain_id
+      INTEGER  , OPTIONAL, INTENT(IN) :: order
+      CHARACTER(len = *) , OPTIONAL, INTENT(IN) :: type
+
+      CALL xios(get_expand_domain_handle) &
+      (expand_domain_id,expand_domain_hdl)
+      CALL xios(set_expand_domain_attr_hdl_)   &
+      ( expand_domain_hdl, order, type )
+
+  END SUBROUTINE xios(set_expand_domain_attr)
+
+  SUBROUTINE xios(set_expand_domain_attr_hdl)  &
+    ( expand_domain_hdl, order, type )
+
+    IMPLICIT NONE
+      TYPE(txios(expand_domain)) , INTENT(IN) :: expand_domain_hdl
+      INTEGER  , OPTIONAL, INTENT(IN) :: order
+      CHARACTER(len = *) , OPTIONAL, INTENT(IN) :: type
+
+      CALL xios(set_expand_domain_attr_hdl_)  &
+      ( expand_domain_hdl, order, type )
+
+  END SUBROUTINE xios(set_expand_domain_attr_hdl)
+
+  SUBROUTINE xios(set_expand_domain_attr_hdl_)   &
+    ( expand_domain_hdl, order_, type_ )
+
+    IMPLICIT NONE
+      TYPE(txios(expand_domain)) , INTENT(IN) :: expand_domain_hdl
+      INTEGER  , OPTIONAL, INTENT(IN) :: order_
+      CHARACTER(len = *) , OPTIONAL, INTENT(IN) :: type_
+
+      IF (PRESENT(order_)) THEN
+        CALL cxios_set_expand_domain_order &
+      (expand_domain_hdl%daddr, order_)
+      ENDIF
+
+      IF (PRESENT(type_)) THEN
+        CALL cxios_set_expand_domain_type &
+      (expand_domain_hdl%daddr, type_, len(type_))
+      ENDIF
+
+  END SUBROUTINE xios(set_expand_domain_attr_hdl_)
+
+  SUBROUTINE xios(get_expand_domain_attr)  &
+    ( expand_domain_id, order, type )
+
+    IMPLICIT NONE
+      TYPE(txios(expand_domain))  :: expand_domain_hdl
+      CHARACTER(LEN=*), INTENT(IN) ::expand_domain_id
+      INTEGER  , OPTIONAL, INTENT(OUT) :: order
+      CHARACTER(len = *) , OPTIONAL, INTENT(OUT) :: type
+
+      CALL xios(get_expand_domain_handle) &
+      (expand_domain_id,expand_domain_hdl)
+      CALL xios(get_expand_domain_attr_hdl_)   &
+      ( expand_domain_hdl, order, type )
+
+  END SUBROUTINE xios(get_expand_domain_attr)
+
+  SUBROUTINE xios(get_expand_domain_attr_hdl)  &
+    ( expand_domain_hdl, order, type )
+
+    IMPLICIT NONE
+      TYPE(txios(expand_domain)) , INTENT(IN) :: expand_domain_hdl
+      INTEGER  , OPTIONAL, INTENT(OUT) :: order
+      CHARACTER(len = *) , OPTIONAL, INTENT(OUT) :: type
+
+      CALL xios(get_expand_domain_attr_hdl_)  &
+      ( expand_domain_hdl, order, type )
+
+  END SUBROUTINE xios(get_expand_domain_attr_hdl)
+
+  SUBROUTINE xios(get_expand_domain_attr_hdl_)   &
+    ( expand_domain_hdl, order_, type_ )
+
+    IMPLICIT NONE
+      TYPE(txios(expand_domain)) , INTENT(IN) :: expand_domain_hdl
+      INTEGER  , OPTIONAL, INTENT(OUT) :: order_
+      CHARACTER(len = *) , OPTIONAL, INTENT(OUT) :: type_
+
+      IF (PRESENT(order_)) THEN
+        CALL cxios_get_expand_domain_order &
+      (expand_domain_hdl%daddr, order_)
+      ENDIF
+
+      IF (PRESENT(type_)) THEN
+        CALL cxios_get_expand_domain_type &
+      (expand_domain_hdl%daddr, type_, len(type_))
+      ENDIF
+
+  END SUBROUTINE xios(get_expand_domain_attr_hdl_)
+
+  SUBROUTINE xios(is_defined_expand_domain_attr)  &
+    ( expand_domain_id, order, type )
+
+    IMPLICIT NONE
+      TYPE(txios(expand_domain))  :: expand_domain_hdl
+      CHARACTER(LEN=*), INTENT(IN) ::expand_domain_id
+      LOGICAL, OPTIONAL, INTENT(OUT) :: order
+      LOGICAL(KIND=C_BOOL) :: order_tmp
+      LOGICAL, OPTIONAL, INTENT(OUT) :: type
+      LOGICAL(KIND=C_BOOL) :: type_tmp
+
+      CALL xios(get_expand_domain_handle) &
+      (expand_domain_id,expand_domain_hdl)
+      CALL xios(is_defined_expand_domain_attr_hdl_)   &
+      ( expand_domain_hdl, order, type )
+
+  END SUBROUTINE xios(is_defined_expand_domain_attr)
+
+  SUBROUTINE xios(is_defined_expand_domain_attr_hdl)  &
+    ( expand_domain_hdl, order, type )
+
+    IMPLICIT NONE
+      TYPE(txios(expand_domain)) , INTENT(IN) :: expand_domain_hdl
+      LOGICAL, OPTIONAL, INTENT(OUT) :: order
+      LOGICAL(KIND=C_BOOL) :: order_tmp
+      LOGICAL, OPTIONAL, INTENT(OUT) :: type
+      LOGICAL(KIND=C_BOOL) :: type_tmp
+
+      CALL xios(is_defined_expand_domain_attr_hdl_)  &
+      ( expand_domain_hdl, order, type )
+
+  END SUBROUTINE xios(is_defined_expand_domain_attr_hdl)
+
+  SUBROUTINE xios(is_defined_expand_domain_attr_hdl_)   &
+    ( expand_domain_hdl, order_, type_ )
+
+    IMPLICIT NONE
+      TYPE(txios(expand_domain)) , INTENT(IN) :: expand_domain_hdl
+      LOGICAL, OPTIONAL, INTENT(OUT) :: order_
+      LOGICAL(KIND=C_BOOL) :: order__tmp
+      LOGICAL, OPTIONAL, INTENT(OUT) :: type_
+      LOGICAL(KIND=C_BOOL) :: type__tmp
+
+      IF (PRESENT(order_)) THEN
+        order__tmp = cxios_is_defined_expand_domain_order &
+      (expand_domain_hdl%daddr)
+        order_ = order__tmp
+      ENDIF
+
+      IF (PRESENT(type_)) THEN
+        type__tmp = cxios_is_defined_expand_domain_type &
+      (expand_domain_hdl%daddr)
+        type_ = type__tmp
+      ENDIF
+
+  END SUBROUTINE xios(is_defined_expand_domain_attr_hdl_)
+
+END MODULE iexpand_domain_attr
Index: /XIOS/trunk/src/interface/fortran_attr/iextract_axis_to_scalar_attr.F90
===================================================================
--- /XIOS/trunk/src/interface/fortran_attr/iextract_axis_to_scalar_attr.F90	(revision 981)
+++ /XIOS/trunk/src/interface/fortran_attr/iextract_axis_to_scalar_attr.F90	(revision 981)
@@ -0,0 +1,140 @@
+! * ************************************************************************** *
+! *               Interface auto generated - do not modify                     *
+! * ************************************************************************** *
+#include "xios_fortran_prefix.hpp"
+
+MODULE iextract_axis_to_scalar_attr
+  USE, INTRINSIC :: ISO_C_BINDING
+  USE iextract_axis_to_scalar
+  USE extract_axis_to_scalar_interface_attr
+
+CONTAINS
+
+  SUBROUTINE xios(set_extract_axis_to_scalar_attr)  &
+    ( extract_axis_to_scalar_id, position )
+
+    IMPLICIT NONE
+      TYPE(txios(extract_axis_to_scalar))  :: extract_axis_to_scalar_hdl
+      CHARACTER(LEN=*), INTENT(IN) ::extract_axis_to_scalar_id
+      INTEGER  , OPTIONAL, INTENT(IN) :: position
+
+      CALL xios(get_extract_axis_to_scalar_handle) &
+      (extract_axis_to_scalar_id,extract_axis_to_scalar_hdl)
+      CALL xios(set_extract_axis_to_scalar_attr_hdl_)   &
+      ( extract_axis_to_scalar_hdl, position )
+
+  END SUBROUTINE xios(set_extract_axis_to_scalar_attr)
+
+  SUBROUTINE xios(set_extract_axis_to_scalar_attr_hdl)  &
+    ( extract_axis_to_scalar_hdl, position )
+
+    IMPLICIT NONE
+      TYPE(txios(extract_axis_to_scalar)) , INTENT(IN) :: extract_axis_to_scalar_hdl
+      INTEGER  , OPTIONAL, INTENT(IN) :: position
+
+      CALL xios(set_extract_axis_to_scalar_attr_hdl_)  &
+      ( extract_axis_to_scalar_hdl, position )
+
+  END SUBROUTINE xios(set_extract_axis_to_scalar_attr_hdl)
+
+  SUBROUTINE xios(set_extract_axis_to_scalar_attr_hdl_)   &
+    ( extract_axis_to_scalar_hdl, position_ )
+
+    IMPLICIT NONE
+      TYPE(txios(extract_axis_to_scalar)) , INTENT(IN) :: extract_axis_to_scalar_hdl
+      INTEGER  , OPTIONAL, INTENT(IN) :: position_
+
+      IF (PRESENT(position_)) THEN
+        CALL cxios_set_extract_axis_to_scalar_position &
+      (extract_axis_to_scalar_hdl%daddr, position_)
+      ENDIF
+
+  END SUBROUTINE xios(set_extract_axis_to_scalar_attr_hdl_)
+
+  SUBROUTINE xios(get_extract_axis_to_scalar_attr)  &
+    ( extract_axis_to_scalar_id, position )
+
+    IMPLICIT NONE
+      TYPE(txios(extract_axis_to_scalar))  :: extract_axis_to_scalar_hdl
+      CHARACTER(LEN=*), INTENT(IN) ::extract_axis_to_scalar_id
+      INTEGER  , OPTIONAL, INTENT(OUT) :: position
+
+      CALL xios(get_extract_axis_to_scalar_handle) &
+      (extract_axis_to_scalar_id,extract_axis_to_scalar_hdl)
+      CALL xios(get_extract_axis_to_scalar_attr_hdl_)   &
+      ( extract_axis_to_scalar_hdl, position )
+
+  END SUBROUTINE xios(get_extract_axis_to_scalar_attr)
+
+  SUBROUTINE xios(get_extract_axis_to_scalar_attr_hdl)  &
+    ( extract_axis_to_scalar_hdl, position )
+
+    IMPLICIT NONE
+      TYPE(txios(extract_axis_to_scalar)) , INTENT(IN) :: extract_axis_to_scalar_hdl
+      INTEGER  , OPTIONAL, INTENT(OUT) :: position
+
+      CALL xios(get_extract_axis_to_scalar_attr_hdl_)  &
+      ( extract_axis_to_scalar_hdl, position )
+
+  END SUBROUTINE xios(get_extract_axis_to_scalar_attr_hdl)
+
+  SUBROUTINE xios(get_extract_axis_to_scalar_attr_hdl_)   &
+    ( extract_axis_to_scalar_hdl, position_ )
+
+    IMPLICIT NONE
+      TYPE(txios(extract_axis_to_scalar)) , INTENT(IN) :: extract_axis_to_scalar_hdl
+      INTEGER  , OPTIONAL, INTENT(OUT) :: position_
+
+      IF (PRESENT(position_)) THEN
+        CALL cxios_get_extract_axis_to_scalar_position &
+      (extract_axis_to_scalar_hdl%daddr, position_)
+      ENDIF
+
+  END SUBROUTINE xios(get_extract_axis_to_scalar_attr_hdl_)
+
+  SUBROUTINE xios(is_defined_extract_axis_to_scalar_attr)  &
+    ( extract_axis_to_scalar_id, position )
+
+    IMPLICIT NONE
+      TYPE(txios(extract_axis_to_scalar))  :: extract_axis_to_scalar_hdl
+      CHARACTER(LEN=*), INTENT(IN) ::extract_axis_to_scalar_id
+      LOGICAL, OPTIONAL, INTENT(OUT) :: position
+      LOGICAL(KIND=C_BOOL) :: position_tmp
+
+      CALL xios(get_extract_axis_to_scalar_handle) &
+      (extract_axis_to_scalar_id,extract_axis_to_scalar_hdl)
+      CALL xios(is_defined_extract_axis_to_scalar_attr_hdl_)   &
+      ( extract_axis_to_scalar_hdl, position )
+
+  END SUBROUTINE xios(is_defined_extract_axis_to_scalar_attr)
+
+  SUBROUTINE xios(is_defined_extract_axis_to_scalar_attr_hdl)  &
+    ( extract_axis_to_scalar_hdl, position )
+
+    IMPLICIT NONE
+      TYPE(txios(extract_axis_to_scalar)) , INTENT(IN) :: extract_axis_to_scalar_hdl
+      LOGICAL, OPTIONAL, INTENT(OUT) :: position
+      LOGICAL(KIND=C_BOOL) :: position_tmp
+
+      CALL xios(is_defined_extract_axis_to_scalar_attr_hdl_)  &
+      ( extract_axis_to_scalar_hdl, position )
+
+  END SUBROUTINE xios(is_defined_extract_axis_to_scalar_attr_hdl)
+
+  SUBROUTINE xios(is_defined_extract_axis_to_scalar_attr_hdl_)   &
+    ( extract_axis_to_scalar_hdl, position_ )
+
+    IMPLICIT NONE
+      TYPE(txios(extract_axis_to_scalar)) , INTENT(IN) :: extract_axis_to_scalar_hdl
+      LOGICAL, OPTIONAL, INTENT(OUT) :: position_
+      LOGICAL(KIND=C_BOOL) :: position__tmp
+
+      IF (PRESENT(position_)) THEN
+        position__tmp = cxios_is_defined_extract_axis_to_scalar_position &
+      (extract_axis_to_scalar_hdl%daddr)
+        position_ = position__tmp
+      ENDIF
+
+  END SUBROUTINE xios(is_defined_extract_axis_to_scalar_attr_hdl_)
+
+END MODULE iextract_axis_to_scalar_attr
Index: /XIOS/trunk/src/interface/fortran_attr/iextract_domain_to_axis_attr.F90
===================================================================
--- /XIOS/trunk/src/interface/fortran_attr/iextract_domain_to_axis_attr.F90	(revision 981)
+++ /XIOS/trunk/src/interface/fortran_attr/iextract_domain_to_axis_attr.F90	(revision 981)
@@ -0,0 +1,168 @@
+! * ************************************************************************** *
+! *               Interface auto generated - do not modify                     *
+! * ************************************************************************** *
+#include "xios_fortran_prefix.hpp"
+
+MODULE iextract_domain_to_axis_attr
+  USE, INTRINSIC :: ISO_C_BINDING
+  USE iextract_domain_to_axis
+  USE extract_domain_to_axis_interface_attr
+
+CONTAINS
+
+  SUBROUTINE xios(set_extract_domain_to_axis_attr)  &
+    ( extract_domain_to_axis_id, direction, position )
+
+    IMPLICIT NONE
+      TYPE(txios(extract_domain_to_axis))  :: extract_domain_to_axis_hdl
+      CHARACTER(LEN=*), INTENT(IN) ::extract_domain_to_axis_id
+      CHARACTER(len = *) , OPTIONAL, INTENT(IN) :: direction
+      INTEGER  , OPTIONAL, INTENT(IN) :: position
+
+      CALL xios(get_extract_domain_to_axis_handle) &
+      (extract_domain_to_axis_id,extract_domain_to_axis_hdl)
+      CALL xios(set_extract_domain_to_axis_attr_hdl_)   &
+      ( extract_domain_to_axis_hdl, direction, position )
+
+  END SUBROUTINE xios(set_extract_domain_to_axis_attr)
+
+  SUBROUTINE xios(set_extract_domain_to_axis_attr_hdl)  &
+    ( extract_domain_to_axis_hdl, direction, position )
+
+    IMPLICIT NONE
+      TYPE(txios(extract_domain_to_axis)) , INTENT(IN) :: extract_domain_to_axis_hdl
+      CHARACTER(len = *) , OPTIONAL, INTENT(IN) :: direction
+      INTEGER  , OPTIONAL, INTENT(IN) :: position
+
+      CALL xios(set_extract_domain_to_axis_attr_hdl_)  &
+      ( extract_domain_to_axis_hdl, direction, position )
+
+  END SUBROUTINE xios(set_extract_domain_to_axis_attr_hdl)
+
+  SUBROUTINE xios(set_extract_domain_to_axis_attr_hdl_)   &
+    ( extract_domain_to_axis_hdl, direction_, position_ )
+
+    IMPLICIT NONE
+      TYPE(txios(extract_domain_to_axis)) , INTENT(IN) :: extract_domain_to_axis_hdl
+      CHARACTER(len = *) , OPTIONAL, INTENT(IN) :: direction_
+      INTEGER  , OPTIONAL, INTENT(IN) :: position_
+
+      IF (PRESENT(direction_)) THEN
+        CALL cxios_set_extract_domain_to_axis_direction &
+      (extract_domain_to_axis_hdl%daddr, direction_, len(direction_))
+      ENDIF
+
+      IF (PRESENT(position_)) THEN
+        CALL cxios_set_extract_domain_to_axis_position &
+      (extract_domain_to_axis_hdl%daddr, position_)
+      ENDIF
+
+  END SUBROUTINE xios(set_extract_domain_to_axis_attr_hdl_)
+
+  SUBROUTINE xios(get_extract_domain_to_axis_attr)  &
+    ( extract_domain_to_axis_id, direction, position )
+
+    IMPLICIT NONE
+      TYPE(txios(extract_domain_to_axis))  :: extract_domain_to_axis_hdl
+      CHARACTER(LEN=*), INTENT(IN) ::extract_domain_to_axis_id
+      CHARACTER(len = *) , OPTIONAL, INTENT(OUT) :: direction
+      INTEGER  , OPTIONAL, INTENT(OUT) :: position
+
+      CALL xios(get_extract_domain_to_axis_handle) &
+      (extract_domain_to_axis_id,extract_domain_to_axis_hdl)
+      CALL xios(get_extract_domain_to_axis_attr_hdl_)   &
+      ( extract_domain_to_axis_hdl, direction, position )
+
+  END SUBROUTINE xios(get_extract_domain_to_axis_attr)
+
+  SUBROUTINE xios(get_extract_domain_to_axis_attr_hdl)  &
+    ( extract_domain_to_axis_hdl, direction, position )
+
+    IMPLICIT NONE
+      TYPE(txios(extract_domain_to_axis)) , INTENT(IN) :: extract_domain_to_axis_hdl
+      CHARACTER(len = *) , OPTIONAL, INTENT(OUT) :: direction
+      INTEGER  , OPTIONAL, INTENT(OUT) :: position
+
+      CALL xios(get_extract_domain_to_axis_attr_hdl_)  &
+      ( extract_domain_to_axis_hdl, direction, position )
+
+  END SUBROUTINE xios(get_extract_domain_to_axis_attr_hdl)
+
+  SUBROUTINE xios(get_extract_domain_to_axis_attr_hdl_)   &
+    ( extract_domain_to_axis_hdl, direction_, position_ )
+
+    IMPLICIT NONE
+      TYPE(txios(extract_domain_to_axis)) , INTENT(IN) :: extract_domain_to_axis_hdl
+      CHARACTER(len = *) , OPTIONAL, INTENT(OUT) :: direction_
+      INTEGER  , OPTIONAL, INTENT(OUT) :: position_
+
+      IF (PRESENT(direction_)) THEN
+        CALL cxios_get_extract_domain_to_axis_direction &
+      (extract_domain_to_axis_hdl%daddr, direction_, len(direction_))
+      ENDIF
+
+      IF (PRESENT(position_)) THEN
+        CALL cxios_get_extract_domain_to_axis_position &
+      (extract_domain_to_axis_hdl%daddr, position_)
+      ENDIF
+
+  END SUBROUTINE xios(get_extract_domain_to_axis_attr_hdl_)
+
+  SUBROUTINE xios(is_defined_extract_domain_to_axis_attr)  &
+    ( extract_domain_to_axis_id, direction, position )
+
+    IMPLICIT NONE
+      TYPE(txios(extract_domain_to_axis))  :: extract_domain_to_axis_hdl
+      CHARACTER(LEN=*), INTENT(IN) ::extract_domain_to_axis_id
+      LOGICAL, OPTIONAL, INTENT(OUT) :: direction
+      LOGICAL(KIND=C_BOOL) :: direction_tmp
+      LOGICAL, OPTIONAL, INTENT(OUT) :: position
+      LOGICAL(KIND=C_BOOL) :: position_tmp
+
+      CALL xios(get_extract_domain_to_axis_handle) &
+      (extract_domain_to_axis_id,extract_domain_to_axis_hdl)
+      CALL xios(is_defined_extract_domain_to_axis_attr_hdl_)   &
+      ( extract_domain_to_axis_hdl, direction, position )
+
+  END SUBROUTINE xios(is_defined_extract_domain_to_axis_attr)
+
+  SUBROUTINE xios(is_defined_extract_domain_to_axis_attr_hdl)  &
+    ( extract_domain_to_axis_hdl, direction, position )
+
+    IMPLICIT NONE
+      TYPE(txios(extract_domain_to_axis)) , INTENT(IN) :: extract_domain_to_axis_hdl
+      LOGICAL, OPTIONAL, INTENT(OUT) :: direction
+      LOGICAL(KIND=C_BOOL) :: direction_tmp
+      LOGICAL, OPTIONAL, INTENT(OUT) :: position
+      LOGICAL(KIND=C_BOOL) :: position_tmp
+
+      CALL xios(is_defined_extract_domain_to_axis_attr_hdl_)  &
+      ( extract_domain_to_axis_hdl, direction, position )
+
+  END SUBROUTINE xios(is_defined_extract_domain_to_axis_attr_hdl)
+
+  SUBROUTINE xios(is_defined_extract_domain_to_axis_attr_hdl_)   &
+    ( extract_domain_to_axis_hdl, direction_, position_ )
+
+    IMPLICIT NONE
+      TYPE(txios(extract_domain_to_axis)) , INTENT(IN) :: extract_domain_to_axis_hdl
+      LOGICAL, OPTIONAL, INTENT(OUT) :: direction_
+      LOGICAL(KIND=C_BOOL) :: direction__tmp
+      LOGICAL, OPTIONAL, INTENT(OUT) :: position_
+      LOGICAL(KIND=C_BOOL) :: position__tmp
+
+      IF (PRESENT(direction_)) THEN
+        direction__tmp = cxios_is_defined_extract_domain_to_axis_direction &
+      (extract_domain_to_axis_hdl%daddr)
+        direction_ = direction__tmp
+      ENDIF
+
+      IF (PRESENT(position_)) THEN
+        position__tmp = cxios_is_defined_extract_domain_to_axis_position &
+      (extract_domain_to_axis_hdl%daddr)
+        position_ = position__tmp
+      ENDIF
+
+  END SUBROUTINE xios(is_defined_extract_domain_to_axis_attr_hdl_)
+
+END MODULE iextract_domain_to_axis_attr
Index: /XIOS/trunk/src/interface/fortran_attr/ireduce_domain_to_axis_attr.F90
===================================================================
--- /XIOS/trunk/src/interface/fortran_attr/ireduce_domain_to_axis_attr.F90	(revision 981)
+++ /XIOS/trunk/src/interface/fortran_attr/ireduce_domain_to_axis_attr.F90	(revision 981)
@@ -0,0 +1,168 @@
+! * ************************************************************************** *
+! *               Interface auto generated - do not modify                     *
+! * ************************************************************************** *
+#include "xios_fortran_prefix.hpp"
+
+MODULE ireduce_domain_to_axis_attr
+  USE, INTRINSIC :: ISO_C_BINDING
+  USE ireduce_domain_to_axis
+  USE reduce_domain_to_axis_interface_attr
+
+CONTAINS
+
+  SUBROUTINE xios(set_reduce_domain_to_axis_attr)  &
+    ( reduce_domain_to_axis_id, direction, operation )
+
+    IMPLICIT NONE
+      TYPE(txios(reduce_domain_to_axis))  :: reduce_domain_to_axis_hdl
+      CHARACTER(LEN=*), INTENT(IN) ::reduce_domain_to_axis_id
+      CHARACTER(len = *) , OPTIONAL, INTENT(IN) :: direction
+      CHARACTER(len = *) , OPTIONAL, INTENT(IN) :: operation
+
+      CALL xios(get_reduce_domain_to_axis_handle) &
+      (reduce_domain_to_axis_id,reduce_domain_to_axis_hdl)
+      CALL xios(set_reduce_domain_to_axis_attr_hdl_)   &
+      ( reduce_domain_to_axis_hdl, direction, operation )
+
+  END SUBROUTINE xios(set_reduce_domain_to_axis_attr)
+
+  SUBROUTINE xios(set_reduce_domain_to_axis_attr_hdl)  &
+    ( reduce_domain_to_axis_hdl, direction, operation )
+
+    IMPLICIT NONE
+      TYPE(txios(reduce_domain_to_axis)) , INTENT(IN) :: reduce_domain_to_axis_hdl
+      CHARACTER(len = *) , OPTIONAL, INTENT(IN) :: direction
+      CHARACTER(len = *) , OPTIONAL, INTENT(IN) :: operation
+
+      CALL xios(set_reduce_domain_to_axis_attr_hdl_)  &
+      ( reduce_domain_to_axis_hdl, direction, operation )
+
+  END SUBROUTINE xios(set_reduce_domain_to_axis_attr_hdl)
+
+  SUBROUTINE xios(set_reduce_domain_to_axis_attr_hdl_)   &
+    ( reduce_domain_to_axis_hdl, direction_, operation_ )
+
+    IMPLICIT NONE
+      TYPE(txios(reduce_domain_to_axis)) , INTENT(IN) :: reduce_domain_to_axis_hdl
+      CHARACTER(len = *) , OPTIONAL, INTENT(IN) :: direction_
+      CHARACTER(len = *) , OPTIONAL, INTENT(IN) :: operation_
+
+      IF (PRESENT(direction_)) THEN
+        CALL cxios_set_reduce_domain_to_axis_direction &
+      (reduce_domain_to_axis_hdl%daddr, direction_, len(direction_))
+      ENDIF
+
+      IF (PRESENT(operation_)) THEN
+        CALL cxios_set_reduce_domain_to_axis_operation &
+      (reduce_domain_to_axis_hdl%daddr, operation_, len(operation_))
+      ENDIF
+
+  END SUBROUTINE xios(set_reduce_domain_to_axis_attr_hdl_)
+
+  SUBROUTINE xios(get_reduce_domain_to_axis_attr)  &
+    ( reduce_domain_to_axis_id, direction, operation )
+
+    IMPLICIT NONE
+      TYPE(txios(reduce_domain_to_axis))  :: reduce_domain_to_axis_hdl
+      CHARACTER(LEN=*), INTENT(IN) ::reduce_domain_to_axis_id
+      CHARACTER(len = *) , OPTIONAL, INTENT(OUT) :: direction
+      CHARACTER(len = *) , OPTIONAL, INTENT(OUT) :: operation
+
+      CALL xios(get_reduce_domain_to_axis_handle) &
+      (reduce_domain_to_axis_id,reduce_domain_to_axis_hdl)
+      CALL xios(get_reduce_domain_to_axis_attr_hdl_)   &
+      ( reduce_domain_to_axis_hdl, direction, operation )
+
+  END SUBROUTINE xios(get_reduce_domain_to_axis_attr)
+
+  SUBROUTINE xios(get_reduce_domain_to_axis_attr_hdl)  &
+    ( reduce_domain_to_axis_hdl, direction, operation )
+
+    IMPLICIT NONE
+      TYPE(txios(reduce_domain_to_axis)) , INTENT(IN) :: reduce_domain_to_axis_hdl
+      CHARACTER(len = *) , OPTIONAL, INTENT(OUT) :: direction
+      CHARACTER(len = *) , OPTIONAL, INTENT(OUT) :: operation
+
+      CALL xios(get_reduce_domain_to_axis_attr_hdl_)  &
+      ( reduce_domain_to_axis_hdl, direction, operation )
+
+  END SUBROUTINE xios(get_reduce_domain_to_axis_attr_hdl)
+
+  SUBROUTINE xios(get_reduce_domain_to_axis_attr_hdl_)   &
+    ( reduce_domain_to_axis_hdl, direction_, operation_ )
+
+    IMPLICIT NONE
+      TYPE(txios(reduce_domain_to_axis)) , INTENT(IN) :: reduce_domain_to_axis_hdl
+      CHARACTER(len = *) , OPTIONAL, INTENT(OUT) :: direction_
+      CHARACTER(len = *) , OPTIONAL, INTENT(OUT) :: operation_
+
+      IF (PRESENT(direction_)) THEN
+        CALL cxios_get_reduce_domain_to_axis_direction &
+      (reduce_domain_to_axis_hdl%daddr, direction_, len(direction_))
+      ENDIF
+
+      IF (PRESENT(operation_)) THEN
+        CALL cxios_get_reduce_domain_to_axis_operation &
+      (reduce_domain_to_axis_hdl%daddr, operation_, len(operation_))
+      ENDIF
+
+  END SUBROUTINE xios(get_reduce_domain_to_axis_attr_hdl_)
+
+  SUBROUTINE xios(is_defined_reduce_domain_to_axis_attr)  &
+    ( reduce_domain_to_axis_id, direction, operation )
+
+    IMPLICIT NONE
+      TYPE(txios(reduce_domain_to_axis))  :: reduce_domain_to_axis_hdl
+      CHARACTER(LEN=*), INTENT(IN) ::reduce_domain_to_axis_id
+      LOGICAL, OPTIONAL, INTENT(OUT) :: direction
+      LOGICAL(KIND=C_BOOL) :: direction_tmp
+      LOGICAL, OPTIONAL, INTENT(OUT) :: operation
+      LOGICAL(KIND=C_BOOL) :: operation_tmp
+
+      CALL xios(get_reduce_domain_to_axis_handle) &
+      (reduce_domain_to_axis_id,reduce_domain_to_axis_hdl)
+      CALL xios(is_defined_reduce_domain_to_axis_attr_hdl_)   &
+      ( reduce_domain_to_axis_hdl, direction, operation )
+
+  END SUBROUTINE xios(is_defined_reduce_domain_to_axis_attr)
+
+  SUBROUTINE xios(is_defined_reduce_domain_to_axis_attr_hdl)  &
+    ( reduce_domain_to_axis_hdl, direction, operation )
+
+    IMPLICIT NONE
+      TYPE(txios(reduce_domain_to_axis)) , INTENT(IN) :: reduce_domain_to_axis_hdl
+      LOGICAL, OPTIONAL, INTENT(OUT) :: direction
+      LOGICAL(KIND=C_BOOL) :: direction_tmp
+      LOGICAL, OPTIONAL, INTENT(OUT) :: operation
+      LOGICAL(KIND=C_BOOL) :: operation_tmp
+
+      CALL xios(is_defined_reduce_domain_to_axis_attr_hdl_)  &
+      ( reduce_domain_to_axis_hdl, direction, operation )
+
+  END SUBROUTINE xios(is_defined_reduce_domain_to_axis_attr_hdl)
+
+  SUBROUTINE xios(is_defined_reduce_domain_to_axis_attr_hdl_)   &
+    ( reduce_domain_to_axis_hdl, direction_, operation_ )
+
+    IMPLICIT NONE
+      TYPE(txios(reduce_domain_to_axis)) , INTENT(IN) :: reduce_domain_to_axis_hdl
+      LOGICAL, OPTIONAL, INTENT(OUT) :: direction_
+      LOGICAL(KIND=C_BOOL) :: direction__tmp
+      LOGICAL, OPTIONAL, INTENT(OUT) :: operation_
+      LOGICAL(KIND=C_BOOL) :: operation__tmp
+
+      IF (PRESENT(direction_)) THEN
+        direction__tmp = cxios_is_defined_reduce_domain_to_axis_direction &
+      (reduce_domain_to_axis_hdl%daddr)
+        direction_ = direction__tmp
+      ENDIF
+
+      IF (PRESENT(operation_)) THEN
+        operation__tmp = cxios_is_defined_reduce_domain_to_axis_operation &
+      (reduce_domain_to_axis_hdl%daddr)
+        operation_ = operation__tmp
+      ENDIF
+
+  END SUBROUTINE xios(is_defined_reduce_domain_to_axis_attr_hdl_)
+
+END MODULE ireduce_domain_to_axis_attr
Index: /XIOS/trunk/src/interface/fortran_attr/ireduce_domain_to_scalar_attr.F90
===================================================================
--- /XIOS/trunk/src/interface/fortran_attr/ireduce_domain_to_scalar_attr.F90	(revision 981)
+++ /XIOS/trunk/src/interface/fortran_attr/ireduce_domain_to_scalar_attr.F90	(revision 981)
@@ -0,0 +1,140 @@
+! * ************************************************************************** *
+! *               Interface auto generated - do not modify                     *
+! * ************************************************************************** *
+#include "xios_fortran_prefix.hpp"
+
+MODULE ireduce_domain_to_scalar_attr
+  USE, INTRINSIC :: ISO_C_BINDING
+  USE ireduce_domain_to_scalar
+  USE reduce_domain_to_scalar_interface_attr
+
+CONTAINS
+
+  SUBROUTINE xios(set_reduce_domain_to_scalar_attr)  &
+    ( reduce_domain_to_scalar_id, operation )
+
+    IMPLICIT NONE
+      TYPE(txios(reduce_domain_to_scalar))  :: reduce_domain_to_scalar_hdl
+      CHARACTER(LEN=*), INTENT(IN) ::reduce_domain_to_scalar_id
+      CHARACTER(len = *) , OPTIONAL, INTENT(IN) :: operation
+
+      CALL xios(get_reduce_domain_to_scalar_handle) &
+      (reduce_domain_to_scalar_id,reduce_domain_to_scalar_hdl)
+      CALL xios(set_reduce_domain_to_scalar_attr_hdl_)   &
+      ( reduce_domain_to_scalar_hdl, operation )
+
+  END SUBROUTINE xios(set_reduce_domain_to_scalar_attr)
+
+  SUBROUTINE xios(set_reduce_domain_to_scalar_attr_hdl)  &
+    ( reduce_domain_to_scalar_hdl, operation )
+
+    IMPLICIT NONE
+      TYPE(txios(reduce_domain_to_scalar)) , INTENT(IN) :: reduce_domain_to_scalar_hdl
+      CHARACTER(len = *) , OPTIONAL, INTENT(IN) :: operation
+
+      CALL xios(set_reduce_domain_to_scalar_attr_hdl_)  &
+      ( reduce_domain_to_scalar_hdl, operation )
+
+  END SUBROUTINE xios(set_reduce_domain_to_scalar_attr_hdl)
+
+  SUBROUTINE xios(set_reduce_domain_to_scalar_attr_hdl_)   &
+    ( reduce_domain_to_scalar_hdl, operation_ )
+
+    IMPLICIT NONE
+      TYPE(txios(reduce_domain_to_scalar)) , INTENT(IN) :: reduce_domain_to_scalar_hdl
+      CHARACTER(len = *) , OPTIONAL, INTENT(IN) :: operation_
+
+      IF (PRESENT(operation_)) THEN
+        CALL cxios_set_reduce_domain_to_scalar_operation &
+      (reduce_domain_to_scalar_hdl%daddr, operation_, len(operation_))
+      ENDIF
+
+  END SUBROUTINE xios(set_reduce_domain_to_scalar_attr_hdl_)
+
+  SUBROUTINE xios(get_reduce_domain_to_scalar_attr)  &
+    ( reduce_domain_to_scalar_id, operation )
+
+    IMPLICIT NONE
+      TYPE(txios(reduce_domain_to_scalar))  :: reduce_domain_to_scalar_hdl
+      CHARACTER(LEN=*), INTENT(IN) ::reduce_domain_to_scalar_id
+      CHARACTER(len = *) , OPTIONAL, INTENT(OUT) :: operation
+
+      CALL xios(get_reduce_domain_to_scalar_handle) &
+      (reduce_domain_to_scalar_id,reduce_domain_to_scalar_hdl)
+      CALL xios(get_reduce_domain_to_scalar_attr_hdl_)   &
+      ( reduce_domain_to_scalar_hdl, operation )
+
+  END SUBROUTINE xios(get_reduce_domain_to_scalar_attr)
+
+  SUBROUTINE xios(get_reduce_domain_to_scalar_attr_hdl)  &
+    ( reduce_domain_to_scalar_hdl, operation )
+
+    IMPLICIT NONE
+      TYPE(txios(reduce_domain_to_scalar)) , INTENT(IN) :: reduce_domain_to_scalar_hdl
+      CHARACTER(len = *) , OPTIONAL, INTENT(OUT) :: operation
+
+      CALL xios(get_reduce_domain_to_scalar_attr_hdl_)  &
+      ( reduce_domain_to_scalar_hdl, operation )
+
+  END SUBROUTINE xios(get_reduce_domain_to_scalar_attr_hdl)
+
+  SUBROUTINE xios(get_reduce_domain_to_scalar_attr_hdl_)   &
+    ( reduce_domain_to_scalar_hdl, operation_ )
+
+    IMPLICIT NONE
+      TYPE(txios(reduce_domain_to_scalar)) , INTENT(IN) :: reduce_domain_to_scalar_hdl
+      CHARACTER(len = *) , OPTIONAL, INTENT(OUT) :: operation_
+
+      IF (PRESENT(operation_)) THEN
+        CALL cxios_get_reduce_domain_to_scalar_operation &
+      (reduce_domain_to_scalar_hdl%daddr, operation_, len(operation_))
+      ENDIF
+
+  END SUBROUTINE xios(get_reduce_domain_to_scalar_attr_hdl_)
+
+  SUBROUTINE xios(is_defined_reduce_domain_to_scalar_attr)  &
+    ( reduce_domain_to_scalar_id, operation )
+
+    IMPLICIT NONE
+      TYPE(txios(reduce_domain_to_scalar))  :: reduce_domain_to_scalar_hdl
+      CHARACTER(LEN=*), INTENT(IN) ::reduce_domain_to_scalar_id
+      LOGICAL, OPTIONAL, INTENT(OUT) :: operation
+      LOGICAL(KIND=C_BOOL) :: operation_tmp
+
+      CALL xios(get_reduce_domain_to_scalar_handle) &
+      (reduce_domain_to_scalar_id,reduce_domain_to_scalar_hdl)
+      CALL xios(is_defined_reduce_domain_to_scalar_attr_hdl_)   &
+      ( reduce_domain_to_scalar_hdl, operation )
+
+  END SUBROUTINE xios(is_defined_reduce_domain_to_scalar_attr)
+
+  SUBROUTINE xios(is_defined_reduce_domain_to_scalar_attr_hdl)  &
+    ( reduce_domain_to_scalar_hdl, operation )
+
+    IMPLICIT NONE
+      TYPE(txios(reduce_domain_to_scalar)) , INTENT(IN) :: reduce_domain_to_scalar_hdl
+      LOGICAL, OPTIONAL, INTENT(OUT) :: operation
+      LOGICAL(KIND=C_BOOL) :: operation_tmp
+
+      CALL xios(is_defined_reduce_domain_to_scalar_attr_hdl_)  &
+      ( reduce_domain_to_scalar_hdl, operation )
+
+  END SUBROUTINE xios(is_defined_reduce_domain_to_scalar_attr_hdl)
+
+  SUBROUTINE xios(is_defined_reduce_domain_to_scalar_attr_hdl_)   &
+    ( reduce_domain_to_scalar_hdl, operation_ )
+
+    IMPLICIT NONE
+      TYPE(txios(reduce_domain_to_scalar)) , INTENT(IN) :: reduce_domain_to_scalar_hdl
+      LOGICAL, OPTIONAL, INTENT(OUT) :: operation_
+      LOGICAL(KIND=C_BOOL) :: operation__tmp
+
+      IF (PRESENT(operation_)) THEN
+        operation__tmp = cxios_is_defined_reduce_domain_to_scalar_operation &
+      (reduce_domain_to_scalar_hdl%daddr)
+        operation_ = operation__tmp
+      ENDIF
+
+  END SUBROUTINE xios(is_defined_reduce_domain_to_scalar_attr_hdl_)
+
+END MODULE ireduce_domain_to_scalar_attr
Index: /XIOS/trunk/src/interface/fortran_attr/reduce_domain_to_axis_interface_attr.F90
===================================================================
--- /XIOS/trunk/src/interface/fortran_attr/reduce_domain_to_axis_interface_attr.F90	(revision 981)
+++ /XIOS/trunk/src/interface/fortran_attr/reduce_domain_to_axis_interface_attr.F90	(revision 981)
@@ -0,0 +1,55 @@
+! * ************************************************************************** *
+! *               Interface auto generated - do not modify                     *
+! * ************************************************************************** *
+#include "../fortran/xios_fortran_prefix.hpp"
+
+MODULE reduce_domain_to_axis_interface_attr
+  USE, INTRINSIC :: ISO_C_BINDING
+
+  INTERFACE
+    ! Do not call directly / interface FORTRAN 2003 <-> C99
+
+    SUBROUTINE cxios_set_reduce_domain_to_axis_direction(reduce_domain_to_axis_hdl, direction, direction_size) BIND(C)
+      USE ISO_C_BINDING
+      INTEGER (kind = C_INTPTR_T), VALUE :: reduce_domain_to_axis_hdl
+      CHARACTER(kind = C_CHAR)    , DIMENSION(*) :: direction
+      INTEGER  (kind = C_INT)     , VALUE        :: direction_size
+    END SUBROUTINE cxios_set_reduce_domain_to_axis_direction
+
+    SUBROUTINE cxios_get_reduce_domain_to_axis_direction(reduce_domain_to_axis_hdl, direction, direction_size) BIND(C)
+      USE ISO_C_BINDING
+      INTEGER (kind = C_INTPTR_T), VALUE :: reduce_domain_to_axis_hdl
+      CHARACTER(kind = C_CHAR)    , DIMENSION(*) :: direction
+      INTEGER  (kind = C_INT)     , VALUE        :: direction_size
+    END SUBROUTINE cxios_get_reduce_domain_to_axis_direction
+
+    FUNCTION cxios_is_defined_reduce_domain_to_axis_direction(reduce_domain_to_axis_hdl) BIND(C)
+      USE ISO_C_BINDING
+      LOGICAL(kind=C_BOOL) :: cxios_is_defined_reduce_domain_to_axis_direction
+      INTEGER (kind = C_INTPTR_T), VALUE :: reduce_domain_to_axis_hdl
+    END FUNCTION cxios_is_defined_reduce_domain_to_axis_direction
+
+
+    SUBROUTINE cxios_set_reduce_domain_to_axis_operation(reduce_domain_to_axis_hdl, operation, operation_size) BIND(C)
+      USE ISO_C_BINDING
+      INTEGER (kind = C_INTPTR_T), VALUE :: reduce_domain_to_axis_hdl
+      CHARACTER(kind = C_CHAR)    , DIMENSION(*) :: operation
+      INTEGER  (kind = C_INT)     , VALUE        :: operation_size
+    END SUBROUTINE cxios_set_reduce_domain_to_axis_operation
+
+    SUBROUTINE cxios_get_reduce_domain_to_axis_operation(reduce_domain_to_axis_hdl, operation, operation_size) BIND(C)
+      USE ISO_C_BINDING
+      INTEGER (kind = C_INTPTR_T), VALUE :: reduce_domain_to_axis_hdl
+      CHARACTER(kind = C_CHAR)    , DIMENSION(*) :: operation
+      INTEGER  (kind = C_INT)     , VALUE        :: operation_size
+    END SUBROUTINE cxios_get_reduce_domain_to_axis_operation
+
+    FUNCTION cxios_is_defined_reduce_domain_to_axis_operation(reduce_domain_to_axis_hdl) BIND(C)
+      USE ISO_C_BINDING
+      LOGICAL(kind=C_BOOL) :: cxios_is_defined_reduce_domain_to_axis_operation
+      INTEGER (kind = C_INTPTR_T), VALUE :: reduce_domain_to_axis_hdl
+    END FUNCTION cxios_is_defined_reduce_domain_to_axis_operation
+
+  END INTERFACE
+
+END MODULE reduce_domain_to_axis_interface_attr
Index: /XIOS/trunk/src/interface/fortran_attr/reduce_domain_to_scalar_interface_attr.F90
===================================================================
--- /XIOS/trunk/src/interface/fortran_attr/reduce_domain_to_scalar_interface_attr.F90	(revision 981)
+++ /XIOS/trunk/src/interface/fortran_attr/reduce_domain_to_scalar_interface_attr.F90	(revision 981)
@@ -0,0 +1,34 @@
+! * ************************************************************************** *
+! *               Interface auto generated - do not modify                     *
+! * ************************************************************************** *
+#include "../fortran/xios_fortran_prefix.hpp"
+
+MODULE reduce_domain_to_scalar_interface_attr
+  USE, INTRINSIC :: ISO_C_BINDING
+
+  INTERFACE
+    ! Do not call directly / interface FORTRAN 2003 <-> C99
+
+    SUBROUTINE cxios_set_reduce_domain_to_scalar_operation(reduce_domain_to_scalar_hdl, operation, operation_size) BIND(C)
+      USE ISO_C_BINDING
+      INTEGER (kind = C_INTPTR_T), VALUE :: reduce_domain_to_scalar_hdl
+      CHARACTER(kind = C_CHAR)    , DIMENSION(*) :: operation
+      INTEGER  (kind = C_INT)     , VALUE        :: operation_size
+    END SUBROUTINE cxios_set_reduce_domain_to_scalar_operation
+
+    SUBROUTINE cxios_get_reduce_domain_to_scalar_operation(reduce_domain_to_scalar_hdl, operation, operation_size) BIND(C)
+      USE ISO_C_BINDING
+      INTEGER (kind = C_INTPTR_T), VALUE :: reduce_domain_to_scalar_hdl
+      CHARACTER(kind = C_CHAR)    , DIMENSION(*) :: operation
+      INTEGER  (kind = C_INT)     , VALUE        :: operation_size
+    END SUBROUTINE cxios_get_reduce_domain_to_scalar_operation
+
+    FUNCTION cxios_is_defined_reduce_domain_to_scalar_operation(reduce_domain_to_scalar_hdl) BIND(C)
+      USE ISO_C_BINDING
+      LOGICAL(kind=C_BOOL) :: cxios_is_defined_reduce_domain_to_scalar_operation
+      INTEGER (kind = C_INTPTR_T), VALUE :: reduce_domain_to_scalar_hdl
+    END FUNCTION cxios_is_defined_reduce_domain_to_scalar_operation
+
+  END INTERFACE
+
+END MODULE reduce_domain_to_scalar_interface_attr
