A process group is described by a collective object [?] with local components of class Group. The public interface of the Group class is
class Procs ; class DimensionSet ; class Coord ; class Group { public : Group() ; Group(const Procs& p) ; const Procs* prc() const ; DimensionSet dims() const ; int member() const ; int size() const ; int id() const ; int id_prc(const int id) const ; int id_abs(const int id) const ; int lead_prc() const ; int lead_abs() const ; void restrict(Dimension d, const int coord) ; void restrict(Dimension d) ; void restrict(DimensionSet ds) ; inline Group operator/(const Coord& i) const ; inline Group& operator/=(const Coord& i) ; private : ... } ;