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