petsc-master 2017-01-20
Report Typos and Errors


Duplicates the communicator only if it is not already a PETSc communicator.


#include "petscsys.h"   
PetscErrorCode  PetscCommDuplicate(MPI_Comm comm_in,MPI_Comm *comm_out,PetscMPIInt *first_tag)
Collective on MPI_Comm

Input Parameters

comm_in -Input communicator

Output Parameters

comm_out - Output communicator. May be comm_in.
first_tag - Tag available that has not already been used with this communicator (you may pass in NULL if you do not need a tag)

PETSc communicators are just regular MPI communicators that keep track of which tags have been used to prevent tag conflict. If you pass a non-PETSc communicator into a PETSc creation routine it will attach a private communicator for use in the objects communications. The internal MPI_Comm is used to perform all the MPI calls for PETSc, the outer MPI_Comm is a user level MPI_Comm that may be performing communication for the user or other library and so IS NOT used by PETSc.

See Also

PetscObjectGetNewTag(), PetscCommGetNewTag(), PetscCommDestroy()

Index of all Sys routines
Table of Contents for all manual pages
Index of all manual pages