1 #include "petscviewer.h"
2 #include <petsc/private/viewerimpl.h> /*I "petscsys.h" I*/
3
4 /*@C
5 PETSC_VIEWER_PYVISTA_ - Creates a PyVista `PetscViewer` shared by all MPI processes in a communicator.
6
7 Collective
8
9 Input Parameter:
10 . comm - the MPI communicator to share the `PetscViewer`
11
12 Level: developer
13
14 Note:
15 Unlike almost all other PETSc routines, `PETSC_VIEWER_PYVISTA_()` does not return
16 an error code. It is usually used in the form
17 .vb
18 XXXView(XXX object, PETSC_VIEWER_PYVISTA_(comm));
19 .ve
20
21 .seealso: [](sec_viewers), `PetscViewer`
22 @*/
PETSC_VIEWER_PYVISTA_(MPI_Comm comm)23 PetscViewer PETSC_VIEWER_PYVISTA_(MPI_Comm comm)
24 {
25 PetscViewer viewer;
26
27 PetscFunctionBegin;
28 PetscCallNull(PetscViewerCreate(comm, &viewer));
29 PetscCallNull(PetscViewerSetType(viewer, PETSCVIEWERPYVISTA));
30 PetscCallNull(PetscViewerSetFromOptions(viewer));
31 PetscCallNull(PetscObjectRegisterDestroy((PetscObject)viewer));
32 PetscFunctionReturn(viewer);
33 }
34
35 /*MC
36 PETSCVIEWERPYVISTA - A PyVista viewer implemented using Python code
37
38 Level: beginner
39
40 Notes:
41 Currently the `DM` viewer only supports `DMPLEX` meshes.
42
43 .seealso: [](sec_viewers), `PetscViewer`, `PetscViewerCreate()`, `VecView()`, `DMView()`, `DMPLEX`
44 M*/
PetscViewerCreate_PyVista(PetscViewer viewer)45 PETSC_EXTERN PetscErrorCode PetscViewerCreate_PyVista(PetscViewer viewer)
46 {
47 PetscFunctionBegin;
48 PetscCall(PetscPythonInitialize(NULL, NULL));
49 PetscCall(PetscViewerSetType(viewer, PETSCVIEWERPYTHON));
50 PetscCall(PetscObjectChangeTypeName((PetscObject)viewer, PETSCVIEWERPYVISTA));
51 PetscCall(PetscViewerPythonSetType(viewer, "petsc4py.lib._pytypes.viewer.petscpyvista.PetscPyVista"));
52 PetscFunctionReturn(PETSC_SUCCESS);
53 }
54