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 #elif !defined(PETSC_HAVE_FORTRAN_UNDERSCORE) 16 #define petscviewersetformat_ petscviewersetformat 17 #define petscviewersettype_ petscviewersettype 18 #define petscviewergettype_ petscviewergettype 19 #define petscviewerpushformat_ petscviewerpushformat 20 #define petscviewerpopformat_ petscviewerpopformat 21 #define petscviewerandformatcreate_ petscviewerandformatcreate 22 #define petscviewerandformatdestroy_ petscviewerandformatdestroy 23 #define petscviewergetsubviewer_ petscviewergetsubviewer 24 #define petscviewerrestoresubviewer_ petscviewerrestoresubviewer 25 #define petscviewierview_ petscviewerview 26 #endif 27 28 PETSC_EXTERN void petscviewergetsubviewer_(PetscViewer *vin, MPI_Fint *comm, PetscViewer *outviewer, PetscErrorCode *ierr) 29 { 30 PetscViewer v; 31 PetscPatchDefaultViewers_Fortran(vin, v); 32 *ierr = PetscViewerGetSubViewer(v, MPI_Comm_f2c(*(comm)), outviewer); 33 } 34 35 PETSC_EXTERN void petscviewerrestoresubviewer_(PetscViewer *vin, MPI_Fint *comm, PetscViewer *outviewer, PetscErrorCode *ierr) 36 { 37 PetscViewer v; 38 PetscPatchDefaultViewers_Fortran(vin, v); 39 *ierr = PetscViewerRestoreSubViewer(v, MPI_Comm_f2c(*(comm)), outviewer); 40 } 41 42 PETSC_EXTERN PetscErrorCode PetscViewerSetFormatDeprecated(PetscViewer, PetscViewerFormat); 43 44 PETSC_EXTERN void petscviewerandformatcreate_(PetscViewer *vin, PetscViewerFormat *format, PetscViewerAndFormat **vf, PetscErrorCode *ierr) 45 { 46 PetscViewer v; 47 PetscPatchDefaultViewers_Fortran(vin, v); 48 *ierr = PetscViewerAndFormatCreate(v, *format, vf); 49 } 50 51 PETSC_EXTERN void petscviewerandformatdestroy_(PetscViewerAndFormat **vf, PetscErrorCode *ierr) 52 { 53 *ierr = PetscViewerAndFormatDestroy(vf); 54 } 55 56 PETSC_EXTERN void petscviewersetformat_(PetscViewer *vin, PetscViewerFormat *format, PetscErrorCode *ierr) 57 { 58 PetscViewer v; 59 PetscPatchDefaultViewers_Fortran(vin, v); 60 *ierr = PetscViewerSetFormatDeprecated(v, *format); 61 } 62 63 PETSC_EXTERN void petscviewersettype_(PetscViewer *x, char *type_name, PetscErrorCode *ierr, PETSC_FORTRAN_CHARLEN_T len) 64 { 65 char *t; 66 67 FIXCHAR(type_name, len, t); 68 *ierr = PetscViewerSetType(*x, t); 69 if (*ierr) return; 70 FREECHAR(type_name, t); 71 } 72 73 PETSC_EXTERN void petscviewergettype_(PetscViewer *viewer, char *type, PetscErrorCode *ierr, PETSC_FORTRAN_CHARLEN_T len) 74 { 75 const char *c1; 76 77 *ierr = PetscViewerGetType(*viewer, &c1); 78 *ierr = PetscStrncpy(type, c1, len); 79 FIXRETURNCHAR(PETSC_TRUE, type, len); 80 } 81 82 PETSC_EXTERN void petscviewerpushformat_(PetscViewer *vin, PetscViewerFormat *format, PetscErrorCode *ierr) 83 { 84 PetscViewer v; 85 PetscPatchDefaultViewers_Fortran(vin, v); 86 *ierr = PetscViewerPushFormat(v, *format); 87 } 88 89 PETSC_EXTERN void petscviewerpopformat_(PetscViewer *vin, PetscErrorCode *ierr) 90 { 91 PetscViewer v; 92 PetscPatchDefaultViewers_Fortran(vin, v); 93 *ierr = PetscViewerPopFormat(v); 94 } 95 96 PETSC_EXTERN void petscviewerview_(PetscViewer *vin, PetscViewer *viewerin, PetscErrorCode *ierr) 97 { 98 PetscViewer v, viewer; 99 PetscPatchDefaultViewers_Fortran(vin, v); 100 PetscPatchDefaultViewers_Fortran(viewerin, viewer); 101 *ierr = PetscViewerView(v, viewer); 102 } 103