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 @*/ 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*/ 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