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