1*22d6dc08SStefano Zampini #include "petscsystypes.h" 2*22d6dc08SStefano Zampini #include <petsc/private/viewerimpl.h> /*I "petscsys.h" I*/ 3*22d6dc08SStefano Zampini 4*22d6dc08SStefano Zampini /*@ 5*22d6dc08SStefano Zampini PetscViewerPythonSetType - Initialize a `PetscViewer` object implemented in Python. 6*22d6dc08SStefano Zampini 7*22d6dc08SStefano Zampini Collective 8*22d6dc08SStefano Zampini 9*22d6dc08SStefano Zampini Input Parameters: 10*22d6dc08SStefano Zampini + viewer - the viewer object. 11*22d6dc08SStefano Zampini - pyname - full dotted Python name [package].module[.{class|function}] 12*22d6dc08SStefano Zampini 13*22d6dc08SStefano Zampini Options Database Key: 14*22d6dc08SStefano Zampini . -viewer_python_type <pyname> - python class 15*22d6dc08SStefano Zampini 16*22d6dc08SStefano Zampini Level: intermediate 17*22d6dc08SStefano Zampini 18*22d6dc08SStefano Zampini .seealso: [](sec_viewers), `PetscViewer`, `PetscViewerType`, `PetscViewerCreate()`, `PetscViewerSetType()`, `PETSCVIEWERPYTHON`, `PetscPythonInitialize()` 19*22d6dc08SStefano Zampini @*/ 20*22d6dc08SStefano Zampini PetscErrorCode PetscViewerPythonSetType(PetscViewer viewer, const char pyname[]) 21*22d6dc08SStefano Zampini { 22*22d6dc08SStefano Zampini PetscFunctionBegin; 23*22d6dc08SStefano Zampini PetscValidHeaderSpecific(viewer, PETSC_VIEWER_CLASSID, 1); 24*22d6dc08SStefano Zampini PetscAssertPointer(pyname, 2); 25*22d6dc08SStefano Zampini PetscTryMethod(viewer, "PetscViewerPythonSetType_C", (PetscViewer, const char[]), (viewer, pyname)); 26*22d6dc08SStefano Zampini PetscFunctionReturn(PETSC_SUCCESS); 27*22d6dc08SStefano Zampini } 28*22d6dc08SStefano Zampini 29*22d6dc08SStefano Zampini /*@ 30*22d6dc08SStefano Zampini PetscViewerPythonGetType - Get the Python name of a `PetscViewer` object implemented in Python. 31*22d6dc08SStefano Zampini 32*22d6dc08SStefano Zampini Not Collective 33*22d6dc08SStefano Zampini 34*22d6dc08SStefano Zampini Input Parameter: 35*22d6dc08SStefano Zampini . viewer - the viewer 36*22d6dc08SStefano Zampini 37*22d6dc08SStefano Zampini Output Parameter: 38*22d6dc08SStefano Zampini . pyname - full dotted Python name [package].module[.{class|function}] 39*22d6dc08SStefano Zampini 40*22d6dc08SStefano Zampini Level: intermediate 41*22d6dc08SStefano Zampini 42*22d6dc08SStefano Zampini .seealso: [](sec_viewers), `PetscViewer`, `PetscViewerType`, `PetscViewerCreate()`, `PetscViewerSetType()`, `PETSCVIEWERPYTHON`, `PetscPythonInitialize()`, `PetscViewerPythonSetType()` 43*22d6dc08SStefano Zampini @*/ 44*22d6dc08SStefano Zampini PetscErrorCode PetscViewerPythonGetType(PetscViewer viewer, const char *pyname[]) 45*22d6dc08SStefano Zampini { 46*22d6dc08SStefano Zampini PetscFunctionBegin; 47*22d6dc08SStefano Zampini PetscValidHeaderSpecific(viewer, PETSC_VIEWER_CLASSID, 1); 48*22d6dc08SStefano Zampini PetscAssertPointer(pyname, 2); 49*22d6dc08SStefano Zampini PetscUseMethod(viewer, "PetscViewerPythonGetType_C", (PetscViewer, const char *[]), (viewer, pyname)); 50*22d6dc08SStefano Zampini PetscFunctionReturn(PETSC_SUCCESS); 51*22d6dc08SStefano Zampini } 52*22d6dc08SStefano Zampini 53*22d6dc08SStefano Zampini /*@ 54*22d6dc08SStefano Zampini PetscViewerPythonViewObject - View a `PetscObject`. 55*22d6dc08SStefano Zampini 56*22d6dc08SStefano Zampini Collective 57*22d6dc08SStefano Zampini 58*22d6dc08SStefano Zampini Input Parameters: 59*22d6dc08SStefano Zampini + viewer - the viewer object. 60*22d6dc08SStefano Zampini - obj - the object to be viewed. 61*22d6dc08SStefano Zampini 62*22d6dc08SStefano Zampini Level: intermediate 63*22d6dc08SStefano Zampini 64*22d6dc08SStefano Zampini .seealso: [](sec_viewers), `PetscViewer`, `PetscViewerPythonCreate()` 65*22d6dc08SStefano Zampini @*/ 66*22d6dc08SStefano Zampini PetscErrorCode PetscViewerPythonViewObject(PetscViewer viewer, PetscObject obj) 67*22d6dc08SStefano Zampini { 68*22d6dc08SStefano Zampini PetscFunctionBegin; 69*22d6dc08SStefano Zampini PetscValidHeaderSpecific(viewer, PETSC_VIEWER_CLASSID, 1); 70*22d6dc08SStefano Zampini PetscValidHeader(obj, 2); 71*22d6dc08SStefano Zampini PetscTryMethod(viewer, "PetscViewerPythonViewObject_C", (PetscViewer, PetscObject), (viewer, obj)); 72*22d6dc08SStefano Zampini PetscFunctionReturn(PETSC_SUCCESS); 73*22d6dc08SStefano Zampini } 74*22d6dc08SStefano Zampini 75*22d6dc08SStefano Zampini /*@ 76*22d6dc08SStefano Zampini PetscViewerPythonCreate - Create a `PetscViewer` object implemented in Python. 77*22d6dc08SStefano Zampini 78*22d6dc08SStefano Zampini Collective 79*22d6dc08SStefano Zampini 80*22d6dc08SStefano Zampini Input Parameters: 81*22d6dc08SStefano Zampini + comm - MPI communicator 82*22d6dc08SStefano Zampini - pyname - full dotted Python name [package].module[.{class|function}] 83*22d6dc08SStefano Zampini 84*22d6dc08SStefano Zampini Output Parameter: 85*22d6dc08SStefano Zampini . viewer - the viewer 86*22d6dc08SStefano Zampini 87*22d6dc08SStefano Zampini Level: intermediate 88*22d6dc08SStefano Zampini 89*22d6dc08SStefano Zampini .seealso: [](sec_viewers), `PetscViewer`, `PetscViewerType`, `PETSCVIEWERPYTHON`, `PetscViewerPythonSetType()`, `PetscPythonInitialize()`, `PetscViewerPythonViewObject()` 90*22d6dc08SStefano Zampini @*/ 91*22d6dc08SStefano Zampini PetscErrorCode PetscViewerPythonCreate(MPI_Comm comm, const char pyname[], PetscViewer *viewer) 92*22d6dc08SStefano Zampini { 93*22d6dc08SStefano Zampini PetscFunctionBegin; 94*22d6dc08SStefano Zampini PetscAssertPointer(pyname, 2); 95*22d6dc08SStefano Zampini PetscAssertPointer(viewer, 3); 96*22d6dc08SStefano Zampini PetscCall(PetscViewerCreate(comm, viewer)); 97*22d6dc08SStefano Zampini PetscCall(PetscViewerSetType(*viewer, PETSCVIEWERPYTHON)); 98*22d6dc08SStefano Zampini PetscCall(PetscViewerPythonSetType(*viewer, pyname)); 99*22d6dc08SStefano Zampini PetscFunctionReturn(PETSC_SUCCESS); 100*22d6dc08SStefano Zampini } 101*22d6dc08SStefano Zampini 102*22d6dc08SStefano Zampini /*@C 103*22d6dc08SStefano Zampini PETSC_VIEWER_PYTHON_ - Creates a Python `PetscViewer` shared by all MPI processes in a communicator. 104*22d6dc08SStefano Zampini 105*22d6dc08SStefano Zampini Collective 106*22d6dc08SStefano Zampini 107*22d6dc08SStefano Zampini Input Parameter: 108*22d6dc08SStefano Zampini . comm - the MPI communicator to share the `PetscViewer` 109*22d6dc08SStefano Zampini 110*22d6dc08SStefano Zampini Level: developer 111*22d6dc08SStefano Zampini 112*22d6dc08SStefano Zampini Note: 113*22d6dc08SStefano Zampini Unlike almost all other PETSc routines, `PETSC_VIEWER_PYTHON_()` does not return 114*22d6dc08SStefano Zampini an error code. It is usually used in the form 115*22d6dc08SStefano Zampini .vb 116*22d6dc08SStefano Zampini XXXView(XXX object, PETSC_VIEWER_PYTHON_(comm)); 117*22d6dc08SStefano Zampini .ve 118*22d6dc08SStefano Zampini 119*22d6dc08SStefano Zampini .seealso: [](sec_viewers), `PetscViewer` 120*22d6dc08SStefano Zampini @*/ 121*22d6dc08SStefano Zampini PetscViewer PETSC_VIEWER_PYTHON_(MPI_Comm comm) 122*22d6dc08SStefano Zampini { 123*22d6dc08SStefano Zampini PetscViewer viewer; 124*22d6dc08SStefano Zampini 125*22d6dc08SStefano Zampini PetscFunctionBegin; 126*22d6dc08SStefano Zampini PetscCallNull(PetscViewerCreate(comm, &viewer)); 127*22d6dc08SStefano Zampini PetscCallNull(PetscViewerSetType(viewer, PETSCVIEWERPYTHON)); 128*22d6dc08SStefano Zampini PetscCallNull(PetscObjectRegisterDestroy((PetscObject)viewer)); 129*22d6dc08SStefano Zampini PetscFunctionReturn(viewer); 130*22d6dc08SStefano Zampini } 131*22d6dc08SStefano Zampini 132*22d6dc08SStefano Zampini /*MC 133*22d6dc08SStefano Zampini PETSCVIEWERPYTHON - A viewer implemented using Python code 134*22d6dc08SStefano Zampini 135*22d6dc08SStefano Zampini Level: beginner 136*22d6dc08SStefano Zampini 137*22d6dc08SStefano Zampini Notes: 138*22d6dc08SStefano Zampini This is the parent viewer for any implemented in Python. 139*22d6dc08SStefano Zampini 140*22d6dc08SStefano Zampini .seealso: [](sec_viewers), `PetscViewer`, `PetscViewerCreate()`, `VecView()`, `DMView()`, `DMPLEX`, `PETSCVIEWERPYVISTA` 141*22d6dc08SStefano Zampini M*/ 142