Index: /XIOS/trunk/src/buffer_client.cpp
===================================================================
--- /XIOS/trunk/src/buffer_client.cpp	(revision 517)
+++ /XIOS/trunk/src/buffer_client.cpp	(revision 518)
@@ -19,5 +19,5 @@
     interComm=interComm_ ;
     serverRank=serverRank_ ;
-    bufferSize=bufferSizeByServer/2; //2 ;
+    bufferSize=bufferSizeByServer; //2 ;
     buffer[0]=new char[bufferSize] ; // transform it with MPI_ALLOC_MEM later
     buffer[1]=new char[bufferSize] ;
Index: /XIOS/trunk/src/buffer_server.cpp
===================================================================
--- /XIOS/trunk/src/buffer_server.cpp	(revision 517)
+++ /XIOS/trunk/src/buffer_server.cpp	(revision 518)
@@ -9,5 +9,5 @@
   CServerBuffer::CServerBuffer(StdSize buffSize)
   {
-    bufferSizeByClient= buffSize * CXios::bufferServerFactorSize; //::bufferSize*CXios::bufferServerFactorSize ;
+    bufferSizeByClient= buffSize * 2 * CXios::bufferServerFactorSize; //::bufferSize*CXios::bufferServerFactorSize ;
     size=bufferSizeByClient ;
     first=0 ;
Index: /XIOS/trunk/src/node/domain.cpp
===================================================================
--- /XIOS/trunk/src/node/domain.cpp	(revision 517)
+++ /XIOS/trunk/src/node/domain.cpp	(revision 518)
@@ -750,7 +750,10 @@
     CContextClient* client=context->client ;
     // send lon lat for each connected server
-    CEventClient event(getType(),EVENT_ID_LON_LAT) ;
-
-    list<shared_ptr<CMessage> > list_msg ;
+
+    CEventClient eventLon(getType(),EVENT_ID_LON) ;
+    CEventClient eventLat(getType(),EVENT_ID_LAT) ;
+
+    list<shared_ptr<CMessage> > list_msgLon ;
+    list<shared_ptr<CMessage> > list_msgLat ;
     list< CArray<int,1>* > list_indi,list_indj ;
     list< CArray<double,1>* >list_lon,list_lat ;
@@ -794,14 +797,25 @@
       if (hasBounds) list_boundslat.push_back(new CArray<double,2>(boundslat.copy())) ;
 
-      list_msg.push_back(shared_ptr<CMessage>(new CMessage)) ;
-
-      *list_msg.back()<<this->getId()<<(int)type ; // enum ne fonctionne pour les message => ToFix
-      *list_msg.back()<<isCurvilinear ;
-      *list_msg.back()<<*list_indi.back()<<*list_indj.back()<<*list_lon.back()<<*list_lat.back() ;
-      if (hasBounds) *list_msg.back()<<*list_boundslon.back()<<*list_boundslat.back();
-      event.push(connectedServer[ns],nbSenders[ns],*list_msg.back()) ;
+      list_msgLon.push_back(shared_ptr<CMessage>(new CMessage)) ;
+      list_msgLat.push_back(shared_ptr<CMessage>(new CMessage)) ;
+
+      *list_msgLon.back()<<this->getId()<<(int)type ; // enum ne fonctionne pour les message => ToFix
+      *list_msgLat.back()<<this->getId()<<(int)type ;
+      *list_msgLon.back()<<isCurvilinear ;
+      *list_msgLat.back()<<isCurvilinear ;
+      *list_msgLon.back()<<*list_indi.back()<<*list_indj.back()<<*list_lon.back() ;
+      *list_msgLat.back()<<*list_indi.back()<<*list_indj.back()<<*list_lat.back() ;
+
+      if (hasBounds)
+      {
+        *list_msgLon.back()<<*list_boundslon.back();
+        *list_msgLat.back()<<*list_boundslat.back();
+      }
+      eventLon.push(connectedServer[ns],nbSenders[ns],*list_msgLon.back()) ;
+      eventLat.push(connectedServer[ns],nbSenders[ns],*list_msgLat.back()) ;
     }
 
-    client->sendEvent(event) ;
+    client->sendEvent(eventLon) ;
+    client->sendEvent(eventLat) ;
 
 
@@ -828,6 +842,10 @@
              return true ;
              break ;
-           case EVENT_ID_LON_LAT :
-             recvLonLat(event) ;
+           case EVENT_ID_LON :
+             recvLon(event) ;
+             return true ;
+             break ;
+           case EVENT_ID_LAT :
+             recvLat(event) ;
              return true ;
              break ;
@@ -882,5 +900,5 @@
   }
 
-  void CDomain::recvLonLat(CEventServer& event)
+  void CDomain::recvLon(CEventServer& event)
   {
     list<CEventServer::SSubEvent>::iterator it ;
@@ -890,20 +908,18 @@
       string domainId ;
       *buffer>>domainId ;
-      get(domainId)->recvLonLat(*buffer) ;
+      get(domainId)->recvLon(*buffer) ;
     }
   }
 
-  void CDomain::recvLonLat(CBufferIn& buffer)
+  void CDomain::recvLon(CBufferIn& buffer)
   {
     CArray<int,1> indi ;
     CArray<int,1> indj ;
     CArray<double,1> lon ;
-    CArray<double,1> lat ;
     CArray<double,2> boundslon ;
-    CArray<double,2> boundslat ;
 
     int type_int ;
-    buffer>>type_int>>isCurvilinear>>indi>>indj>>lon>>lat ;
-    if (hasBounds) buffer>>boundslon>>boundslat ;
+    buffer>>type_int>>isCurvilinear>>indi>>indj>>lon ;
+    if (hasBounds) buffer>>boundslon ;
     type.setValue((type_attr::t_enum)type_int) ; // probleme des type enum avec les buffers : ToFix
 
@@ -914,5 +930,4 @@
       ind_srv=(i-(zoom_ibegin_srv-1))+(j-(zoom_jbegin_srv-1))*zoom_ni_srv ;
       lonvalue_srv(ind_srv)=lon(ind) ;
-      latvalue_srv(ind_srv)=lat(ind) ;
       if (hasBounds)
       {
@@ -920,4 +935,43 @@
         {
           bounds_lon_srv(nv,ind_srv)=boundslon(nv,ind) ;
+        }
+      }
+    }
+  }
+
+  void CDomain::recvLat(CEventServer& event)
+  {
+    list<CEventServer::SSubEvent>::iterator it ;
+    for (it=event.subEvents.begin();it!=event.subEvents.end();++it)
+    {
+      CBufferIn* buffer=it->buffer;
+      string domainId ;
+      *buffer>>domainId ;
+      get(domainId)->recvLat(*buffer) ;
+    }
+  }
+
+  void CDomain::recvLat(CBufferIn& buffer)
+  {
+    CArray<int,1> indi ;
+    CArray<int,1> indj ;
+    CArray<double,1> lat ;
+    CArray<double,2> boundslat ;
+
+    int type_int ;
+    buffer>>type_int>>isCurvilinear>>indi>>indj>>lat ;
+    if (hasBounds) buffer>>boundslat ;
+    type.setValue((type_attr::t_enum)type_int) ; // probleme des type enum avec les buffers : ToFix
+
+    int i,j,ind_srv ;
+    for(int ind=0;ind<indi.numElements();ind++)
+    {
+      i=indi(ind) ; j=indj(ind) ;
+      ind_srv=(i-(zoom_ibegin_srv-1))+(j-(zoom_jbegin_srv-1))*zoom_ni_srv ;
+      latvalue_srv(ind_srv)=lat(ind) ;
+      if (hasBounds)
+      {
+        for(int nv=0;nv<nvertex;nv++)
+        {
           bounds_lat_srv(nv,ind_srv)=boundslat(nv,ind) ;
         }
@@ -925,4 +979,47 @@
     }
   }
+//  void CDomain::recvLonLat(CEventServer& event)
+//  {
+//    list<CEventServer::SSubEvent>::iterator it ;
+//    for (it=event.subEvents.begin();it!=event.subEvents.end();++it)
+//    {
+//      CBufferIn* buffer=it->buffer;
+//      string domainId ;
+//      *buffer>>domainId ;
+//      get(domainId)->recvLonLat(*buffer) ;
+//    }
+//  }
+//
+//  void CDomain::recvLonLat(CBufferIn& buffer)
+//  {
+//    CArray<int,1> indi ;
+//    CArray<int,1> indj ;
+//    CArray<double,1> lon ;
+//    CArray<double,1> lat ;
+//    CArray<double,2> boundslon ;
+//    CArray<double,2> boundslat ;
+//
+//    int type_int ;
+//    buffer>>type_int>>isCurvilinear>>indi>>indj>>lon>>lat ;
+//    if (hasBounds) buffer>>boundslon>>boundslat ;
+//    type.setValue((type_attr::t_enum)type_int) ; // probleme des type enum avec les buffers : ToFix
+//
+//    int i,j,ind_srv ;
+//    for(int ind=0;ind<indi.numElements();ind++)
+//    {
+//      i=indi(ind) ; j=indj(ind) ;
+//      ind_srv=(i-(zoom_ibegin_srv-1))+(j-(zoom_jbegin_srv-1))*zoom_ni_srv ;
+//      lonvalue_srv(ind_srv)=lon(ind) ;
+//      latvalue_srv(ind_srv)=lat(ind) ;
+//      if (hasBounds)
+//      {
+//        for(int nv=0;nv<nvertex;nv++)
+//        {
+//          bounds_lon_srv(nv,ind_srv)=boundslon(nv,ind) ;
+//          bounds_lat_srv(nv,ind_srv)=boundslat(nv,ind) ;
+//        }
+//      }
+//    }
+//  }
    //----------------------------------------------------------------
 
Index: /XIOS/trunk/src/node/domain.hpp
===================================================================
--- /XIOS/trunk/src/node/domain.hpp	(revision 517)
+++ /XIOS/trunk/src/node/domain.hpp	(revision 518)
@@ -37,5 +37,5 @@
          enum EEventId
          {
-           EVENT_ID_SERVER_ATTRIBUT, EVENT_ID_LON_LAT
+           EVENT_ID_SERVER_ATTRIBUT, EVENT_ID_LAT, EVENT_ID_LON
          } ;
 
@@ -126,7 +126,9 @@
          void computeConnectedServer(void) ;
          static bool dispatchEvent(CEventServer& event) ;
-         static void recvLonLat(CEventServer& event) ;
+         static void recvLat(CEventServer& event) ;
+         static void recvLon(CEventServer& event) ;
          static void recvServerAttribut(CEventServer& event) ;
-         void recvLonLat(CBufferIn& buffer) ;
+         void recvLat(CBufferIn& buffer) ;
+         void recvLon(CBufferIn& buffer) ;
          void recvServerAttribut(CBufferIn& buffer) ;
 
Index: /XIOS/trunk/src/node/field.cpp
===================================================================
--- /XIOS/trunk/src/node/field.cpp	(revision 517)
+++ /XIOS/trunk/src/node/field.cpp	(revision 518)
@@ -969,5 +969,4 @@
        for (; it != itE; ++it)
        {
-         std::cout << "Variable Fields " << (*it)->getId() << std::endl;
          this->sendAddVariable((*it)->getId());
          (*it)->sendAllAttributesToServer();
Index: /XIOS/trunk/src/node/file.cpp
===================================================================
--- /XIOS/trunk/src/node/file.cpp	(revision 517)
+++ /XIOS/trunk/src/node/file.cpp	(revision 518)
@@ -717,5 +717,4 @@
        for (; it != itE; ++it)
        {
-         std::cout << "Variable Files " << (*it)->getId() << std::endl;
          this->sendAddVariable((*it)->getId());
          (*it)->sendAllAttributesToServer();
@@ -840,5 +839,4 @@
        fieldPtr = this->enabledFields[i];
        if (fieldPtr->name.isEmpty()) fieldPtr->name.setValue(fieldPtr->getBaseFieldReference()->getId());
-       std::cout << "Enabled Fields " << i << " " << CField::get(fieldPtr)->getId() << std::endl;
        this->sendAddField(fieldPtr->getId());
        fieldPtr->sendAllAttributesToServer();
Index: /XIOS/trunk/src/node/grid.cpp
===================================================================
--- /XIOS/trunk/src/node/grid.cpp	(revision 517)
+++ /XIOS/trunk/src/node/grid.cpp	(revision 518)
@@ -171,11 +171,13 @@
      std::map<int, int>::const_iterator it = domConnectedServerSide_.begin(),
                                        itE = domConnectedServerSide_.end();
+     std::vector<int> nData = domain->nbDataSrv;
+     std::vector<int>::const_iterator itData = nData.begin();
      StdSize retVal = StdSize(0.0);
-     for (; it != itE; ++it)
+     for (; it != itE; ++it, ++itData)
      {
-       retVal = it->second;
+       retVal = (it->second < *itData) ? *itData : it->second;
        if (this->withAxis) retVal *= this->axis->size.getValue();
        retVal *= sizeof(double);
-       retVal *= 1.2 * CXios::bufferServerFactorSize; // Secure factor
+       retVal *= 2.5 * CXios::bufferServerFactorSize; // Secure factor, myterious number
        ret.insert(make_pair(it->first, retVal));
      }
