xref: /petsc/src/sys/fileio/ftn-custom/zsysiof.c (revision f253e43cc674c8507d337bbb5ef3ec57f9e3fddc)
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 
52*f253e43cSLisandro Dalcin PETSC_EXTERN void  petscbinarywriteint_(int *fd,void*p,PetscInt *n,PetscDataType *type, int *ierr)
53a9acdec7SBarry Smith {
54*f253e43cSLisandro Dalcin   *ierr = PetscBinaryWrite(*fd,p,*n,*type);
55a9acdec7SBarry Smith }
56a9acdec7SBarry Smith 
57*f253e43cSLisandro Dalcin PETSC_EXTERN void  petscbinarywritereal_(int *fd,void*p,PetscInt *n,PetscDataType *type, int *ierr)
58a9acdec7SBarry Smith {
59*f253e43cSLisandro Dalcin   *ierr = PetscBinaryWrite(*fd,p,*n,*type);
60a9acdec7SBarry Smith }
61a9acdec7SBarry Smith 
62*f253e43cSLisandro Dalcin PETSC_EXTERN void  petscbinarywritecomplex_(int *fd,void*p,PetscInt *n,PetscDataType *type, int *ierr)
63a9acdec7SBarry Smith {
64*f253e43cSLisandro Dalcin   *ierr = PetscBinaryWrite(*fd,p,*n,*type);
65a9acdec7SBarry Smith }
66a9acdec7SBarry Smith 
67*f253e43cSLisandro Dalcin PETSC_EXTERN void  petscbinarywriteint1_(int *fd,void*p,PetscInt *n,PetscDataType *type, int *ierr)
68a9acdec7SBarry Smith {
69*f253e43cSLisandro Dalcin   *ierr = PetscBinaryWrite(*fd,p,*n,*type);
70a9acdec7SBarry Smith }
71a9acdec7SBarry Smith 
72*f253e43cSLisandro Dalcin PETSC_EXTERN void  petscbinarywritereal1_(int *fd,void*p,PetscInt *n,PetscDataType *type, int *ierr)
73a9acdec7SBarry Smith {
74*f253e43cSLisandro Dalcin   *ierr = PetscBinaryWrite(*fd,p,*n,*type);
75a9acdec7SBarry Smith }
76a9acdec7SBarry Smith 
77*f253e43cSLisandro Dalcin PETSC_EXTERN void  petscbinarywritecomplex1_(int *fd,void*p,PetscInt *n,PetscDataType *type, int *ierr)
78a9acdec7SBarry Smith {
79*f253e43cSLisandro Dalcin   *ierr = PetscBinaryWrite(*fd,p,*n,*type);
80a9acdec7SBarry Smith }
81a9acdec7SBarry Smith 
8219caf8f3SSatish Balay PETSC_EXTERN void petscbinaryopen_(char* name,PetscFileMode *type,int *fd,
8319caf8f3SSatish Balay                                     PetscErrorCode *ierr,PETSC_FORTRAN_CHARLEN_T len)
8455fcb7f5SSatish Balay {
8555fcb7f5SSatish Balay   char *c1;
8655fcb7f5SSatish Balay 
8755fcb7f5SSatish Balay   FIXCHAR(name,len,c1);
88d49bb8f9SBarry Smith   *ierr = PetscBinaryOpen(c1,*type,fd);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);
95a9acdec7SBarry Smith   *ierr = PetscBinaryRead(*fd,data,*num,count,*type);if (*ierr) return;
96a9acdec7SBarry Smith }
97a9acdec7SBarry Smith 
9819caf8f3SSatish Balay PETSC_EXTERN void  petscbinaryreadreal_(int *fd,void *data,PetscInt *num,PetscInt *count,PetscDataType *type,int *ierr)
99a9acdec7SBarry Smith {
100a9acdec7SBarry Smith   CHKFORTRANNULLINTEGER(count);
101a9acdec7SBarry Smith   *ierr = PetscBinaryRead(*fd,data,*num,count,*type);if (*ierr) return;
102a9acdec7SBarry Smith }
103a9acdec7SBarry Smith 
10419caf8f3SSatish Balay PETSC_EXTERN void  petscbinaryreadcomplex_(int *fd,void *data,PetscInt *num,PetscInt *count,PetscDataType *type,int *ierr)
105a9acdec7SBarry Smith {
106a9acdec7SBarry Smith   CHKFORTRANNULLINTEGER(count);
107a9acdec7SBarry Smith   *ierr = PetscBinaryRead(*fd,data,*num,count,*type);if (*ierr) return;
108a9acdec7SBarry Smith }
109a9acdec7SBarry Smith 
11019caf8f3SSatish Balay PETSC_EXTERN void  petscbinaryreadint1_(int *fd,void *data,PetscInt *num,PetscInt *count,PetscDataType *type,int *ierr)
111a9acdec7SBarry Smith {
112a9acdec7SBarry Smith   CHKFORTRANNULLINTEGER(count);
113a9acdec7SBarry Smith   *ierr = PetscBinaryRead(*fd,data,*num,count,*type);if (*ierr) return;
114a9acdec7SBarry Smith }
115a9acdec7SBarry Smith 
11619caf8f3SSatish Balay PETSC_EXTERN void  petscbinaryreadreal1_(int *fd,void *data,PetscInt *num,PetscInt *count,PetscDataType *type,int *ierr)
117a9acdec7SBarry Smith {
118a9acdec7SBarry Smith   CHKFORTRANNULLINTEGER(count);
119a9acdec7SBarry Smith   *ierr = PetscBinaryRead(*fd,data,*num,count,*type);if (*ierr) return;
120a9acdec7SBarry Smith }
121a9acdec7SBarry Smith 
12219caf8f3SSatish Balay PETSC_EXTERN void  petscbinaryreadcomplex1_(int *fd,void *data,PetscInt *num,PetscInt *count,PetscDataType *type,int *ierr)
1239860990eSLisandro Dalcin {
1249860990eSLisandro Dalcin   CHKFORTRANNULLINTEGER(count);
1259860990eSLisandro Dalcin   *ierr = PetscBinaryRead(*fd,data,*num,count,*type);if (*ierr) return;
1269860990eSLisandro Dalcin }
1279860990eSLisandro Dalcin 
12819caf8f3SSatish Balay PETSC_EXTERN void  petscbinaryreadintcnt_(int *fd,void *data,PetscInt *num,PetscInt *count,PetscDataType *type,int *ierr)
12918d1adefSBarry Smith {
13018d1adefSBarry Smith   CHKFORTRANNULLINTEGER(count);
13118d1adefSBarry Smith   *ierr = PetscBinaryRead(*fd,data,*num,count,*type);if (*ierr) return;
13218d1adefSBarry Smith }
13318d1adefSBarry Smith 
13419caf8f3SSatish Balay PETSC_EXTERN void  petscbinaryreadrealcnt_(int *fd,void *data,PetscInt *num,PetscInt *count,PetscDataType *type,int *ierr)
13518d1adefSBarry Smith {
13618d1adefSBarry Smith   CHKFORTRANNULLINTEGER(count);
13718d1adefSBarry Smith   *ierr = PetscBinaryRead(*fd,data,*num,count,*type);if (*ierr) return;
13818d1adefSBarry Smith }
13918d1adefSBarry Smith 
14019caf8f3SSatish Balay PETSC_EXTERN void  petscbinaryreadcomplexcnt_(int *fd,void *data,PetscInt *num,PetscInt *count,PetscDataType *type,int *ierr)
14118d1adefSBarry Smith {
14218d1adefSBarry Smith   CHKFORTRANNULLINTEGER(count);
14318d1adefSBarry Smith   *ierr = PetscBinaryRead(*fd,data,*num,count,*type);if (*ierr) return;
14418d1adefSBarry Smith }
14518d1adefSBarry Smith 
14619caf8f3SSatish Balay PETSC_EXTERN void  petscbinaryreadint1cnt_(int *fd,void *data,PetscInt *num,PetscInt *count,PetscDataType *type,int *ierr)
14718d1adefSBarry Smith {
14818d1adefSBarry Smith   CHKFORTRANNULLINTEGER(count);
14918d1adefSBarry Smith   *ierr = PetscBinaryRead(*fd,data,*num,count,*type);if (*ierr) return;
15018d1adefSBarry Smith }
15118d1adefSBarry Smith 
15219caf8f3SSatish Balay PETSC_EXTERN void  petscbinaryreadreal1cnt_(int *fd,void *data,PetscInt *num,PetscInt *count,PetscDataType *type,int *ierr)
15318d1adefSBarry Smith {
15418d1adefSBarry Smith   CHKFORTRANNULLINTEGER(count);
15518d1adefSBarry Smith   *ierr = PetscBinaryRead(*fd,data,*num,count,*type);if (*ierr) return;
15618d1adefSBarry Smith }
15718d1adefSBarry Smith 
15819caf8f3SSatish Balay PETSC_EXTERN void  petscbinaryreadcomplex1cnt_(int *fd,void *data,PetscInt *num,PetscInt *count,PetscDataType *type,int *ierr)
15918d1adefSBarry Smith {
16018d1adefSBarry Smith   CHKFORTRANNULLINTEGER(count);
16118d1adefSBarry Smith   *ierr = PetscBinaryRead(*fd,data,*num,count,*type);if (*ierr) return;
16218d1adefSBarry Smith }
16318d1adefSBarry Smith 
16419caf8f3SSatish Balay PETSC_EXTERN void petsctestfile_(char* name,char* mode,PetscBool *flg,PetscErrorCode *ierr,PETSC_FORTRAN_CHARLEN_T len,PETSC_FORTRAN_CHARLEN_T len1)
165c1bccaadSBarry Smith {
166ca43db0aSBarry Smith   char *c1;
167c1bccaadSBarry Smith 
168c1bccaadSBarry Smith   FIXCHAR(name,len,c1);
169d49bb8f9SBarry Smith   *ierr = PetscTestFile(c1,*mode,flg);if (*ierr) return;
170c1bccaadSBarry Smith   FREECHAR(name,c1);
171c1bccaadSBarry Smith }
17218d1adefSBarry Smith 
17318d1adefSBarry Smith #if defined(__cplusplus)
17418d1adefSBarry Smith }
17518d1adefSBarry Smith #endif
176