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