15c6c1daeSBarry Smith 2af0996ceSBarry Smith #include <petsc/private/fortranimpl.h> 3665c2dedSJed Brown #include <petscviewer.h> 45c6c1daeSBarry Smith 5519f805aSKarl Rupp #if defined(PETSC_HAVE_FORTRAN_CAPS) 65c6c1daeSBarry Smith #define petsclogview_ PETSCLOGVIEW 75c6c1daeSBarry Smith #define petsclogallbegin_ PETSCLOGALLBEGIN 85c6c1daeSBarry Smith #define petsclogdestroy_ PETSCLOGDESTROY 9*bb1d7374SBarry Smith #define petsclogdefaultbegin_ PETSCLOGDEFAULTBEGIN 10*bb1d7374SBarry Smith #define petsclognestedbegin_ PETSCLOGNESTEDBEGIN 115c6c1daeSBarry Smith #define petsclogdump_ PETSCLOGDUMP 125c6c1daeSBarry Smith #define petsclogeventregister_ PETSCLOGEVENTREGISTER 135c6c1daeSBarry Smith #define petsclogstagepop_ PETSCLOGSTAGEPOP 145c6c1daeSBarry Smith #define petsclogstageregister_ PETSCLOGSTAGEREGISTER 155c6c1daeSBarry Smith #define petscclassidregister_ PETSCCLASSIDREGISTER 165c6c1daeSBarry Smith #define petsclogstagepush_ PETSCLOGSTAGEPUSH 175c6c1daeSBarry Smith #define petscgetflops_ PETSCGETFLOPS 185c6c1daeSBarry Smith #define petsclogstagegetid_ PETSCLOGSTAGEGETID 195c6c1daeSBarry Smith #define petsclogeventbegin_ PETSCLOGEVENTBEGIN 205c6c1daeSBarry Smith #define petsclogeventend_ PETSCLOGEVENTEND 215c6c1daeSBarry Smith #define petsclogflops_ PETSCLOGFLOPS 225c6c1daeSBarry Smith #elif !defined(PETSC_HAVE_FORTRAN_UNDERSCORE) 235c6c1daeSBarry Smith #define petsclogview_ petsclogview 245c6c1daeSBarry Smith #define petsclogallbegin_ petsclogallbegin 255c6c1daeSBarry Smith #define petsclogdestroy_ petsclogdestroy 26*bb1d7374SBarry Smith #define petsclogdefaultbegin_ petsclogdefaultbegin 27*bb1d7374SBarry Smith #define petsclognestedbegin_ petsclognestedbegin 285c6c1daeSBarry Smith #define petsclogeventregister_ petsclogeventregister 295c6c1daeSBarry Smith #define petsclogdump_ petsclogdump 305c6c1daeSBarry Smith #define petsclogstagepop_ petsclogstagepop 315c6c1daeSBarry Smith #define petsclogstageregister_ petsclogstageregister 325c6c1daeSBarry Smith #define petscclassidregister_ petscclassidregister 335c6c1daeSBarry Smith #define petsclogstagepush_ petsclogstagepush 345c6c1daeSBarry Smith #define petscgetflops_ petscgetflops 355c6c1daeSBarry Smith #define petsclogstagegetid_ petsclogstagegetid 365c6c1daeSBarry Smith #define petsclogeventbegin_ petsclogeventbegin 375c6c1daeSBarry Smith #define petsclogeventend_ petsclogeventend 385c6c1daeSBarry Smith #define petsclogflops_ petsclogflops 395c6c1daeSBarry Smith #endif 405c6c1daeSBarry Smith 418cc058d9SJed Brown PETSC_EXTERN void PETSC_STDCALL petsclogeventbegin_(PetscLogEvent *e,PetscErrorCode *ierr) 42f5f7c1b9SKarl Rupp { 435c6c1daeSBarry Smith *ierr = PetscLogEventBegin(*e,0,0,0,0); 445c6c1daeSBarry Smith } 455c6c1daeSBarry Smith 468cc058d9SJed Brown PETSC_EXTERN void PETSC_STDCALL petsclogeventend_(PetscLogEvent *e,PetscErrorCode *ierr) 47f5f7c1b9SKarl Rupp { 485c6c1daeSBarry Smith *ierr = PetscLogEventEnd(*e,0,0,0,0); 495c6c1daeSBarry Smith } 505c6c1daeSBarry Smith 518cc058d9SJed Brown PETSC_EXTERN void PETSC_STDCALL petsclogflops_(PetscLogDouble *f,PetscErrorCode *ierr) 52f5f7c1b9SKarl Rupp { 535c6c1daeSBarry Smith *ierr = PetscLogFlops(*f); 545c6c1daeSBarry Smith } 555c6c1daeSBarry Smith 568cc058d9SJed Brown PETSC_EXTERN void PETSC_STDCALL petsclogview_(PetscViewer *viewer,PetscErrorCode *ierr PETSC_END_LEN(len)) 575c6c1daeSBarry Smith { 583bc0b13bSBarry Smith #if defined(PETSC_USE_LOG) 595c6c1daeSBarry Smith PetscViewer v; 605c6c1daeSBarry Smith PetscPatchDefaultViewers_Fortran(viewer,v); 615c6c1daeSBarry Smith *ierr = PetscLogView(v); 623bc0b13bSBarry Smith #endif 635c6c1daeSBarry Smith } 645c6c1daeSBarry Smith 658cc058d9SJed Brown PETSC_EXTERN void PETSC_STDCALL petsclogdump_(CHAR name PETSC_MIXED_LEN(len),PetscErrorCode *ierr PETSC_END_LEN(len)) 665c6c1daeSBarry Smith { 675c6c1daeSBarry Smith #if defined(PETSC_USE_LOG) 685c6c1daeSBarry Smith char *t1; 695c6c1daeSBarry Smith FIXCHAR(name,len,t1); 705c6c1daeSBarry Smith *ierr = PetscLogDump(t1); 715c6c1daeSBarry Smith FREECHAR(name,t1); 725c6c1daeSBarry Smith #endif 735c6c1daeSBarry Smith } 748cc058d9SJed Brown PETSC_EXTERN void PETSC_STDCALL petsclogeventregister_(CHAR string PETSC_MIXED_LEN(len),PetscClassId *classid,PetscLogEvent *e,PetscErrorCode *ierr PETSC_END_LEN(len)) 755c6c1daeSBarry Smith { 765c6c1daeSBarry Smith #if defined(PETSC_USE_LOG) 775c6c1daeSBarry Smith char *t1; 785c6c1daeSBarry Smith FIXCHAR(string,len,t1); 795c6c1daeSBarry Smith *ierr = PetscLogEventRegister(t1,*classid,e); 805c6c1daeSBarry Smith FREECHAR(string,t1); 815c6c1daeSBarry Smith #endif 825c6c1daeSBarry Smith } 838cc058d9SJed Brown PETSC_EXTERN void PETSC_STDCALL petscclassidregister_(CHAR string PETSC_MIXED_LEN(len),PetscClassId *e,PetscErrorCode *ierr PETSC_END_LEN(len)) 845c6c1daeSBarry Smith { 855c6c1daeSBarry Smith #if defined(PETSC_USE_LOG) 865c6c1daeSBarry Smith char *t1; 875c6c1daeSBarry Smith FIXCHAR(string,len,t1); 885c6c1daeSBarry Smith 895c6c1daeSBarry Smith *ierr = PetscClassIdRegister(t1,e); 905c6c1daeSBarry Smith FREECHAR(string,t1); 915c6c1daeSBarry Smith #endif 925c6c1daeSBarry Smith } 935c6c1daeSBarry Smith 948cc058d9SJed Brown PETSC_EXTERN void PETSC_STDCALL petsclogallbegin_(PetscErrorCode *ierr) 95f5f7c1b9SKarl Rupp { 965c6c1daeSBarry Smith #if defined(PETSC_USE_LOG) 975c6c1daeSBarry Smith *ierr = PetscLogAllBegin(); 985c6c1daeSBarry Smith #endif 995c6c1daeSBarry Smith } 1005c6c1daeSBarry Smith 1018cc058d9SJed Brown PETSC_EXTERN void PETSC_STDCALL petsclogdestroy_(PetscErrorCode *ierr) 102f5f7c1b9SKarl Rupp { 1035c6c1daeSBarry Smith #if defined(PETSC_USE_LOG) 1045c6c1daeSBarry Smith *ierr = PetscLogDestroy(); 1055c6c1daeSBarry Smith #endif 1065c6c1daeSBarry Smith } 1075c6c1daeSBarry Smith 108*bb1d7374SBarry Smith PETSC_EXTERN void PETSC_STDCALL petsclogdefaultbegin_(PetscErrorCode *ierr) 109f5f7c1b9SKarl Rupp { 1105c6c1daeSBarry Smith #if defined(PETSC_USE_LOG) 111*bb1d7374SBarry Smith *ierr = PetscLogDefaultBegin(); 112*bb1d7374SBarry Smith #endif 113*bb1d7374SBarry Smith } 114*bb1d7374SBarry Smith 115*bb1d7374SBarry Smith PETSC_EXTERN void PETSC_STDCALL petsclognestedbegin_(PetscErrorCode *ierr) 116*bb1d7374SBarry Smith { 117*bb1d7374SBarry Smith #if defined(PETSC_USE_LOG) 118*bb1d7374SBarry Smith *ierr = PetscLogNestedBegin(); 1195c6c1daeSBarry Smith #endif 1205c6c1daeSBarry Smith } 1215c6c1daeSBarry Smith 1228cc058d9SJed Brown PETSC_EXTERN void PETSC_STDCALL petsclogstagepop_(PetscErrorCode *ierr) 1235c6c1daeSBarry Smith { 1245c6c1daeSBarry Smith #if defined(PETSC_USE_LOG) 1255c6c1daeSBarry Smith *ierr = PetscLogStagePop(); 1265c6c1daeSBarry Smith #endif 1275c6c1daeSBarry Smith } 1285c6c1daeSBarry Smith 1298cc058d9SJed Brown PETSC_EXTERN void PETSC_STDCALL petsclogstageregister_(CHAR sname PETSC_MIXED_LEN(len),PetscLogStage *stage,PetscErrorCode *ierr PETSC_END_LEN(len)) 1305c6c1daeSBarry Smith { 1315c6c1daeSBarry Smith #if defined(PETSC_USE_LOG) 1325c6c1daeSBarry Smith char *t; 1335c6c1daeSBarry Smith FIXCHAR(sname,len,t); 1345c6c1daeSBarry Smith *ierr = PetscLogStageRegister(t,stage); 1355c6c1daeSBarry Smith FREECHAR(sname,t); 1365c6c1daeSBarry Smith #endif 1375c6c1daeSBarry Smith } 1385c6c1daeSBarry Smith 1398cc058d9SJed Brown PETSC_EXTERN void PETSC_STDCALL petsclogstagepush_(PetscLogStage *stage,PetscErrorCode *ierr) 140f5f7c1b9SKarl Rupp { 1415c6c1daeSBarry Smith #if defined(PETSC_USE_LOG) 1425c6c1daeSBarry Smith *ierr = PetscLogStagePush(*stage); 1435c6c1daeSBarry Smith #endif 1445c6c1daeSBarry Smith } 1455c6c1daeSBarry Smith 1468cc058d9SJed Brown PETSC_EXTERN void PETSC_STDCALL petscgetflops_(PetscLogDouble *d,PetscErrorCode *ierr) 1475c6c1daeSBarry Smith { 1485c6c1daeSBarry Smith #if defined(PETSC_USE_LOG) 1495c6c1daeSBarry Smith *ierr = PetscGetFlops(d); 1505c6c1daeSBarry Smith #else 1515c6c1daeSBarry Smith ierr = 0; 1525c6c1daeSBarry Smith *d = 0.0; 1535c6c1daeSBarry Smith #endif 1545c6c1daeSBarry Smith } 1555c6c1daeSBarry Smith 1568cc058d9SJed Brown PETSC_EXTERN void PETSC_STDCALL petsclogstagegetid_(CHAR sname PETSC_MIXED_LEN(len),PetscLogStage *stage, int *ierr PETSC_END_LEN(len)) 1575c6c1daeSBarry Smith { 1585c6c1daeSBarry Smith #if defined(PETSC_USE_LOG) 1595c6c1daeSBarry Smith char *t; 1605c6c1daeSBarry Smith FIXCHAR(sname,len,t); 1615c6c1daeSBarry Smith *ierr = PetscLogStageGetId(t,stage); 1625c6c1daeSBarry Smith FREECHAR(sname,t); 1635c6c1daeSBarry Smith #endif 1645c6c1daeSBarry Smith } 165