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