Actual source code: gcomm.c
petsc-3.3-p7 2013-05-11
2: /*
3: Provides utility routines for manulating any type of PETSc object.
4: */
5: #include <petscsys.h> /*I "petscsys.h" I*/
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: /*@
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: }
78: /*@
79: PetscObjectSetTabLevel - Sets the number of tabs that ASCII output for that object use
81: Not Collective
83: Input Parameters:
84: + obj - any PETSc object, for example a Vec, Mat or KSP. Thus must be
85: cast with a (PetscObject), for example,
86: PetscObjectGetComm((PetscObject)mat,&comm);
87: - tab - the number of tabs
89: Level: developer
91: Notes: this is used to manage the output from options that are imbedded in other objects. For example
92: the KSP object inside a SNES object. By indenting each lower level further the heirarchy of objects
93: is very clear.
95: .seealso: PetscObjectIncrementTabLevel()
96: @*/
97: PetscErrorCode PetscObjectSetTabLevel(PetscObject obj,PetscInt tab)
98: {
101: obj->tablevel = tab;
102: return(0);
103: }
107: /*@
108: PetscObjectIncrementTabLevel - Sets the number of tabs that ASCII output for that object use based on
109: the tablevel of another object. This should be called immediately after the object is created.
111: Not Collective
113: Input Parameter:
114: + obj - any PETSc object where we are changing the tab
115: . oldobj - the object providing the tab
116: - tab - the increment that is added to the old objects tab
119: Level: developer
121: Notes: this is used to manage the output from options that are imbedded in other objects. For example
122: the KSP object inside a SNES object. By indenting each lower level further the heirarchy of objects
123: is very clear.
125: .seealso: PetscObjectSetLabLevel(), PetscObjectGetTabLevel()
127: @*/
128: PetscErrorCode PetscObjectIncrementTabLevel(PetscObject obj,PetscObject oldobj,PetscInt tab)
129: {
133: if (oldobj) {
134: obj->tablevel = oldobj->tablevel + tab;
135: } else {
136: obj->tablevel = tab;
137: }
138: return(0);
139: }