herr_t
ss_scope_comm(ss_scope_t *scope,
MPI_Comm *comm, /* Optional returned communicator, not duplicated. */
int *self, /* Optional returned calling task's rank within communicator */
int *ntasks /* Optional returned size of communicator */
)
{
SS_ENTER(ss_scope_comm, herr_t);
SS_ASSERT_MEM(scope, ss_scope_t);
if (comm) *comm = SS_SCOPE(scope)->m.comm;
if (self && (*self=ss_mpi_comm_rank(SS_SCOPE(scope)->m.comm))<0) SS_ERROR(FAILED);
if (ntasks && (*ntasks=ss_mpi_comm_size(SS_SCOPE(scope)->m.comm))<0) SS_ERROR(FAILED);
SS_CLEANUP:
SS_LEAVE(0);
}