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*/