Index: XIOS/dev/dev_ym/XIOS_COUPLING/src/context_client.cpp
===================================================================
--- XIOS/dev/dev_ym/XIOS_COUPLING/src/context_client.cpp	(revision 2325)
+++ XIOS/dev/dev_ym/XIOS_COUPLING/src/context_client.cpp	(revision 2326)
@@ -449,6 +449,11 @@
    void CContextClient::setBufferSize(const std::map<int,StdSize>& mapSize)
    {
-     for(auto& it : mapSize) 
-      buffers[it.first]->fixBufferSize(std::max(CXios::minBufferSize*1.0,std::min(it.second*CXios::bufferSizeFactor*1.01,CXios::maxBufferSize*1.0)));
+     setFixedBuffer() ;
+     for(auto& it : mapSize)
+     {
+      size_t size=std::max(CXios::minBufferSize*1.0,std::min(it.second*CXios::bufferSizeFactor*1.01,CXios::maxBufferSize*1.0)) ;
+      mapBufferSize_[it.first]=size ;
+      if (buffers.count(it.first)>0) buffers[it.first]->fixBufferSize(size);
+     }
    }
 
Index: XIOS/dev/dev_ym/XIOS_COUPLING/src/context_server.cpp
===================================================================
--- XIOS/dev/dev_ym/XIOS_COUPLING/src/context_server.cpp	(revision 2325)
+++ XIOS/dev/dev_ym/XIOS_COUPLING/src/context_server.cpp	(revision 2326)
@@ -115,5 +115,5 @@
     CTimer::get("check pending request").suspend();
     CTimer::get("check event process").resume();
-    if (enableEventsProcessing)  processEvents();
+    processEvents(enableEventsProcessing);
     CTimer::get("check event process").suspend();
     return finished;
@@ -320,5 +320,5 @@
         buffers[rank]->freeBuffer(count) ;
         delete buffers[rank] ;
-        buffers[rank] = new CServerBuffer(windows_[rank], winAdress, 0, newSize) ;
+        buffers[rank] = new CServerBuffer(windows_[rank], winAdress, 0, 2*newSize) ;
         info(100)<<"Context id "<<context->getId()<<" : Receive ChangeBufferSize from client rank "<<rank
                  <<"  newSize : "<<newSize<<" Address : "<<winAdress[0]<<" & "<<winAdress[1]<<endl ;
@@ -339,5 +339,5 @@
   }
 
-  void CContextServer::processEvents(void)
+  void CContextServer::processEvents(bool enableEventsProcessing)
   {
     map<size_t,CEventServer*>::iterator it;
@@ -363,4 +363,5 @@
         else if (isAttachedModeEnabled() || eventScheduler_->queryEvent(currentTimeLine,hashId) )
         {
+          if (!enableEventsProcessing && isCollectiveEvent(*event)) return ;
 
           if (!eventScheduled_) 
@@ -498,5 +499,5 @@
   bool CContextServer::isCollectiveEvent(CEventServer& event)
   {
-    if (event.classId==CField::GetType()) return CField::isCollectiveEvent(event);
+    if (event.type>1000) return false ;
     else return true ;
   }
Index: XIOS/dev/dev_ym/XIOS_COUPLING/src/context_server.hpp
===================================================================
--- XIOS/dev/dev_ym/XIOS_COUPLING/src/context_server.hpp	(revision 2325)
+++ XIOS/dev/dev_ym/XIOS_COUPLING/src/context_server.hpp	(revision 2326)
@@ -25,5 +25,5 @@
     void getBufferFromClient(size_t timeLine) ;
     void processRequest(int rank, char* buff,int count) ;
-    void processEvents(void) ;
+    void processEvents(bool enableEventsProcessing) ;
     bool hasFinished(void);
     void dispatchEvent(CEventServer& event) ;
Index: XIOS/dev/dev_ym/XIOS_COUPLING/src/node/axis.hpp
===================================================================
--- XIOS/dev/dev_ym/XIOS_COUPLING/src/node/axis.hpp	(revision 2325)
+++ XIOS/dev/dev_ym/XIOS_COUPLING/src/node/axis.hpp	(revision 2326)
@@ -55,6 +55,8 @@
          enum EEventId
          {
+           EVENT_ID_COLLECTIVE=100,
            EVENT_ID_AXIS_DISTRIBUTION,
-           EVENT_ID_SEND_DISTRIBUTED_ATTRIBUTE
+           EVENT_ID_SEND_DISTRIBUTED_ATTRIBUTE,
+           EVENT_ID_NO_COLLECTIVE=1000,
          } ;
 
Index: XIOS/dev/dev_ym/XIOS_COUPLING/src/node/context.cpp
===================================================================
--- XIOS/dev/dev_ym/XIOS_COUPLING/src/node/context.cpp	(revision 2325)
+++ XIOS/dev/dev_ym/XIOS_COUPLING/src/node/context.cpp	(revision 2326)
@@ -1130,5 +1130,5 @@
     for(auto field : fileOutField) field->evaluateBufferSize(fieldBufferEvaluation, CXios::isOptPerformance) ; // output to server
     for(auto field : couplerOutField) field->evaluateBufferSize(fieldBufferEvaluation, CXios::isOptPerformance) ; // output to coupler
-    for(auto field : fieldModelIn) field->evaluateBufferSize(fieldBufferEvaluation, CXios::isOptPerformance) ; // server to client (for io servers)
+    for(auto field : fileInField) field->evaluateBufferSize(fieldBufferEvaluation, CXios::isOptPerformance) ; // server to client (for io servers)
     
     // fix size for each context client
Index: XIOS/dev/dev_ym/XIOS_COUPLING/src/node/context.hpp
===================================================================
--- XIOS/dev/dev_ym/XIOS_COUPLING/src/node/context.hpp	(revision 2325)
+++ XIOS/dev/dev_ym/XIOS_COUPLING/src/node/context.hpp	(revision 2326)
@@ -53,4 +53,5 @@
          enum EEventId
          {
+           EVENT_ID_COLLECTIVE=100,
            EVENT_ID_CLOSE_DEFINITION,EVENT_ID_UPDATE_CALENDAR,
            EVENT_ID_CREATE_FILE_HEADER,EVENT_ID_CONTEXT_FINALIZE,
@@ -59,4 +60,5 @@
            EVENT_ID_COUPLER_IN_CLOSE_DEFINITION,
            EVENT_ID_COUPLER_IN_CONTEXT_FINALIZED,
+           EVENT_ID_NO_COLLECTIVE=1000,
          };
 
Index: XIOS/dev/dev_ym/XIOS_COUPLING/src/node/coupler_in.hpp
===================================================================
--- XIOS/dev/dev_ym/XIOS_COUPLING/src/node/coupler_in.hpp	(revision 2325)
+++ XIOS/dev/dev_ym/XIOS_COUPLING/src/node/coupler_in.hpp	(revision 2326)
@@ -52,5 +52,7 @@
          enum EEventId
          {
-           NO_EVENT
+           EVENT_ID_COLLECTIVE=100,
+           NO_EVENT,
+           EVENT_ID_NO_COLLECTIVE=1000,
          };
 
Index: XIOS/dev/dev_ym/XIOS_COUPLING/src/node/coupler_out.hpp
===================================================================
--- XIOS/dev/dev_ym/XIOS_COUPLING/src/node/coupler_out.hpp	(revision 2325)
+++ XIOS/dev/dev_ym/XIOS_COUPLING/src/node/coupler_out.hpp	(revision 2326)
@@ -47,5 +47,7 @@
          enum EEventId
          {
-           NO_EVENT
+           EVENT_ID_COLLECTIVE=100,
+           NO_EVENT,
+           EVENT_ID_NO_COLLECTIVE=1000,
          };
 
Index: XIOS/dev/dev_ym/XIOS_COUPLING/src/node/domain.hpp
===================================================================
--- XIOS/dev/dev_ym/XIOS_COUPLING/src/node/domain.hpp	(revision 2325)
+++ XIOS/dev/dev_ym/XIOS_COUPLING/src/node/domain.hpp	(revision 2326)
@@ -58,5 +58,7 @@
          enum EEventId
          {
-           EVENT_ID_DOMAIN_DISTRIBUTION, EVENT_ID_SEND_DISTRIBUTED_ATTRIBUTE
+           EVENT_ID_COLLECTIVE=100,
+           EVENT_ID_DOMAIN_DISTRIBUTION, EVENT_ID_SEND_DISTRIBUTED_ATTRIBUTE,
+           EVENT_ID_NO_COLLECTIVE=100,
          } ;
 
Index: XIOS/dev/dev_ym/XIOS_COUPLING/src/node/field.cpp
===================================================================
--- XIOS/dev/dev_ym/XIOS_COUPLING/src/node/field.cpp	(revision 2325)
+++ XIOS/dev/dev_ym/XIOS_COUPLING/src/node/field.cpp	(revision 2326)
@@ -558,4 +558,5 @@
   {
     CContextClient* client=nullptr ;
+    const size_t headerSize=100 ;
 
     for(int i=0;i<2;i++)
@@ -569,11 +570,11 @@
         map<int,size_t> bufferSize ;
    
-        if (evaluateBuffer.count(client)!=0) bufferSize = evaluateBuffer[client] ;
+        bufferSize = evaluateBuffer[client] ;
         if (isOptPerformance)
         {
           for(auto& it : dataSize) 
           {
-            if (bufferSize.count(it.first)==0) bufferSize[it.first]=it.second ;
-            else bufferSize[it.first]+=it.second ;
+            if (bufferSize.count(it.first)==0) bufferSize[it.first]=it.second+headerSize ;
+            else bufferSize[it.first]+=it.second+headerSize ;
           }
         }
@@ -582,6 +583,6 @@
           for(auto& it : dataSize) 
           {
-            if (bufferSize.count(it.first)==0) bufferSize[it.first]=it.second ;
-            else bufferSize[it.first]=std::max(bufferSize[it.first],(size_t)it.second) ;
+              if (bufferSize.count(it.first)==0) bufferSize[it.first]=it.second+headerSize ;
+              else bufferSize[it.first]=std::max(bufferSize[it.first],(size_t)(it.second+headerSize)) ;
           }
         }
Index: XIOS/dev/dev_ym/XIOS_COUPLING/src/node/field.hpp
===================================================================
--- XIOS/dev/dev_ym/XIOS_COUPLING/src/node/field.hpp	(revision 2325)
+++ XIOS/dev/dev_ym/XIOS_COUPLING/src/node/field.hpp	(revision 2326)
@@ -90,6 +90,8 @@
          enum EEventId
          {
+           EVENT_ID_COLLECTIVE=100,
            EVENT_ID_UPDATE_DATA, EVENT_ID_READ_DATA, EVENT_ID_READ_DATA_READY,
-           EVENT_ID_ADD_VARIABLE, EVENT_ID_ADD_VARIABLE_GROUP, EVENT_ID_GRID_COMPLETED
+           EVENT_ID_ADD_VARIABLE, EVENT_ID_ADD_VARIABLE_GROUP, EVENT_ID_GRID_COMPLETED,
+           EVENT_ID_NO_COLLECTIVE=1000,
          };
 
Index: XIOS/dev/dev_ym/XIOS_COUPLING/src/node/file.hpp
===================================================================
--- XIOS/dev/dev_ym/XIOS_COUPLING/src/node/file.hpp	(revision 2325)
+++ XIOS/dev/dev_ym/XIOS_COUPLING/src/node/file.hpp	(revision 2326)
@@ -52,6 +52,8 @@
          enum EEventId
          {
+           EVENT_ID_COLLECTIVE=100,
            EVENT_ID_ADD_FIELD, EVENT_ID_ADD_FIELD_GROUP, EVENT_ID_ADD_VARIABLE,
-           EVENT_ID_ADD_VARIABLE_GROUP, EVENT_ID_CREATE_ENABLED_FIELDS
+           EVENT_ID_ADD_VARIABLE_GROUP, EVENT_ID_CREATE_ENABLED_FIELDS,
+           EVENT_ID_NO_COLLECTIVE=1000,
          };
 
Index: XIOS/dev/dev_ym/XIOS_COUPLING/src/node/grid.hpp
===================================================================
--- XIOS/dev/dev_ym/XIOS_COUPLING/src/node/grid.hpp	(revision 2325)
+++ XIOS/dev/dev_ym/XIOS_COUPLING/src/node/grid.hpp	(revision 2326)
@@ -77,6 +77,8 @@
          enum EEventId
          {
+           EVENT_ID_COLLECTIVE=100,
            EVENT_ID_ADD_DOMAIN, EVENT_ID_ADD_AXIS, EVENT_ID_ADD_SCALAR,
            EVENT_ID_SEND_MASK,
+           EVENT_ID_NO_COLLECTIVE=1000,
 
          };
Index: XIOS/dev/dev_ym/XIOS_COUPLING/src/node/scalar.hpp
===================================================================
--- XIOS/dev/dev_ym/XIOS_COUPLING/src/node/scalar.hpp	(revision 2325)
+++ XIOS/dev/dev_ym/XIOS_COUPLING/src/node/scalar.hpp	(revision 2326)
@@ -52,6 +52,8 @@
       enum EEventId
       {
+        EVENT_ID_COLLECTIVE=100,
         EVENT_ID_SCALAR_DISTRIBUTION,
         EVENT_ID_SEND_DISTRIBUTED_ATTRIBUTE,
+        EVENT_ID_NO_COLLECTIVE=1000,
       } ;
       static bool dispatchEvent(CEventServer& event);      
Index: XIOS/dev/dev_ym/XIOS_COUPLING/src/node/variable.hpp
===================================================================
--- XIOS/dev/dev_ym/XIOS_COUPLING/src/node/variable.hpp	(revision 2325)
+++ XIOS/dev/dev_ym/XIOS_COUPLING/src/node/variable.hpp	(revision 2326)
@@ -39,5 +39,7 @@
             enum EEventId
             {
-             EVENT_ID_VARIABLE_VALUE
+             EVENT_ID_COLLECTIVE=100,
+             EVENT_ID_VARIABLE_VALUE,
+             EVENT_ID_NO_COLLECTIVE=1000,
             };
 
