Index: /XIOS/trunk/src/node/axis.cpp
===================================================================
--- /XIOS/trunk/src/node/axis.cpp	(revision 926)
+++ /XIOS/trunk/src/node/axis.cpp	(revision 927)
@@ -24,4 +24,5 @@
       : CObjectTemplate<CAxis>()
       , CAxisAttributes(), isChecked(false), relFiles(), areClientAttributesChecked_(false)
+      , isClientAfterTransformationChecked(false)
       , isDistributed_(false), hasBounds_(false), isCompressible_(false)
       , numberWrittenIndexes_(0), totalNumberWrittenIndexes_(0), offsetWrittenIndexes_(0)
@@ -33,4 +34,5 @@
       : CObjectTemplate<CAxis>(id)
       , CAxisAttributes(), isChecked(false), relFiles(), areClientAttributesChecked_(false)
+      , isClientAfterTransformationChecked(false)
       , isDistributed_(false), hasBounds_(false), isCompressible_(false)
       , numberWrittenIndexes_(0), totalNumberWrittenIndexes_(0), offsetWrittenIndexes_(0)
@@ -362,4 +364,18 @@
    }
 
+   void CAxis::checkAttributesOnClientAfterTransformation(const std::vector<int>& globalDim, int orderPositionInGrid,
+                                                          CServerDistributionDescription::ServerDistributionType distType)
+   {
+     CContext* context=CContext::getCurrent() ;
+
+     if (this->isClientAfterTransformationChecked) return;
+     if (context->hasClient)
+     {
+       if (n.getValue() != n_glo.getValue()) computeConnectedServer(globalDim, orderPositionInGrid, distType);
+     }
+
+     this->isClientAfterTransformationChecked = true;
+   }
+
    // Send all checked attributes to server
    void CAxis::sendCheckedAttributes(const std::vector<int>& globalDim, int orderPositionInGrid,
@@ -367,4 +383,5 @@
    {
      if (!this->areClientAttributesChecked_) checkAttributesOnClient();
+     if (!this->isClientAfterTransformationChecked) checkAttributesOnClientAfterTransformation(globalDim, orderPositionInGrid, distType);
      CContext* context = CContext::getCurrent();
 
@@ -373,5 +390,5 @@
      {
        sendServerAttribut(globalDim, orderPositionInGrid, distType);
-       if (hasValue) sendValue(globalDim, orderPositionInGrid, distType);
+       if (hasValue) sendValue();
      }
 
@@ -379,16 +396,10 @@
    }
 
-  void CAxis::sendValue(const std::vector<int>& globalDim, int orderPositionInGrid,
-                        CServerDistributionDescription::ServerDistributionType distType)
+  void CAxis::sendValue()
   {
      if (n.getValue() == n_glo.getValue())
-     {
        sendNonDistributedValue();
-     }
      else
-     {
-       computeConnectedServer(globalDim, orderPositionInGrid, distType);
        sendDistributedValue();
-     }
   }
 
Index: /XIOS/trunk/src/node/axis.hpp
===================================================================
--- /XIOS/trunk/src/node/axis.hpp	(revision 926)
+++ /XIOS/trunk/src/node/axis.hpp	(revision 927)
@@ -104,4 +104,6 @@
          void recvServerAttribut(CBufferIn& buffer) ;
          void checkAttributesOnClient();
+         void checkAttributesOnClientAfterTransformation(const std::vector<int>& globalDim, int orderPositionInGrid,
+                                                         CServerDistributionDescription::ServerDistributionType distType = CServerDistributionDescription::BAND_DISTRIBUTION);
          void sendCheckedAttributes(const std::vector<int>& globalDim, int orderPositionInGrid,
                                     CServerDistributionDescription::ServerDistributionType disType = CServerDistributionDescription::BAND_DISTRIBUTION);
@@ -129,8 +131,5 @@
          void checkBounds();
          void checkTransformations();
-         void computeServerIndex(const std::vector<int>& globalDim, int orderPositionInGrid,
-                                 CServerDistributionDescription::ServerDistributionType disType);
-         void sendValue(const std::vector<int>& globalDim, int orderPositionInGrid,
-                        CServerDistributionDescription::ServerDistributionType distType);
+         void sendValue();
          void computeConnectedServer(const std::vector<int>& globalDim, int orderPositionInGrid,
                                      CServerDistributionDescription::ServerDistributionType distType);
@@ -150,4 +149,5 @@
          bool isChecked;
          bool areClientAttributesChecked_;
+         bool isClientAfterTransformationChecked;
          std::set<StdString> relFiles, relFilesCompressed;
          TransMapTypes transformationMap_;
Index: /XIOS/trunk/src/node/grid.cpp
===================================================================
--- /XIOS/trunk/src/node/grid.cpp	(revision 926)
+++ /XIOS/trunk/src/node/grid.cpp	(revision 927)
@@ -166,13 +166,36 @@
    void CGrid::checkAttributesAfterTransformation()
    {
-     setDomainList();
-     std::vector<CDomain*> domListP = this->getDomains();
-     if (!domListP.empty())
-     {
-       for (int i = 0; i < domListP.size(); ++i)
-       {
-         domListP[i]->checkAttributesOnClientAfterTransformation();
-       }
-     }
+      setAxisList();
+      std::vector<CAxis*> axisListP = this->getAxis();
+      if (!axisListP.empty())
+      {
+        int idx = 0;
+        axisPositionInGrid_.resize(0);
+        for (int i = 0; i < axis_domain_order.numElements(); ++i)
+        {
+          int elementDimension = axis_domain_order(i);
+          if (1 == elementDimension)
+          {
+            axisPositionInGrid_.push_back(idx);
+            ++idx;
+          }
+          else if (2 == elementDimension) idx += 2;
+        }
+
+        for (int i = 0; i < axisListP.size(); ++i)
+        {
+          axisListP[i]->checkAttributesOnClientAfterTransformation(globalDim_,axisPositionInGrid_[i]);
+        }
+      }
+
+      setDomainList();
+      std::vector<CDomain*> domListP = this->getDomains();
+      if (!domListP.empty())
+      {
+        for (int i = 0; i < domListP.size(); ++i)
+        {
+          domListP[i]->checkAttributesOnClientAfterTransformation();
+        }
+      }
    }
 
