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