- int size2 = group2->size();
- for (int i = 0; i < size2; i++) {
- s4u::Actor* actor = group2->actor(i);
- int proc1 = this->rank(actor);
- if (proc1 == MPI_UNDEFINED) {
- size2--;
- }
- }
- if (size2 == 0) {
- *newgroup = MPI_GROUP_EMPTY;
- } else {
- *newgroup = new Group(size2);
- int j=0;
- for (int i = 0; i < group2->size(); i++) {
- s4u::Actor* actor = group2->actor(i);
- int proc1 = this->rank(actor);
- if (proc1 != MPI_UNDEFINED) {
- (*newgroup)->set_mapping(actor, j);
- j++;
- }
- }
- if((*newgroup)!=MPI_GROUP_EMPTY)
- (*newgroup)->add_f();
+ std::vector<int> ranks2;
+ for (int i = 0; i < group2->size(); i++) {
+ aid_t actor = group2->actor(i);
+ if (rank(actor) != MPI_UNDEFINED)
+ ranks2.push_back(i);