1af0996ceSBarry Smith #include <petsc/private/fortranimpl.h> 255fcb7f5SSatish Balay 355fcb7f5SSatish Balay #if defined(PETSC_HAVE_FORTRAN_CAPS) 455fcb7f5SSatish Balay #define petscbinaryopen_ PETSCBINARYOPEN 5c1bccaadSBarry Smith #define petsctestfile_ PETSCTESTFILE 618d1adefSBarry Smith #define petscbinaryreadint_ PETSCBINARYREADINT 718d1adefSBarry Smith #define petscbinaryreadreal_ PETSCBINARYREADREAL 818d1adefSBarry Smith #define petscbinaryreadcomplex_ PETSCBINARYREADCOMPLEX 918d1adefSBarry Smith #define petscbinaryreadrealcnt_ PETSCBINARYREADREALCNT 1018d1adefSBarry Smith #define petscbinaryreadcomplexcnt_ PETSCBINARYREADCOMPLEXCNT 11296ae53dSBarry Smith #define petscbinaryreadintcnt_ PETSCBINARYREADINTCNT 1218d1adefSBarry Smith #define petscbinaryreadint1_ PETSCBINARYREADINT1 13296ae53dSBarry Smith #define petscbinaryreadreal1_ PETSCBINARYREADREAL1 1418d1adefSBarry Smith #define petscbinaryreadcomplex1_ PETSCBINARYREADCOMPLEX1 15296ae53dSBarry Smith #define petscbinaryreadint1cnt_ PETSCBINARYREADINT1CNT 16296ae53dSBarry Smith #define petscbinaryreadreal1cnt_ PETSCBINARYREADREAL1CNT 17296ae53dSBarry Smith #define petscbinaryreadcomplex1cnt_ PETSCBINARYREADCOMPLEX1CNT 1818d1adefSBarry Smith #define petscbinarywriteint_ PETSCBINARYWRITEINT 1918d1adefSBarry Smith #define petscbinarywritereal_ PETSCBINARYWRITEREAL 2018d1adefSBarry Smith #define petscbinarywritecomplex_ PETSCBINARYWRITECOMPLEX 2118d1adefSBarry Smith #define petscbinarywriteint1_ PETSCBINARYWRITEINT1 2218d1adefSBarry Smith #define petscbinarywritereal1_ PETSCBINARYWRITEREAL1 2318d1adefSBarry Smith #define petscbinarywritecomplex1_ PETSCBINARYWRITECOMPLEX1 2455fcb7f5SSatish Balay #elif !defined(PETSC_HAVE_FORTRAN_UNDERSCORE) 2555fcb7f5SSatish Balay #define petscbinaryopen_ petscbinaryopen 26a8cc4164SSatish Balay #define petsctestfile_ petsctestfile 2718d1adefSBarry Smith #define petscbinaryreadint_ petscbinaryreadint 2818d1adefSBarry Smith #define petscbinaryreadreal_ petscbinaryreadreal 2918d1adefSBarry Smith #define petscbinaryreadcomplex_ petscbinaryreadcomplex 30296ae53dSBarry Smith #define petscbinaryreadintcnt_ petscbinaryreadintcnt 3118d1adefSBarry Smith #define petscbinaryreadrealcnt_ petscbinaryreadrealcnt 3218d1adefSBarry Smith #define petscbinaryreadcomplexcnt_ petscbinaryreadcomplexcnt 3318d1adefSBarry Smith #define petscbinaryreadint1_ petscbinaryreadint1 34296ae53dSBarry Smith #define petscbinaryreadrea11_ petscbinaryreadrea11 3518d1adefSBarry Smith #define petscbinaryreadcomplex1_ petscbinaryreadcomplex1 36296ae53dSBarry Smith #define petscbinaryreadint1cnt_ petscbinaryreadint1cnt 37296ae53dSBarry Smith #define petscbinaryreadreal1cnt_ petscbinaryreadreal1cnt 38296ae53dSBarry Smith #define petscbinaryreadcomplex1cnt_ petscbinaryreadcomplex1cnt 3918d1adefSBarry Smith #define petscbinarywriteint_ petscbinarywriteint 4018d1adefSBarry Smith #define petscbinarywritereal_ petscbinarywritereal 4118d1adefSBarry Smith #define petscbinarywritecomplex_ petscbinarywritecomplex 4218d1adefSBarry Smith #define petscbinarywriteint1_ petscbinarywriteint1 4318d1adefSBarry Smith #define petscbinarywritereal1_ petscbinarywritereal1 4418d1adefSBarry Smith #define petscbinarywritecomplex1_ petscbinarywritecomplex1 4555fcb7f5SSatish Balay #endif 4655fcb7f5SSatish Balay 47a9acdec7SBarry Smith /* Definitions of Fortran Wrapper routines */ 48a9acdec7SBarry Smith #if defined(__cplusplus) 49a9acdec7SBarry Smith extern "C" { 50a9acdec7SBarry Smith #endif 51a9acdec7SBarry Smith 52f253e43cSLisandro Dalcin PETSC_EXTERN void petscbinarywriteint_(int *fd, void *p, PetscInt *n, PetscDataType *type, int *ierr) 53a9acdec7SBarry Smith { 54f253e43cSLisandro Dalcin *ierr = PetscBinaryWrite(*fd, p, *n, *type); 55a9acdec7SBarry Smith } 56a9acdec7SBarry Smith 57f253e43cSLisandro Dalcin PETSC_EXTERN void petscbinarywritereal_(int *fd, void *p, PetscInt *n, PetscDataType *type, int *ierr) 58a9acdec7SBarry Smith { 59f253e43cSLisandro Dalcin *ierr = PetscBinaryWrite(*fd, p, *n, *type); 60a9acdec7SBarry Smith } 61a9acdec7SBarry Smith 62f253e43cSLisandro Dalcin PETSC_EXTERN void petscbinarywritecomplex_(int *fd, void *p, PetscInt *n, PetscDataType *type, int *ierr) 63a9acdec7SBarry Smith { 64f253e43cSLisandro Dalcin *ierr = PetscBinaryWrite(*fd, p, *n, *type); 65a9acdec7SBarry Smith } 66a9acdec7SBarry Smith 67f253e43cSLisandro Dalcin PETSC_EXTERN void petscbinarywriteint1_(int *fd, void *p, PetscInt *n, PetscDataType *type, int *ierr) 68a9acdec7SBarry Smith { 69f253e43cSLisandro Dalcin *ierr = PetscBinaryWrite(*fd, p, *n, *type); 70a9acdec7SBarry Smith } 71a9acdec7SBarry Smith 72f253e43cSLisandro Dalcin PETSC_EXTERN void petscbinarywritereal1_(int *fd, void *p, PetscInt *n, PetscDataType *type, int *ierr) 73a9acdec7SBarry Smith { 74f253e43cSLisandro Dalcin *ierr = PetscBinaryWrite(*fd, p, *n, *type); 75a9acdec7SBarry Smith } 76a9acdec7SBarry Smith 77f253e43cSLisandro Dalcin PETSC_EXTERN void petscbinarywritecomplex1_(int *fd, void *p, PetscInt *n, PetscDataType *type, int *ierr) 78a9acdec7SBarry Smith { 79f253e43cSLisandro Dalcin *ierr = PetscBinaryWrite(*fd, p, *n, *type); 80a9acdec7SBarry Smith } 81a9acdec7SBarry Smith 82*5975b3b6SBarry Smith PETSC_EXTERN void petscbinaryopen_(char *name, PetscFileMode *type, int *fd, PetscErrorCode *ierr, PETSC_FORTRAN_CHARLEN_T len) 8355fcb7f5SSatish Balay { 8455fcb7f5SSatish Balay char *c1; 8555fcb7f5SSatish Balay 8655fcb7f5SSatish Balay FIXCHAR(name, len, c1); 87*5975b3b6SBarry Smith *ierr = PetscBinaryOpen(c1, *type, fd); 88*5975b3b6SBarry Smith if (*ierr) return; 8955fcb7f5SSatish Balay FREECHAR(name, c1); 9055fcb7f5SSatish Balay } 9155fcb7f5SSatish Balay 9219caf8f3SSatish Balay PETSC_EXTERN void petscbinaryreadint_(int *fd, void *data, PetscInt *num, PetscInt *count, PetscDataType *type, int *ierr) 93a9acdec7SBarry Smith { 94a9acdec7SBarry Smith CHKFORTRANNULLINTEGER(count); 95*5975b3b6SBarry Smith *ierr = PetscBinaryRead(*fd, data, *num, count, *type); 96*5975b3b6SBarry Smith if (*ierr) return; 97a9acdec7SBarry Smith } 98a9acdec7SBarry Smith 9919caf8f3SSatish Balay PETSC_EXTERN void petscbinaryreadreal_(int *fd, void *data, PetscInt *num, PetscInt *count, PetscDataType *type, int *ierr) 100a9acdec7SBarry Smith { 101a9acdec7SBarry Smith CHKFORTRANNULLINTEGER(count); 102*5975b3b6SBarry Smith *ierr = PetscBinaryRead(*fd, data, *num, count, *type); 103*5975b3b6SBarry Smith if (*ierr) return; 104a9acdec7SBarry Smith } 105a9acdec7SBarry Smith 10619caf8f3SSatish Balay PETSC_EXTERN void petscbinaryreadcomplex_(int *fd, void *data, PetscInt *num, PetscInt *count, PetscDataType *type, int *ierr) 107a9acdec7SBarry Smith { 108a9acdec7SBarry Smith CHKFORTRANNULLINTEGER(count); 109*5975b3b6SBarry Smith *ierr = PetscBinaryRead(*fd, data, *num, count, *type); 110*5975b3b6SBarry Smith if (*ierr) return; 111a9acdec7SBarry Smith } 112a9acdec7SBarry Smith 11319caf8f3SSatish Balay PETSC_EXTERN void petscbinaryreadint1_(int *fd, void *data, PetscInt *num, PetscInt *count, PetscDataType *type, int *ierr) 114a9acdec7SBarry Smith { 115a9acdec7SBarry Smith CHKFORTRANNULLINTEGER(count); 116*5975b3b6SBarry Smith *ierr = PetscBinaryRead(*fd, data, *num, count, *type); 117*5975b3b6SBarry Smith if (*ierr) return; 118a9acdec7SBarry Smith } 119a9acdec7SBarry Smith 12019caf8f3SSatish Balay PETSC_EXTERN void petscbinaryreadreal1_(int *fd, void *data, PetscInt *num, PetscInt *count, PetscDataType *type, int *ierr) 121a9acdec7SBarry Smith { 122a9acdec7SBarry Smith CHKFORTRANNULLINTEGER(count); 123*5975b3b6SBarry Smith *ierr = PetscBinaryRead(*fd, data, *num, count, *type); 124*5975b3b6SBarry Smith if (*ierr) return; 125a9acdec7SBarry Smith } 126a9acdec7SBarry Smith 12719caf8f3SSatish Balay PETSC_EXTERN void petscbinaryreadcomplex1_(int *fd, void *data, PetscInt *num, PetscInt *count, PetscDataType *type, int *ierr) 1289860990eSLisandro Dalcin { 1299860990eSLisandro Dalcin CHKFORTRANNULLINTEGER(count); 130*5975b3b6SBarry Smith *ierr = PetscBinaryRead(*fd, data, *num, count, *type); 131*5975b3b6SBarry Smith if (*ierr) return; 1329860990eSLisandro Dalcin } 1339860990eSLisandro Dalcin 13419caf8f3SSatish Balay PETSC_EXTERN void petscbinaryreadintcnt_(int *fd, void *data, PetscInt *num, PetscInt *count, PetscDataType *type, int *ierr) 13518d1adefSBarry Smith { 13618d1adefSBarry Smith CHKFORTRANNULLINTEGER(count); 137*5975b3b6SBarry Smith *ierr = PetscBinaryRead(*fd, data, *num, count, *type); 138*5975b3b6SBarry Smith if (*ierr) return; 13918d1adefSBarry Smith } 14018d1adefSBarry Smith 14119caf8f3SSatish Balay PETSC_EXTERN void petscbinaryreadrealcnt_(int *fd, void *data, PetscInt *num, PetscInt *count, PetscDataType *type, int *ierr) 14218d1adefSBarry Smith { 14318d1adefSBarry Smith CHKFORTRANNULLINTEGER(count); 144*5975b3b6SBarry Smith *ierr = PetscBinaryRead(*fd, data, *num, count, *type); 145*5975b3b6SBarry Smith if (*ierr) return; 14618d1adefSBarry Smith } 14718d1adefSBarry Smith 14819caf8f3SSatish Balay PETSC_EXTERN void petscbinaryreadcomplexcnt_(int *fd, void *data, PetscInt *num, PetscInt *count, PetscDataType *type, int *ierr) 14918d1adefSBarry Smith { 15018d1adefSBarry Smith CHKFORTRANNULLINTEGER(count); 151*5975b3b6SBarry Smith *ierr = PetscBinaryRead(*fd, data, *num, count, *type); 152*5975b3b6SBarry Smith if (*ierr) return; 15318d1adefSBarry Smith } 15418d1adefSBarry Smith 15519caf8f3SSatish Balay PETSC_EXTERN void petscbinaryreadint1cnt_(int *fd, void *data, PetscInt *num, PetscInt *count, PetscDataType *type, int *ierr) 15618d1adefSBarry Smith { 15718d1adefSBarry Smith CHKFORTRANNULLINTEGER(count); 158*5975b3b6SBarry Smith *ierr = PetscBinaryRead(*fd, data, *num, count, *type); 159*5975b3b6SBarry Smith if (*ierr) return; 16018d1adefSBarry Smith } 16118d1adefSBarry Smith 16219caf8f3SSatish Balay PETSC_EXTERN void petscbinaryreadreal1cnt_(int *fd, void *data, PetscInt *num, PetscInt *count, PetscDataType *type, int *ierr) 16318d1adefSBarry Smith { 16418d1adefSBarry Smith CHKFORTRANNULLINTEGER(count); 165*5975b3b6SBarry Smith *ierr = PetscBinaryRead(*fd, data, *num, count, *type); 166*5975b3b6SBarry Smith if (*ierr) return; 16718d1adefSBarry Smith } 16818d1adefSBarry Smith 16919caf8f3SSatish Balay PETSC_EXTERN void petscbinaryreadcomplex1cnt_(int *fd, void *data, PetscInt *num, PetscInt *count, PetscDataType *type, int *ierr) 17018d1adefSBarry Smith { 17118d1adefSBarry Smith CHKFORTRANNULLINTEGER(count); 172*5975b3b6SBarry Smith *ierr = PetscBinaryRead(*fd, data, *num, count, *type); 173*5975b3b6SBarry Smith if (*ierr) return; 17418d1adefSBarry Smith } 17518d1adefSBarry Smith 17619caf8f3SSatish Balay PETSC_EXTERN void petsctestfile_(char *name, char *mode, PetscBool *flg, PetscErrorCode *ierr, PETSC_FORTRAN_CHARLEN_T len, PETSC_FORTRAN_CHARLEN_T len1) 177c1bccaadSBarry Smith { 178ca43db0aSBarry Smith char *c1; 179c1bccaadSBarry Smith 180c1bccaadSBarry Smith FIXCHAR(name, len, c1); 181*5975b3b6SBarry Smith *ierr = PetscTestFile(c1, *mode, flg); 182*5975b3b6SBarry Smith if (*ierr) return; 183c1bccaadSBarry Smith FREECHAR(name, c1); 184c1bccaadSBarry Smith } 18518d1adefSBarry Smith 18618d1adefSBarry Smith #if defined(__cplusplus) 18718d1adefSBarry Smith } 18818d1adefSBarry Smith #endif 189