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