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: }