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