1 #include <petsc/private/fortranimpl.h> 2 #include <petscviewer.h> 3 4 #if defined(PETSC_HAVE_FORTRAN_CAPS) 5 #define petsclogview_ PETSCLOGVIEW 6 #define petsclogallbegin_ PETSCLOGALLBEGIN 7 #define petsclogdefaultbegin_ PETSCLOGDEFAULTBEGIN 8 #define petsclognestedbegin_ PETSCLOGNESTEDBEGIN 9 #define petsclogdump_ PETSCLOGDUMP 10 #define petsclogeventregister_ PETSCLOGEVENTREGISTER 11 #define petsclogstagepop_ PETSCLOGSTAGEPOP 12 #define petsclogstageregister_ PETSCLOGSTAGEREGISTER 13 #define petscclassidregister_ PETSCCLASSIDREGISTER 14 #define petsclogstagepush_ PETSCLOGSTAGEPUSH 15 #define petscgetflops_ PETSCGETFLOPS 16 #define petsclogstagegetid_ PETSCLOGSTAGEGETID 17 #define petsclogeventbegin_ PETSCLOGEVENTBEGIN 18 #define petsclogeventend_ PETSCLOGEVENTEND 19 #elif !defined(PETSC_HAVE_FORTRAN_UNDERSCORE) 20 #define petsclogview_ petsclogview 21 #define petsclogallbegin_ petsclogallbegin 22 #define petsclogdefaultbegin_ petsclogdefaultbegin 23 #define petsclognestedbegin_ petsclognestedbegin 24 #define petsclogeventregister_ petsclogeventregister 25 #define petsclogdump_ petsclogdump 26 #define petsclogstagepop_ petsclogstagepop 27 #define petsclogstageregister_ petsclogstageregister 28 #define petscclassidregister_ petscclassidregister 29 #define petsclogstagepush_ petsclogstagepush 30 #define petscgetflops_ petscgetflops 31 #define petsclogstagegetid_ petsclogstagegetid 32 #define petsclogeventbegin_ petsclogeventbegin 33 #define petsclogeventend_ petsclogeventend 34 #endif 35 36 PETSC_EXTERN void petsclogeventbegin_(PetscLogEvent *e, PetscErrorCode *ierr) 37 { 38 *ierr = PetscLogEventBegin(*e, 0, 0, 0, 0); 39 } 40 41 PETSC_EXTERN void petsclogeventend_(PetscLogEvent *e, PetscErrorCode *ierr) 42 { 43 *ierr = PetscLogEventEnd(*e, 0, 0, 0, 0); 44 } 45 46 PETSC_EXTERN void petsclogview_(PetscViewer *viewer, PetscErrorCode *ierr, PETSC_FORTRAN_CHARLEN_T len) 47 { 48 #if defined(PETSC_USE_LOG) 49 PetscViewer v; 50 PetscPatchDefaultViewers_Fortran(viewer, v); 51 *ierr = PetscLogView(v); 52 #endif 53 } 54 55 PETSC_EXTERN void petsclogdump_(char *name, PetscErrorCode *ierr, PETSC_FORTRAN_CHARLEN_T len) 56 { 57 #if defined(PETSC_USE_LOG) 58 char *t1; 59 FIXCHAR(name, len, t1); 60 *ierr = PetscLogDump(t1); 61 if (*ierr) return; 62 FREECHAR(name, t1); 63 #endif 64 } 65 PETSC_EXTERN void petsclogeventregister_(char *string, PetscClassId *classid, PetscLogEvent *e, PetscErrorCode *ierr, PETSC_FORTRAN_CHARLEN_T len) 66 { 67 #if defined(PETSC_USE_LOG) 68 char *t1; 69 FIXCHAR(string, len, t1); 70 *ierr = PetscLogEventRegister(t1, *classid, e); 71 if (*ierr) return; 72 FREECHAR(string, t1); 73 #endif 74 } 75 PETSC_EXTERN void petscclassidregister_(char *string, PetscClassId *e, PetscErrorCode *ierr, PETSC_FORTRAN_CHARLEN_T len) 76 { 77 #if defined(PETSC_USE_LOG) 78 char *t1; 79 FIXCHAR(string, len, t1); 80 81 *ierr = PetscClassIdRegister(t1, e); 82 if (*ierr) return; 83 FREECHAR(string, t1); 84 #endif 85 } 86 87 PETSC_EXTERN void petsclogallbegin_(PetscErrorCode *ierr) 88 { 89 #if defined(PETSC_USE_LOG) 90 *ierr = PetscLogAllBegin(); 91 #endif 92 } 93 94 PETSC_EXTERN void petsclogdefaultbegin_(PetscErrorCode *ierr) 95 { 96 #if defined(PETSC_USE_LOG) 97 *ierr = PetscLogDefaultBegin(); 98 #endif 99 } 100 101 PETSC_EXTERN void petsclognestedbegin_(PetscErrorCode *ierr) 102 { 103 #if defined(PETSC_USE_LOG) 104 *ierr = PetscLogNestedBegin(); 105 #endif 106 } 107 108 PETSC_EXTERN void petsclogstagepop_(PetscErrorCode *ierr) 109 { 110 #if defined(PETSC_USE_LOG) 111 *ierr = PetscLogStagePop(); 112 #endif 113 } 114 115 PETSC_EXTERN void petsclogstageregister_(char *sname, PetscLogStage *stage, PetscErrorCode *ierr, PETSC_FORTRAN_CHARLEN_T len) 116 { 117 #if defined(PETSC_USE_LOG) 118 char *t; 119 FIXCHAR(sname, len, t); 120 *ierr = PetscLogStageRegister(t, stage); 121 if (*ierr) return; 122 FREECHAR(sname, t); 123 #endif 124 } 125 126 PETSC_EXTERN void petsclogstagepush_(PetscLogStage *stage, PetscErrorCode *ierr) 127 { 128 #if defined(PETSC_USE_LOG) 129 *ierr = PetscLogStagePush(*stage); 130 #endif 131 } 132 133 PETSC_EXTERN void petscgetflops_(PetscLogDouble *d, PetscErrorCode *ierr) 134 { 135 #if defined(PETSC_USE_LOG) 136 *ierr = PetscGetFlops(d); 137 #else 138 *ierr = PETSC_SUCCESS; 139 *d = 0.0; 140 #endif 141 } 142 143 PETSC_EXTERN void petsclogstagegetid_(char *sname, PetscLogStage *stage, PetscErrorCode *ierr, PETSC_FORTRAN_CHARLEN_T len) 144 { 145 #if defined(PETSC_USE_LOG) 146 char *t; 147 FIXCHAR(sname, len, t); 148 *ierr = PetscLogStageGetId(t, stage); 149 if (*ierr) return; 150 FREECHAR(sname, t); 151 #endif 152 } 153