Actual source code: gcomm.c

  1: #define PETSC_DLL
  2: /*
  3:      Provides utility routines for manulating any type of PETSc object.
  4: */
 5:  #include petsc.h

  9: /*@C
 10:    PetscObjectGetComm - Gets the MPI communicator for any PetscObject, 
 11:    regardless of the type.

 13:    Not Collective

 15:    Input Parameter:
 16: .  obj - any PETSc object, for example a Vec, Mat or KSP. Thus must be
 17:          cast with a (PetscObject), for example, 
 18:          PetscObjectGetComm((PetscObject)mat,&comm);

 20:    Output Parameter:
 21: .  comm - the MPI communicator

 23:    Level: advanced

 25:    Concepts: communicator^getting from object
 26:    Concepts: MPI communicator^getting from object

 28: @*/
 29: PetscErrorCode  PetscObjectGetComm(PetscObject obj,MPI_Comm *comm)
 30: {

 36:   if (obj->bops->getcomm) {
 37:     obj->bops->getcomm(obj,comm);
 38:   } else {
 39:     *comm = obj->comm;
 40:   }
 41:   return(0);
 42: }

 46: /*@C
 47:    PetscObjectGetTabLevel - Gets the number of tabs that ASCII output for that object use

 49:    Not Collective

 51:    Input Parameter:
 52: .  obj - any PETSc object, for example a Vec, Mat or KSP. Thus must be
 53:          cast with a (PetscObject), for example, 
 54:          PetscObjectGetComm((PetscObject)mat,&comm);

 56:    Output Parameter:
 57: .   tab - the number of tabs

 59:    Level: developer

 61:     Notes: this is used to manage the output from options that are imbedded in other objects. For example
 62:       the KSP object inside a SNES object. By indenting each lower level further the heirarchy of objects
 63:       is very clear.

 65: .seealso:  PetscObjectIncrementTabLevel()

 67: @*/
 68: PetscErrorCode  PetscObjectGetTabLevel(PetscObject obj,PetscInt *tab)
 69: {
 72:   *tab = obj->tablevel;
 73:   return(0);
 74: }

 76: /*@C
 77:    PetscObjectIncrementTabLevel - Sets the number of tabs that ASCII output for that object use based on
 78:          the tablevel of another object. This should be called immediately after the object is created.

 80:    Not Collective

 82:    Input Parameter:
 83: +  obj - any PETSc object where we are changing the tab
 84: .  oldobj - the object providing the tab
 85: -  tab - the increment that is added to the old objects tab


 88:    Level: developer

 90:     Notes: this is used to manage the output from options that are imbedded in other objects. For example
 91:       the KSP object inside a SNES object. By indenting each lower level further the heirarchy of objects
 92:       is very clear.

 94: .seealso:   PetscObjectSetLabLevel(),  PetscObjectGetTabLevel()

 96: @*/
 97: PetscErrorCode  PetscObjectIncrementTabLevel(PetscObject obj,PetscObject oldobj,PetscInt tab)
 98: {

102:   if (oldobj) {
103:     obj->tablevel = oldobj->tablevel + tab;
104:   } else {
105:     obj->tablevel = tab;
106:   }
107:   return(0);
108: }