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