                  // get size of data to transfer                 for ( rank_type neighborRank : mesh->neighborSubdomains() )                 {                     reqs[cptRequest++] = mesh->worldComm().localComm().isend( neighborRank , 0, (size_type)dataToSend[neighborRank].size() );                     reqs[cptRequest++] = mesh->worldComm().localComm().irecv( neighborRank , 0, sizeRecv[neighborRank] );                 }                 // wait all requests                 mpi::wait_all(reqs, reqs + cptRequest);                  cptRequest = 0;                 for ( rank_type neighborRank : mesh->neighborSubdomains() )                 {                     int nSendData = dataToSend[neighborRank].size();                     if ( nSendData > 0 )                         reqs[cptRequest++] = mesh->worldComm().localComm().isend( neighborRank, 0, &(dataToSend[neighborRank][0]), nSendData );                     int nRecvData = sizeRecv[neighborRank];                     dataToRecv[neighborRank].resize( nRecvData );                     if ( nRecvData > 0 )                         reqs[cptRequest++] = mesh->worldComm().localComm().irecv( neighborRank, 0, &(dataToRecv[neighborRank][0]), nRecvData );                 }                 // wait all requests                 mpi::wait_all( reqs, reqs + cptRequest );                 