Index: XIOS/dev/dev_trunk_graph/src/context_server.cpp
===================================================================
--- XIOS/dev/dev_trunk_graph/src/context_server.cpp	(revision 2026)
+++ XIOS/dev/dev_trunk_graph/src/context_server.cpp	(revision 2027)
@@ -52,8 +52,8 @@
     CXios::getContextsManager()->getContextInfo(context->getId(), contextInfo, intraComm) ;
 
-    if (contextInfo.serviceType != CServicesManager::CLIENT) // we must have an event scheduler => to be retrieve from the associated services
-    {
+    //if (contextInfo.serviceType != CServicesManager::CLIENT) // we must have an event scheduler => to be retrieve from the associated services
+    //{
       if (!isAttachedModeEnabled()) eventScheduler_=CXios::getPoolRessource()->getService(contextInfo.serviceId,contextInfo.partitionId)->getEventScheduler() ;
-    }
+    //}
 
 
@@ -323,4 +323,5 @@
         else if (!eventScheduler_ || eventScheduler_->queryEvent(currentTimeLine,hashId) )
         {
+          MPI_Barrier(intraComm) ;
          // When using attached mode, synchronise the processes to avoid that differents event be scheduled by differents processes
          // The best way to properly solve this problem will be to use the event scheduler also in attached mode
@@ -332,4 +333,5 @@
          isProcessingEvent_=true ;
          CTimer::get("Process events").resume();
+         info(100)<<"Received Event "<<currentTimeLine<<" of class "<<event->classId<<" of type "<<event->type<<endl ;
          dispatchEvent(*event);
          CTimer::get("Process events").suspend();
Index: XIOS/dev/dev_trunk_graph/src/event_scheduler.cpp
===================================================================
--- XIOS/dev/dev_trunk_graph/src/event_scheduler.cpp	(revision 2026)
+++ XIOS/dev/dev_trunk_graph/src/event_scheduler.cpp	(revision 2027)
@@ -76,4 +76,5 @@
   {
     registerEvent(timeLine, contextHashId, level) ;
+    checkEvent() ;
   }
   
@@ -94,5 +95,5 @@
   bool CEventScheduler::queryEvent(const size_t timeLine, const size_t contextHashId)
   {
-
+    checkEvent() ;
     if (! eventStack.empty() && eventStack.front().first==timeLine && eventStack.front().second==contextHashId)
     {
Index: XIOS/dev/dev_trunk_graph/src/filter/client_from_client_source_filter.cpp
===================================================================
--- XIOS/dev/dev_trunk_graph/src/filter/client_from_client_source_filter.cpp	(revision 2026)
+++ XIOS/dev/dev_trunk_graph/src/filter/client_from_client_source_filter.cpp	(revision 2027)
@@ -35,6 +35,7 @@
     CDataPacketPtr packet(new CDataPacket);
     packet->date = date;
+    packet->status = CDataPacket::NO_ERROR;
+    for (auto& subEvent : event.subEvents) (*subEvent.buffer) >> packet->timestamp  ; // better management of time lien later...
     packet->timestamp = date;
-    packet->status = CDataPacket::NO_ERROR;
 
     grid_->getClientFromClientConnector()->transfer(event,packet->data) ;
Index: XIOS/dev/dev_trunk_graph/src/filter/client_to_server_store_filter.cpp
===================================================================
--- XIOS/dev/dev_trunk_graph/src/filter/client_to_server_store_filter.cpp	(revision 2026)
+++ XIOS/dev/dev_trunk_graph/src/filter/client_to_server_store_filter.cpp	(revision 2027)
@@ -16,5 +16,5 @@
   {
     if (!field)
-      ERROR("CFileWriterFilter::CFileWriterFilter(CField* field)",
+      ERROR("CClientToServerStoreFilter::CClientToServerStoreFilter(CGarbageCollector& gc, CField* field, CContextClient* client)",
             "The field cannot be null.");
   }
@@ -45,5 +45,4 @@
       CWorkflowGraph::addEdge(data[0]->graphPackage->fromFilter, this->graphPackage->filterId, data[0]);
       // flux can be redirected to other filters. So don't change the 'from' parameter
-      //data[0]->graphPackage->fromFilter = this->graphPackage->filterId;
       data[0]->graphPackage->currentField = this->graphPackage->inFields[0];
     }
Index: XIOS/dev/dev_trunk_graph/src/node/axis.cpp
===================================================================
--- XIOS/dev/dev_trunk_graph/src/node/axis.cpp	(revision 2026)
+++ XIOS/dev/dev_trunk_graph/src/node/axis.cpp	(revision 2027)
@@ -451,8 +451,13 @@
 
     }
+  
+  string CAxis::getCouplingAlias(const string& fieldId, int posInGrid)
+  {
+    return "_axis["+std::to_string(posInGrid)+"]_of_"+fieldId ;
+  }
 
   void CAxis::makeAliasForCoupling(const string& fieldId, int posInGrid)
   {
-    const string axisId = "_axis["+std::to_string(posInGrid)+"]_of_"+fieldId ;
+    const string axisId = getCouplingAlias(fieldId,posInGrid)  ;
     this->createAlias(axisId) ;
   }
Index: XIOS/dev/dev_trunk_graph/src/node/axis.hpp
===================================================================
--- XIOS/dev/dev_trunk_graph/src/node/axis.hpp	(revision 2026)
+++ XIOS/dev/dev_trunk_graph/src/node/axis.hpp	(revision 2027)
@@ -175,4 +175,5 @@
       public:
          void makeAliasForCoupling(const string& fieldId, int posInGrid) ;
+         string getCouplingAlias(const string& fieldId, int posInGrid) ;
 
 
Index: XIOS/dev/dev_trunk_graph/src/node/context.cpp
===================================================================
--- XIOS/dev/dev_trunk_graph/src/node/context.cpp	(revision 2026)
+++ XIOS/dev/dev_trunk_graph/src/node/context.cpp	(revision 2027)
@@ -26,6 +26,13 @@
 #include "coupler_in.hpp"
 #include "coupler_out.hpp"
-
-namespace xios {
+#include "servers_ressource.hpp"
+#include "pool_ressource.hpp"
+#include "services.hpp"
+#include "contexts_manager.hpp"
+#include <chrono>
+#include <random>
+
+namespace xios
+{
 
   std::shared_ptr<CContextGroup> CContext::root;
@@ -66,5 +73,19 @@
 
    //----------------------------------------------------------------
-
+   void CContext::initEventScheduler(void)
+   {
+     SRegisterContextInfo contextInfo ;
+     CXios::getContextsManager()->getContextInfo(this->getId(), contextInfo, getIntraComm()) ;
+
+     eventScheduler_=CXios::getPoolRessource()->getService(contextInfo.serviceId,contextInfo.partitionId)->getEventScheduler() ;
+ 
+     // generate unique hash for server
+     auto time=chrono::system_clock::now().time_since_epoch().count() ;
+     std::default_random_engine rd(time); // not reproducible from a run to another
+     std::uniform_int_distribution<size_t> dist;
+     hashId_=dist(rd) ;
+     MPI_Bcast(&hashId_,1,MPI_SIZE_T,0,getIntraComm()) ; // Bcast to all server of the context
+   }
+ 
    /*!
    \brief Get context group (context root)
@@ -497,4 +518,5 @@
      else
        initServer(intraComm, serviceType) ;
+     initEventScheduler() ;
     }
     CATCH_DUMP_ATTR
@@ -695,31 +717,42 @@
 
    
-
   bool CContext::eventLoop(bool enableEventsProcessing)
   {
     bool finished=true; 
-
-    if (client!=nullptr && !finalized) client->checkBuffers();
+    bool out; 
+    size_t timeLine=timeLine_ ;
+    if (serviceType_==CServicesManager::CLIENT)
+    {
+      timeLine_++ ;
+      eventScheduler_->registerEvent(timeLine, hashId_) ;
+    }
+
+    do
+    { 
+      if (client!=nullptr && !finalized) client->checkBuffers();
     
-    for (int i = 0; i < clientPrimServer.size(); ++i)
-    {
-      if (!finalized) clientPrimServer[i]->checkBuffers();
-      if (!finalized) finished &= serverPrimServer[i]->eventLoop(enableEventsProcessing);
-    }
-
-    for (auto couplerOut : couplerOutClient_)
-      if (!finalized) couplerOut.second->checkBuffers();
+      for (int i = 0; i < clientPrimServer.size(); ++i)
+      {
+        if (!finalized) clientPrimServer[i]->checkBuffers();
+        if (!finalized) finished &= serverPrimServer[i]->eventLoop(enableEventsProcessing);
+      }
+
+      for (auto couplerOut : couplerOutClient_)
+        if (!finalized) couplerOut.second->checkBuffers();
     
-    for (auto couplerIn : couplerInClient_)
-      if (!finalized) couplerIn.second->checkBuffers();
+      for (auto couplerIn : couplerInClient_)
+        if (!finalized) couplerIn.second->checkBuffers();
     
-    for (auto couplerOut : couplerOutServer_)
-      if (!finalized) couplerOut.second->eventLoop(enableEventsProcessing);
-
-    for (auto couplerIn : couplerInServer_)
-      if (!finalized) couplerIn.second->eventLoop(enableEventsProcessing);
+      for (auto couplerOut : couplerOutServer_)
+        if (!finalized) couplerOut.second->eventLoop(enableEventsProcessing);
+
+      for (auto couplerIn : couplerInServer_)
+        if (!finalized) couplerIn.second->eventLoop(enableEventsProcessing);
     
-    if (server!=nullptr) if (!finalized) finished &= server->eventLoop(enableEventsProcessing);
+      if (server!=nullptr) if (!finalized) finished &= server->eventLoop(enableEventsProcessing);
   
+      if (serviceType_==CServicesManager::CLIENT) out = eventScheduler_->queryEvent(timeLine,hashId_) ;
+      else out=true ;
+    }  while(!out) ;
     return finalized && finished ;
   }
@@ -1024,5 +1057,5 @@
           couplersReady &= ready ;
         }
-        if (!couplersReady) this->eventLoop() ;
+        this->eventLoop() ;
       } while (!couplersReady) ;
 
Index: XIOS/dev/dev_trunk_graph/src/node/context.hpp
===================================================================
--- XIOS/dev/dev_trunk_graph/src/node/context.hpp	(revision 2026)
+++ XIOS/dev/dev_trunk_graph/src/node/context.hpp	(revision 2027)
@@ -14,7 +14,8 @@
 #include "services_manager.hpp"
 #include "server_context.hpp"
-
-
-namespace xios {
+#include "event_scheduler.hpp"
+
+namespace xios
+{
    class CContextClient;
    class CContextServer;
@@ -339,4 +340,9 @@
         
       private:
+         CEventScheduler* eventScheduler_ ; //! The local event scheduler for context
+         size_t hashId_ ; //! the local hashId for scheduler
+         size_t timeLine_=0 ;
+         void initEventScheduler(void) ;
+
          bool isPostProcessed;
          bool allProcessed;
Index: XIOS/dev/dev_trunk_graph/src/node/domain.cpp
===================================================================
--- XIOS/dev/dev_trunk_graph/src/node/domain.cpp	(revision 2026)
+++ XIOS/dev/dev_trunk_graph/src/node/domain.cpp	(revision 2027)
@@ -1780,5 +1780,8 @@
    }
 
-
+  string CDomain::getCouplingAlias(const string& fieldId, int posInGrid)
+  {
+    return "_domain["+std::to_string(posInGrid)+"]_of_"+fieldId ;
+  }
    
   /* to be removed later when coupling will be reimplemented, just to  not forget */
@@ -1788,5 +1791,5 @@
     else sendDomainToFileServer_done_.insert(client) ;
     
-    const string domainId = "_domain["+std::to_string(posInGrid)+"]_of_"+fieldId ;
+    const string domainId = getCouplingAlias(fieldId, posInGrid) ;
     
     if (!domain_ref.isEmpty())
@@ -1805,5 +1808,5 @@
   void CDomain::makeAliasForCoupling(const string& fieldId, int posInGrid)
   {
-    const string domainId = "_domain["+std::to_string(posInGrid)+"]_of_"+fieldId ;
+     const string domainId = getCouplingAlias(fieldId, posInGrid);
     this->createAlias(domainId) ;
   }
Index: XIOS/dev/dev_trunk_graph/src/node/domain.hpp
===================================================================
--- XIOS/dev/dev_trunk_graph/src/node/domain.hpp	(revision 2026)
+++ XIOS/dev/dev_trunk_graph/src/node/domain.hpp	(revision 2027)
@@ -240,4 +240,5 @@
        public:
         void makeAliasForCoupling(const string& fieldId, int posInGrid) ;
+        string getCouplingAlias(const string& fieldId, int posInGrid) ;
 
        private:
Index: XIOS/dev/dev_trunk_graph/src/node/field.cpp
===================================================================
--- XIOS/dev/dev_trunk_graph/src/node/field.cpp	(revision 2026)
+++ XIOS/dev/dev_trunk_graph/src/node/field.cpp	(revision 2027)
@@ -1308,5 +1308,6 @@
     if (sendFieldToCouplerOut_done_) return ;
     else sendFieldToCouplerOut_done_=true ;
-    grid_->sendGridToCouplerOut(client, this->getId());
+    sentGrid_ = grid_-> duplicateSentGrid() ;
+    sentGrid_->sendGridToCouplerOut(client, this->getId());
     this->sendGridCompleted();
 
@@ -1355,4 +1356,15 @@
 
 
+   bool CField::isGridCompleted(void)
+   TRY
+   { 
+     bool isFullCompleted ;
+     MPI_Allreduce(&isGridCompleted_,&isFullCompleted,1,MPI_C_BOOL, MPI_LAND, CContext::getCurrent()->getIntraComm() ) ;
+     if ( (isGridCompleted_==false && isFullCompleted==true) ) ERROR("bool CField::isGridCompleted(void)",<< "incoherecy in MPI_AllReduce") ;
+     return isFullCompleted ; 
+   }
+   CATCH_DUMP_ATTR
+
+
   void CField::sendAddAllVariables(CContextClient* client)
   TRY
Index: XIOS/dev/dev_trunk_graph/src/node/field.hpp
===================================================================
--- XIOS/dev/dev_trunk_graph/src/node/field.hpp	(revision 2026)
+++ XIOS/dev/dev_trunk_graph/src/node/field.hpp	(revision 2027)
@@ -236,5 +236,5 @@
           bool isGridCompleted_ = true ;
       public:
-          bool isGridCompleted() { return isGridCompleted_ ;} 
+          bool isGridCompleted() { } 
           void setGridCompleted(void) { isGridCompleted_= true; }
           void unsetGridCompleted(void) { isGridCompleted_ = false ;}
Index: XIOS/dev/dev_trunk_graph/src/node/grid.cpp
===================================================================
--- XIOS/dev/dev_trunk_graph/src/node/grid.cpp	(revision 2026)
+++ XIOS/dev/dev_trunk_graph/src/node/grid.cpp	(revision 2027)
@@ -1207,11 +1207,19 @@
     gridPtr->sendCreateChild(this->getId(),client);
     this->sendAllAttributesToServer(client);
-    distributeGridToFileServer(client) ;
-  }
-
-
-  void CGrid::distributeGridToFileServer(CContextClient* client)
+    distributeGridToServer(client) ;
+  }
+
+  void CGrid::sendGridToCouplerOut(CContextClient* client, const string& fieldId)
+  {
+    if (sendGridToCouplerOut_done_.count(client)!=0) return ;
+    else sendGridToCouplerOut_done_.insert(client) ;
+    this->sendAllAttributesToServer(client, getCouplingAlias(fieldId));
+    distributeGridToServer(client,fieldId) ;
+  }
+
+  void CGrid::distributeGridToServer(CContextClient* client, const string& fieldId)
   {
     CContext* context = CContext::getCurrent();
+    bool isCoupling = !fieldId.empty() ;
     // simple Distribution for now 
     // distribute over the fisrt element except if it is a scalar
@@ -1261,14 +1269,22 @@
       if (elements[i].type==TYPE_DOMAIN) 
       { 
-         CDomain* domain = (CDomain*) elements[i].ptr ;
-         sendAddDomain(domain->getId(),client) ;
-         domain->distributeToServer(client, gridRemoteConnector.getDistributedGlobalIndex(i), scattererConnector) ;
-         scattererConnectors.push_back(scattererConnector) ;
+        CDomain* domain = (CDomain*) elements[i].ptr ;
+        if (isCoupling) domain->distributeToServer(client, gridRemoteConnector.getDistributedGlobalIndex(i), scattererConnector,  domain->getCouplingAlias(fieldId,i)) ;
+        else 
+        {
+          sendAddDomain(domain->getId(),client) ;
+          domain->distributeToServer(client, gridRemoteConnector.getDistributedGlobalIndex(i), scattererConnector) ;
+        }
+        scattererConnectors.push_back(scattererConnector) ;
       }
       else if (elements[i].type==TYPE_AXIS)
       {
         CAxis* axis = (CAxis*) elements[i].ptr ;
-        sendAddAxis(axis->getId(),client) ;
-        axis->distributeToServer(client, gridRemoteConnector.getDistributedGlobalIndex(i), scattererConnector) ;
+        if (isCoupling) axis->distributeToServer(client, gridRemoteConnector.getDistributedGlobalIndex(i), scattererConnector,  axis->getCouplingAlias(fieldId,i)) ;
+        else 
+        {
+          sendAddAxis(axis->getId(),client) ;
+          axis->distributeToServer(client, gridRemoteConnector.getDistributedGlobalIndex(i), scattererConnector) ;
+        }
         scattererConnectors.push_back(scattererConnector) ;
       }
@@ -1276,6 +1292,10 @@
       {
         CScalar* scalar = (CScalar*) elements[i].ptr ;
-        sendAddScalar(scalar->getId(),client) ;
-        scalar->distributeToServer(client, gridRemoteConnector.getDistributedGlobalIndex(i), scattererConnector) ;
+        if (isCoupling) scalar->distributeToServer(client, gridRemoteConnector.getDistributedGlobalIndex(i), scattererConnector,  scalar->getCouplingAlias(fieldId,i)) ;
+        else 
+        {
+          sendAddScalar(scalar->getId(),client) ;
+          scalar->distributeToServer(client, gridRemoteConnector.getDistributedGlobalIndex(i), scattererConnector) ;
+        }
         scattererConnectors.push_back(scattererConnector) ;
       }
@@ -1291,5 +1311,6 @@
     CEventClient event(getType(), EVENT_ID_SEND_MASK);
     CMessage message ;
-    message<<getId() ; 
+    if (isCoupling) message<<getCouplingAlias(fieldId) ;
+    else message<<getId() ;
     gridScattererConnector.transfer(maskOut, client, event, message) ;
     for(auto& it : scattererConnectors) delete it ;
@@ -1374,94 +1395,22 @@
 
 
-  void CGrid::sendGridToCouplerOut(CContextClient* client, const string& fieldId)
-  {
-/*    if (sendGridToCouplerOut_done_.count(client)!=0) return ;
-    else sendGridToCouplerOut_done_.insert(client) ;
- 
-    CContext* context = CContext::getCurrent();
-    // simple Distribution for now 
-    // distribute over the fisrt element except if it is a scalar
+  string CGrid::getCouplingAlias(const string& fieldId)
+  {
+    return "_grid_of_"+fieldId;
+  }
+
+
+  void CGrid::makeAliasForCoupling(const string& fieldId)
+  {
+    string gridId=getCouplingAlias(fieldId) ;
+    createAlias(gridId) ;
+
     auto& elements = getElements() ;
-    int posDistributed = 0 ;
-    for(auto& element : elements)
-    {
-      if (element.type==TYPE_DOMAIN) break ;
-      else if (element.type==TYPE_AXIS) break ;
-      else if (element.type==TYPE_SCALAR) posDistributed++ ;
-    }
-    
-    vector<CLocalView*> localViews ;
-    vector<CDistributedView*> remoteViews ;
-
     for(int i=0 ; i<elements.size() ; i++)
     {
-      if (elements[i].type==TYPE_DOMAIN) 
-      { 
-         CDomain* domain = (CDomain*) elements[i].ptr ;
-         domain->computeRemoteElement(client, posDistributed==i ? EDistributionType::BANDS : EDistributionType::NONE) ;
-         remoteViews.push_back(domain->getRemoteElement(client)->getView(CElementView::FULL)) ;
-         localViews.push_back(domain->getLocalView(CElementView::FULL)) ;
-      }
-      else if (elements[i].type==TYPE_AXIS)
-      {
-        CAxis* axis = (CAxis*) elements[i].ptr ;
-        axis->computeRemoteElement(client, posDistributed==i ? EDistributionType::BANDS : EDistributionType::NONE) ;
-        remoteViews.push_back(axis->getRemoteElement(client)->getView(CElementView::FULL)) ;
-        localViews.push_back(axis->getLocalView(CElementView::FULL)) ;
-      }
-      else if (elements[i].type==TYPE_SCALAR)
-      {
-        CScalar* scalar = (CScalar*) elements[i].ptr ;
-        scalar->computeRemoteElement(client, posDistributed==i ? EDistributionType::BANDS : EDistributionType::NONE) ;
-        remoteViews.push_back(scalar->getRemoteElement(client)->getView(CElementView::FULL)) ;
-        localViews.push_back(scalar->getLocalView(CElementView::FULL)) ;
-      }
-    }
-    CGridRemoteConnector gridRemoteConnector(localViews, remoteViews, context->getIntraComm(), client->getRemoteSize()) ;
-    gridRemoteConnector.computeConnector() ;
-    
-    vector<CScattererConnector*> clientToClientConnectors ;
-    for(int i=0 ; i<elements.size() ; i++)
-    {
-      if (elements[i].type==TYPE_DOMAIN) 
-      { 
-         CDomain* domain = (CDomain*) elements[i].ptr ;
-         sendAddDomain(domain->getId(),client) ;
-         domain->distributeToServer(client, gridRemoteConnector.getDistributedGlobalIndex(i)) ;
-         clientToClientConnectors.push_back(domain->getClientToServerConnector(client)) ;
-      }
-      else if (elements[i].type==TYPE_AXIS)
-      {
-        CAxis* axis = (CAxis*) elements[i].ptr ;
-        sendAddAxis(axis->getId(),client) ;
-        axis->distributeToServer(client, gridRemoteConnector.getDistributedGlobalIndex(i)) ;
-        clientToClientConnectors.push_back(axis->getClientToServerConnector(client)) ;
-      }
-      else if (elements[i].type==TYPE_SCALAR)
-      {
-        CScalar* scalar = (CScalar*) elements[i].ptr ;
-        sendAddScalar(scalar->getId(),client) ;
-        scalar->distributeToServer(client, gridRemoteConnector.getDistributedGlobalIndex(i)) ;
-        clientToClientConnectors.push_back(scalar->getClientToServerConnector(client)) ;
-      }
-    }
-    
-    // compute the grid clientToServerConnector to send flux from client to servers
-    clientToClientConnector_[client] = new CGridScattererConnector(clientToClientConnectors) ;*/
-  }
-
-  void CGrid::makeAliasForCoupling(const string& fieldId)
-  {
-    string gridId="_grid_of_"+fieldId ;
-    createAlias(gridId) ;
-    
-    const auto& domVect = getDomains() ;
-    for (int pos=0; pos<domVect.size();pos++) domVect[pos]->makeAliasForCoupling(fieldId, pos);
-
-    const auto& axisVect=getAxis() ;
-    for (int pos=0; pos<axisVect.size();pos++) axisVect[pos]->makeAliasForCoupling(fieldId, pos);
-
-    const auto& scalVect=getScalars() ;
-    for (int pos=0; pos<scalVect.size();pos++) scalVect[pos]->makeAliasForCoupling(fieldId, pos);
+      if (elements[i].type==TYPE_DOMAIN) elements[i].domain->makeAliasForCoupling(fieldId, i);
+      else if (elements[i].type==TYPE_AXIS) elements[i].axis->makeAliasForCoupling(fieldId, i);
+      else if (elements[i].type==TYPE_SCALAR) elements[i].scalar->makeAliasForCoupling(fieldId, i);
+    }
   }
 
Index: XIOS/dev/dev_trunk_graph/src/node/grid.hpp
===================================================================
--- XIOS/dev/dev_trunk_graph/src/node/grid.hpp	(revision 2026)
+++ XIOS/dev/dev_trunk_graph/src/node/grid.hpp	(revision 2027)
@@ -174,4 +174,5 @@
       public:
          void makeAliasForCoupling(const string& fieldId) ;
+         string getCouplingAlias(const string& fieldId) ;
 
       public:
@@ -341,5 +342,5 @@
 
       public: //? 
-        void distributeGridToFileServer(CContextClient* client);
+        void distributeGridToServer(CContextClient* client, const string& fieldId="");
       
             
Index: XIOS/dev/dev_trunk_graph/src/node/scalar.cpp
===================================================================
--- XIOS/dev/dev_trunk_graph/src/node/scalar.cpp	(revision 2026)
+++ XIOS/dev/dev_trunk_graph/src/node/scalar.cpp	(revision 2027)
@@ -197,12 +197,17 @@
     else sendScalarToCouplerOut_done_.insert(client) ;
 
-    string scalarId="_scalar["+std::to_string(posInGrid)+"]_of_"+fieldId ;
+    string scalarId = getCouplingAlias(fieldId, posInGrid) ;
 
     this->sendAllAttributesToServer(client, scalarId);
   }  
+  
+  string CScalar::getCouplingAlias(const string& fieldId, int posInGrid)
+  {
+    return "_scalar["+std::to_string(posInGrid)+"]_of_"+fieldId ;
+  }
 
   void CScalar::makeAliasForCoupling(const string& fieldId, int posInGrid)
   {
-    const string scalarId = "_scalar["+std::to_string(posInGrid)+"]_of_"+fieldId ;
+    const string scalarId = getCouplingAlias(fieldId, posInGrid) ;
     this->createAlias(scalarId) ;
   }
Index: XIOS/dev/dev_trunk_graph/src/node/scalar.hpp
===================================================================
--- XIOS/dev/dev_trunk_graph/src/node/scalar.hpp	(revision 2026)
+++ XIOS/dev/dev_trunk_graph/src/node/scalar.hpp	(revision 2027)
@@ -94,4 +94,5 @@
     public:
       void makeAliasForCoupling(const string& fieldId, int posInGrid) ;
+      string getCouplingAlias(const string& fieldId, int posInGrid) ;
 
       ////////////////////////////////
Index: XIOS/dev/dev_trunk_graph/src/test/generic_testcase.f90
===================================================================
--- XIOS/dev/dev_trunk_graph/src/test/generic_testcase.f90	(revision 2026)
+++ XIOS/dev/dev_trunk_graph/src/test/generic_testcase.f90	(revision 2027)
@@ -368,5 +368,5 @@
     pressure=1e20
     DO j=0,z-1
-      pressure(:,j)=axis_value(j) ;
+      pressure(:,j)=axis_value(j)*100000 ; ! Pa 
       DO i=0,xy-1
         IF (domain_index(i)/=-1) THEN
@@ -576,7 +576,7 @@
     ENDDO
          
-    pressure=1e20
+    other_pressure=1e20
     DO j=0,z-1
-      pressure(:,j)=axis_value(j) ;
+      other_pressure(:,j)=axis_value(j)*100000 ; ! Pa
       DO i=0,xy-1
         IF (domain_index(i)/=-1) THEN
Index: XIOS/dev/dev_trunk_graph/src/transformation/algo_types.hpp
===================================================================
--- XIOS/dev/dev_trunk_graph/src/transformation/algo_types.hpp	(revision 2026)
+++ XIOS/dev/dev_trunk_graph/src/transformation/algo_types.hpp	(revision 2027)
@@ -22,5 +22,4 @@
 #include "axis_algorithm_reduce_domain.hpp"
 #include "axis_algorithm_reduce_axis.hpp"
-//#include "axis_algorithm_transformation.hpp"
 #include "axis_algorithm_extract_domain.hpp"
 #include "axis_algorithm_temporal_splitting.hpp"
Index: XIOS/dev/dev_trunk_graph/src/transformation/generic_algorithm_transformation.hpp
===================================================================
--- XIOS/dev/dev_trunk_graph/src/transformation/generic_algorithm_transformation.hpp	(revision 2026)
+++ XIOS/dev/dev_trunk_graph/src/transformation/generic_algorithm_transformation.hpp	(revision 2027)
@@ -41,5 +41,4 @@
     virtual void apply(int dimBefore, int dimAfter, const CArray<double,1>& dataIn, const vector<CArray<double,1>>& auxData, CArray<double,1>& dataOut) { abort() ;} //=0
     virtual bool isGenerateTransformation(void) { return false ;}
-    
     virtual StdString getAlgoName() { return "\\nGeneric algorithm transformation";}
 
