1 #include "petscsystypes.h"
2 #include <petsc/private/viewerimpl.h> /*I "petscsys.h" I*/
3
4 /*@
5 PetscViewerPythonSetType - Initialize a `PetscViewer` object implemented in Python.
6
7 Collective
8
9 Input Parameters:
10 + viewer - the viewer object.
11 - pyname - full dotted Python name [package].module[.{class|function}]
12
13 Options Database Key:
14 . -viewer_python_type <pyname> - python class
15
16 Level: intermediate
17
18 .seealso: [](sec_viewers), `PetscViewer`, `PetscViewerType`, `PetscViewerCreate()`, `PetscViewerSetType()`, `PETSCVIEWERPYTHON`, `PetscPythonInitialize()`
19 @*/
PetscViewerPythonSetType(PetscViewer viewer,const char pyname[])20 PetscErrorCode PetscViewerPythonSetType(PetscViewer viewer, const char pyname[])
21 {
22 PetscFunctionBegin;
23 PetscValidHeaderSpecific(viewer, PETSC_VIEWER_CLASSID, 1);
24 PetscAssertPointer(pyname, 2);
25 PetscTryMethod(viewer, "PetscViewerPythonSetType_C", (PetscViewer, const char[]), (viewer, pyname));
26 PetscFunctionReturn(PETSC_SUCCESS);
27 }
28
29 /*@
30 PetscViewerPythonGetType - Get the Python name of a `PetscViewer` object implemented in Python.
31
32 Not Collective
33
34 Input Parameter:
35 . viewer - the viewer
36
37 Output Parameter:
38 . pyname - full dotted Python name [package].module[.{class|function}]
39
40 Level: intermediate
41
42 .seealso: [](sec_viewers), `PetscViewer`, `PetscViewerType`, `PetscViewerCreate()`, `PetscViewerSetType()`, `PETSCVIEWERPYTHON`, `PetscPythonInitialize()`, `PetscViewerPythonSetType()`
43 @*/
PetscViewerPythonGetType(PetscViewer viewer,const char * pyname[])44 PetscErrorCode PetscViewerPythonGetType(PetscViewer viewer, const char *pyname[])
45 {
46 PetscFunctionBegin;
47 PetscValidHeaderSpecific(viewer, PETSC_VIEWER_CLASSID, 1);
48 PetscAssertPointer(pyname, 2);
49 PetscUseMethod(viewer, "PetscViewerPythonGetType_C", (PetscViewer, const char *[]), (viewer, pyname));
50 PetscFunctionReturn(PETSC_SUCCESS);
51 }
52
53 /*@
54 PetscViewerPythonViewObject - View a `PetscObject`.
55
56 Collective
57
58 Input Parameters:
59 + viewer - the viewer object.
60 - obj - the object to be viewed.
61
62 Level: intermediate
63
64 .seealso: [](sec_viewers), `PetscViewer`, `PetscViewerPythonCreate()`
65 @*/
PetscViewerPythonViewObject(PetscViewer viewer,PetscObject obj)66 PetscErrorCode PetscViewerPythonViewObject(PetscViewer viewer, PetscObject obj)
67 {
68 PetscFunctionBegin;
69 PetscValidHeaderSpecific(viewer, PETSC_VIEWER_CLASSID, 1);
70 PetscValidHeader(obj, 2);
71 PetscTryMethod(viewer, "PetscViewerPythonViewObject_C", (PetscViewer, PetscObject), (viewer, obj));
72 PetscFunctionReturn(PETSC_SUCCESS);
73 }
74
75 /*@
76 PetscViewerPythonCreate - Create a `PetscViewer` object implemented in Python.
77
78 Collective
79
80 Input Parameters:
81 + comm - MPI communicator
82 - pyname - full dotted Python name [package].module[.{class|function}]
83
84 Output Parameter:
85 . viewer - the viewer
86
87 Level: intermediate
88
89 .seealso: [](sec_viewers), `PetscViewer`, `PetscViewerType`, `PETSCVIEWERPYTHON`, `PetscViewerPythonSetType()`, `PetscPythonInitialize()`, `PetscViewerPythonViewObject()`
90 @*/
PetscViewerPythonCreate(MPI_Comm comm,const char pyname[],PetscViewer * viewer)91 PetscErrorCode PetscViewerPythonCreate(MPI_Comm comm, const char pyname[], PetscViewer *viewer)
92 {
93 PetscFunctionBegin;
94 PetscAssertPointer(pyname, 2);
95 PetscAssertPointer(viewer, 3);
96 PetscCall(PetscViewerCreate(comm, viewer));
97 PetscCall(PetscViewerSetType(*viewer, PETSCVIEWERPYTHON));
98 PetscCall(PetscViewerPythonSetType(*viewer, pyname));
99 PetscFunctionReturn(PETSC_SUCCESS);
100 }
101
102 /*@C
103 PETSC_VIEWER_PYTHON_ - Creates a Python `PetscViewer` shared by all MPI processes in a communicator.
104
105 Collective
106
107 Input Parameter:
108 . comm - the MPI communicator to share the `PetscViewer`
109
110 Level: developer
111
112 Note:
113 Unlike almost all other PETSc routines, `PETSC_VIEWER_PYTHON_()` does not return
114 an error code. It is usually used in the form
115 .vb
116 XXXView(XXX object, PETSC_VIEWER_PYTHON_(comm));
117 .ve
118
119 .seealso: [](sec_viewers), `PetscViewer`
120 @*/
PETSC_VIEWER_PYTHON_(MPI_Comm comm)121 PetscViewer PETSC_VIEWER_PYTHON_(MPI_Comm comm)
122 {
123 PetscViewer viewer;
124
125 PetscFunctionBegin;
126 PetscCallNull(PetscViewerCreate(comm, &viewer));
127 PetscCallNull(PetscViewerSetType(viewer, PETSCVIEWERPYTHON));
128 PetscCallNull(PetscObjectRegisterDestroy((PetscObject)viewer));
129 PetscFunctionReturn(viewer);
130 }
131
132 /*MC
133 PETSCVIEWERPYTHON - A viewer implemented using Python code
134
135 Level: beginner
136
137 Notes:
138 This is the parent viewer for any implemented in Python.
139
140 .seealso: [](sec_viewers), `PetscViewer`, `PetscViewerCreate()`, `VecView()`, `DMView()`, `DMPLEX`, `PETSCVIEWERPYVISTA`
141 M*/
142