ivec max_to_all(const ivec &pt) { int in[5], out[5]; for (int i=0; i<5; ++i) in[i] = out[i] = pt.in_direction(direction(i)); #ifdef HAVE_MPI MPI_Allreduce(&in,&out,5,MPI_INT,MPI_MAX,mycomm); #endif ivec ptout(pt.dim); for (int i=0; i<5; ++i) ptout.set_direction(direction(i), out[i]); return ptout; }
ivec max(const ivec &ivec1, const ivec &ivec2) { ivec m(ivec1.dim); LOOP_OVER_DIRECTIONS(ivec1.dim, d) m.set_direction(d, max(ivec1.in_direction(d), ivec2.in_direction(d))); return m; }