xref: /petsc/src/sys/classes/viewer/impls/pyvista/pyvistaviewer.c (revision e169c97a386b85804890c0588b974b98a92ed53c)
1*2f8f6c92SMatthew G. Knepley #include "petscviewer.h"
222d6dc08SStefano Zampini #include <petsc/private/viewerimpl.h> /*I     "petscsys.h"   I*/
322d6dc08SStefano Zampini 
422d6dc08SStefano Zampini /*@C
522d6dc08SStefano Zampini      PETSC_VIEWER_PYVISTA_ - Creates a PyVista `PetscViewer` shared by all MPI processes in a communicator.
622d6dc08SStefano Zampini 
722d6dc08SStefano Zampini      Collective
822d6dc08SStefano Zampini 
922d6dc08SStefano Zampini      Input Parameter:
1022d6dc08SStefano Zampini .    comm - the MPI communicator to share the `PetscViewer`
1122d6dc08SStefano Zampini 
1222d6dc08SStefano Zampini      Level: developer
1322d6dc08SStefano Zampini 
1422d6dc08SStefano Zampini      Note:
1522d6dc08SStefano Zampini      Unlike almost all other PETSc routines, `PETSC_VIEWER_PYVISTA_()` does not return
1622d6dc08SStefano Zampini      an error code.  It is usually used in the form
1722d6dc08SStefano Zampini    .vb
1822d6dc08SStefano Zampini           XXXView(XXX object, PETSC_VIEWER_PYVISTA_(comm));
1922d6dc08SStefano Zampini    .ve
2022d6dc08SStefano Zampini 
2122d6dc08SStefano Zampini .seealso: [](sec_viewers), `PetscViewer`
2222d6dc08SStefano Zampini @*/
PETSC_VIEWER_PYVISTA_(MPI_Comm comm)2322d6dc08SStefano Zampini PetscViewer PETSC_VIEWER_PYVISTA_(MPI_Comm comm)
2422d6dc08SStefano Zampini {
2522d6dc08SStefano Zampini   PetscViewer viewer;
2622d6dc08SStefano Zampini 
2722d6dc08SStefano Zampini   PetscFunctionBegin;
2822d6dc08SStefano Zampini   PetscCallNull(PetscViewerCreate(comm, &viewer));
2922d6dc08SStefano Zampini   PetscCallNull(PetscViewerSetType(viewer, PETSCVIEWERPYVISTA));
30*2f8f6c92SMatthew G. Knepley   PetscCallNull(PetscViewerSetFromOptions(viewer));
3122d6dc08SStefano Zampini   PetscCallNull(PetscObjectRegisterDestroy((PetscObject)viewer));
3222d6dc08SStefano Zampini   PetscFunctionReturn(viewer);
3322d6dc08SStefano Zampini }
3422d6dc08SStefano Zampini 
3522d6dc08SStefano Zampini /*MC
3622d6dc08SStefano Zampini    PETSCVIEWERPYVISTA - A PyVista viewer implemented using Python code
3722d6dc08SStefano Zampini 
3822d6dc08SStefano Zampini   Level: beginner
3922d6dc08SStefano Zampini 
4022d6dc08SStefano Zampini   Notes:
4122d6dc08SStefano Zampini   Currently the `DM` viewer only supports `DMPLEX` meshes.
4222d6dc08SStefano Zampini 
4322d6dc08SStefano Zampini .seealso: [](sec_viewers), `PetscViewer`, `PetscViewerCreate()`, `VecView()`, `DMView()`, `DMPLEX`
4422d6dc08SStefano Zampini M*/
PetscViewerCreate_PyVista(PetscViewer viewer)4522d6dc08SStefano Zampini PETSC_EXTERN PetscErrorCode PetscViewerCreate_PyVista(PetscViewer viewer)
4622d6dc08SStefano Zampini {
4722d6dc08SStefano Zampini   PetscFunctionBegin;
4822d6dc08SStefano Zampini   PetscCall(PetscPythonInitialize(NULL, NULL));
4922d6dc08SStefano Zampini   PetscCall(PetscViewerSetType(viewer, PETSCVIEWERPYTHON));
5022d6dc08SStefano Zampini   PetscCall(PetscObjectChangeTypeName((PetscObject)viewer, PETSCVIEWERPYVISTA));
5122d6dc08SStefano Zampini   PetscCall(PetscViewerPythonSetType(viewer, "petsc4py.lib._pytypes.viewer.petscpyvista.PetscPyVista"));
5222d6dc08SStefano Zampini   PetscFunctionReturn(PETSC_SUCCESS);
5322d6dc08SStefano Zampini }
54