Actual source code: pyvistaviewer.c

      1: #include "petscviewer.h"
      2: #include <petsc/private/viewerimpl.h>

      4: /*@C
      5:      PETSC_VIEWER_PYVISTA_ - Creates a PyVista `PetscViewer` shared by all MPI processes in a communicator.

      7:      Collective

      9:      Input Parameter:
     10: .    comm - the MPI communicator to share the `PetscViewer`

     12:      Level: developer

     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

     21: .seealso: [](sec_viewers), `PetscViewer`
     22: @*/
     23: PetscViewer PETSC_VIEWER_PYVISTA_(MPI_Comm comm)
     24: {
     25:   PetscViewer viewer;

     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: }

     35: /*MC
     36:    PETSCVIEWERPYVISTA - A PyVista viewer implemented using Python code

     38:   Level: beginner

     40:   Notes:
     41:   Currently the `DM` viewer only supports `DMPLEX` meshes.

     43: .seealso: [](sec_viewers), `PetscViewer`, `PetscViewerCreate()`, `VecView()`, `DMView()`, `DMPLEX`
     44: M*/
     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: }