1 #include <petsc/private/fortranimpl.h> 2 #include <petscviewer.h> 3 4 #if defined(PETSC_HAVE_FORTRAN_CAPS) 5 #define petscviewersetformat_ PETSCVIEWERSETFORMAT 6 #define petscviewersettype_ PETSCVIEWERSETTYPE 7 #define petscviewergettype_ PETSCVIEWERGETTYPE 8 #define petscviewerpushformat_ PETSCVIEWERPUSHFORMAT 9 #define petscviewerpopformat_ PETSCVIEWERPOPFORMAT 10 #define petscviewerandformatcreate_ PETSCVIEWERANDFORMATCREATE 11 #define petscviewerandformatdestroy_ PETSCVIEWERANDFORMATDESTROY 12 #define petscviewergetsubviewer_ PETSCVIEWERGETSUBVIEWER 13 #define petscviewerrestoresubviewer_ PETSCVIEWERRESTORESUBVIEWER 14 #define petscviewierview_ PETSCVIEWERVIEW 15 #define petscviewerflush_ PETSCVIEWERFLUSH 16 #elif !defined(PETSC_HAVE_FORTRAN_UNDERSCORE) 17 #define petscviewersetformat_ petscviewersetformat 18 #define petscviewersettype_ petscviewersettype 19 #define petscviewergettype_ petscviewergettype 20 #define petscviewerpushformat_ petscviewerpushformat 21 #define petscviewerpopformat_ petscviewerpopformat 22 #define petscviewerandformatcreate_ petscviewerandformatcreate 23 #define petscviewerandformatdestroy_ petscviewerandformatdestroy 24 #define petscviewergetsubviewer_ petscviewergetsubviewer 25 #define petscviewerrestoresubviewer_ petscviewerrestoresubviewer 26 #define petscviewierview_ petscviewerview 27 #define petscviewerflush_ petscviewerflush 28 #endif 29 30 PETSC_EXTERN void petscviewerflush_(PetscViewer *viewer, int *ierr) 31 { 32 PetscViewer v; 33 PetscPatchDefaultViewers_Fortran(viewer, v); 34 *ierr = PetscViewerFlush(v); 35 } 36 37 PETSC_EXTERN void petscviewergetsubviewer_(PetscViewer *vin, MPI_Fint *comm, PetscViewer *outviewer, PetscErrorCode *ierr) 38 { 39 PetscViewer v; 40 PetscPatchDefaultViewers_Fortran(vin, v); 41 *ierr = PetscViewerGetSubViewer(v, MPI_Comm_f2c(*(comm)), outviewer); 42 } 43 44 PETSC_EXTERN void petscviewerrestoresubviewer_(PetscViewer *vin, MPI_Fint *comm, PetscViewer *outviewer, PetscErrorCode *ierr) 45 { 46 PetscViewer v; 47 PetscPatchDefaultViewers_Fortran(vin, v); 48 *ierr = PetscViewerRestoreSubViewer(v, MPI_Comm_f2c(*(comm)), outviewer); 49 } 50 51 PETSC_EXTERN PetscErrorCode PetscViewerSetFormatDeprecated(PetscViewer, PetscViewerFormat); 52 53 PETSC_EXTERN void petscviewerandformatcreate_(PetscViewer *vin, PetscViewerFormat *format, PetscViewerAndFormat **vf, PetscErrorCode *ierr) 54 { 55 PetscViewer v; 56 PetscPatchDefaultViewers_Fortran(vin, v); 57 *ierr = PetscViewerAndFormatCreate(v, *format, vf); 58 } 59 60 PETSC_EXTERN void petscviewerandformatdestroy_(PetscViewerAndFormat **vf, PetscErrorCode *ierr) 61 { 62 *ierr = PetscViewerAndFormatDestroy(vf); 63 } 64 65 PETSC_EXTERN void petscviewersetformat_(PetscViewer *vin, PetscViewerFormat *format, PetscErrorCode *ierr) 66 { 67 PetscViewer v; 68 PetscPatchDefaultViewers_Fortran(vin, v); 69 *ierr = PetscViewerSetFormatDeprecated(v, *format); 70 } 71 72 PETSC_EXTERN void petscviewersettype_(PetscViewer *x, char *type_name, PetscErrorCode *ierr, PETSC_FORTRAN_CHARLEN_T len) 73 { 74 char *t; 75 76 FIXCHAR(type_name, len, t); 77 *ierr = PetscViewerSetType(*x, t); 78 if (*ierr) return; 79 FREECHAR(type_name, t); 80 } 81 82 PETSC_EXTERN void petscviewergettype_(PetscViewer *viewer, char *type, PetscErrorCode *ierr, PETSC_FORTRAN_CHARLEN_T len) 83 { 84 const char *c1; 85 86 *ierr = PetscViewerGetType(*viewer, &c1); 87 *ierr = PetscStrncpy(type, c1, len); 88 FIXRETURNCHAR(PETSC_TRUE, type, len); 89 } 90 91 PETSC_EXTERN void petscviewerpushformat_(PetscViewer *vin, PetscViewerFormat *format, PetscErrorCode *ierr) 92 { 93 PetscViewer v; 94 PetscPatchDefaultViewers_Fortran(vin, v); 95 *ierr = PetscViewerPushFormat(v, *format); 96 } 97 98 PETSC_EXTERN void petscviewerpopformat_(PetscViewer *vin, PetscErrorCode *ierr) 99 { 100 PetscViewer v; 101 PetscPatchDefaultViewers_Fortran(vin, v); 102 *ierr = PetscViewerPopFormat(v); 103 } 104 105 PETSC_EXTERN void petscviewerview_(PetscViewer *vin, PetscViewer *viewerin, PetscErrorCode *ierr) 106 { 107 PetscViewer v, viewer; 108 PetscPatchDefaultViewers_Fortran(vin, v); 109 PetscPatchDefaultViewers_Fortran(viewerin, viewer); 110 *ierr = PetscViewerView(v, viewer); 111 } 112