1 #include <petsc/private/fortranimpl.h> 2 #include <petscviewerhdf5.h> 3 4 #if defined(PETSC_HAVE_FORTRAN_CAPS) 5 #define petscviewerhdf5open_ PETSCVIEWERHDF5OPEN 6 #define petscviewerhdf5pushgroup_ PETSCVIEWERHDF5PUSHGROUP 7 #define petscviewerhdf5getgroup_ PETSCVIEWERHDF5GETGROUP 8 #define petscviewerhdf5hasattribute_ PETSCVIEWERHDF5HASATTRIBUTE 9 #define petscviewerhdf5writeattribute_ PETSCVIEWERHDF5WRITEATTRIBUTE 10 #define petscviewerhdf5readattribute_ PETSCVIEWERHDF5READATTRIBUTE 11 #define petscviewerhdf5hasgroup_ PETSCVIEWERHDF5HASGROUP 12 #elif !defined(PETSC_HAVE_FORTRAN_UNDERSCORE) 13 #define petscviewerhdf5open_ petscviewerhdf5open 14 #define petscviewerhdf5pushgroup_ petscviewerhdf5pushgroup 15 #define petscviewerhdf5getgroup_ petscviewerhdf5getgroup 16 #define petscviewerhdf5hasattribute_ petscviewerhdf5hasattribute 17 #define petscviewerhdf5writeattribute_ petscviewerhdf5writeattribute 18 #define petscviewerhdf5readattribute_ petscviewerhdf5readattribute 19 #define petscviewerhdf5hasgroup_ petscviewerhdf5hasgroup 20 #endif 21 22 PETSC_EXTERN void petscviewerhdf5open_(MPI_Comm *comm, char* name, PetscFileMode *type, 23 PetscViewer *binv, PetscErrorCode *ierr,PETSC_FORTRAN_CHARLEN_T len) 24 { 25 char *c1; 26 27 FIXCHAR(name, len, c1); 28 *ierr = PetscViewerHDF5Open(MPI_Comm_f2c(*(MPI_Fint*)&*comm), c1, *type, binv);if (*ierr) return; 29 FREECHAR(name, c1); 30 } 31 32 PETSC_EXTERN void petscviewerhdf5pushgroup_(PetscViewer *viewer, char* name, 33 PetscErrorCode *ierr,PETSC_FORTRAN_CHARLEN_T len) 34 { 35 char *c1; 36 37 FIXCHAR(name, len, c1); 38 *ierr = PetscViewerHDF5PushGroup(*viewer, c1);if (*ierr) return; 39 FREECHAR(name, c1); 40 } 41 42 PETSC_EXTERN void petscviewerhdf5getgroup_(PetscViewer *viewer, char* name, 43 PetscErrorCode *ierr,PETSC_FORTRAN_CHARLEN_T len) 44 { 45 const char *c1; 46 47 *ierr = PetscViewerHDF5GetGroup(*viewer, &c1);if (*ierr) return; 48 *ierr = PetscStrncpy(name, c1, len); 49 FIXRETURNCHAR(PETSC_TRUE,name,len); 50 } 51 52 PETSC_EXTERN void petscviewerhdf5hasattribute_(PetscViewer *viewer, char* parent, 53 char* name, PetscBool *has, PetscErrorCode *ierr,PETSC_FORTRAN_CHARLEN_T plen,PETSC_FORTRAN_CHARLEN_T nlen) 54 { 55 char *c1, *c2; 56 57 FIXCHAR(parent, plen, c1); 58 FIXCHAR(name, nlen, c2); 59 *ierr = PetscViewerHDF5HasAttribute(*viewer, c1, c2, has);if (*ierr) return; 60 FREECHAR(parent, c1); 61 FREECHAR(name, c2); 62 } 63 64 PETSC_EXTERN void petscviewerhdf5writeattribute_(PetscViewer *viewer, char* parent, 65 char* name, PetscDataType *datatype, const void *value, PetscErrorCode *ierr,PETSC_FORTRAN_CHARLEN_T plen,PETSC_FORTRAN_CHARLEN_T nlen) 66 { 67 char *c1, *c2; 68 69 FIXCHAR(parent, plen, c1); 70 FIXCHAR(name, nlen, c2); 71 *ierr = PetscViewerHDF5WriteAttribute(*viewer, c1, c2, *datatype, (const void *) value);if (*ierr) return; 72 FREECHAR(parent, c1); 73 FREECHAR(name, c2); 74 } 75 76 PETSC_EXTERN void petscviewerhdf5readattribute_(PetscViewer *viewer, char* parent, 77 char* name, PetscDataType *datatype, void *value, PetscErrorCode *ierr,PETSC_FORTRAN_CHARLEN_T plen,PETSC_FORTRAN_CHARLEN_T nlen) 78 { 79 char *c1, *c2; 80 81 FIXCHAR(parent, plen, c1); 82 FIXCHAR(name, nlen, c2); 83 *ierr = PetscViewerHDF5ReadAttribute(*viewer, c1, c2, *datatype, (void *) value);if (*ierr) return; 84 FREECHAR(parent, c1); 85 FREECHAR(name, c2); 86 } 87 88 PETSC_EXTERN void petscviewerhdf5hasgroup_(PetscViewer *viewer, char* path, PetscBool *has, PetscErrorCode *ierr, PETSC_FORTRAN_CHARLEN_T len) 89 { 90 char *c1; 91 92 FIXCHAR(path, len, c1); 93 *ierr = PetscViewerHDF5HasGroup(*viewer, c1, has);if (*ierr) return; 94 FREECHAR(path, c1); 95 } 96