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 petscviewerhdf5hasdataset_ PETSCVIEWERHDF5HASDATASET 9 #define petscviewerhdf5hasattribute_ PETSCVIEWERHDF5HASATTRIBUTE 10 #define petscviewerhdf5writeattribute_ PETSCVIEWERHDF5WRITEATTRIBUTE 11 #define petscviewerhdf5readattribute_ PETSCVIEWERHDF5READATTRIBUTE 12 #define petscviewerhdf5hasgroup_ PETSCVIEWERHDF5HASGROUP 13 #define petscviewerhdf5opengroup_ PETSCVIEWERHDF5OPENGROUP 14 #elif !defined(PETSC_HAVE_FORTRAN_UNDERSCORE) 15 #define petscviewerhdf5open_ petscviewerhdf5open 16 #define petscviewerhdf5pushgroup_ petscviewerhdf5pushgroup 17 #define petscviewerhdf5getgroup_ petscviewerhdf5getgroup 18 #define petscviewerhdf5hasdataset_ petscviewerhdf5hasdataset 19 #define petscviewerhdf5hasattribute_ petscviewerhdf5hasattribute 20 #define petscviewerhdf5writeattribute_ petscviewerhdf5writeattribute 21 #define petscviewerhdf5readattribute_ petscviewerhdf5readattribute 22 #define petscviewerhdf5hasgroup_ petscviewerhdf5hasgroup 23 #define petscviewerhdf5opengroup_ petscviewerhdf5opengroup 24 #endif 25 26 PETSC_EXTERN void petscviewerhdf5open_(MPI_Comm *comm, char* name, PetscFileMode *type, 27 PetscViewer *binv, PetscErrorCode *ierr,PETSC_FORTRAN_CHARLEN_T len) 28 { 29 char *c1; 30 31 FIXCHAR(name, len, c1); 32 *ierr = PetscViewerHDF5Open(MPI_Comm_f2c(*(MPI_Fint*)&*comm), c1, *type, binv);if (*ierr) return; 33 FREECHAR(name, c1); 34 } 35 36 PETSC_EXTERN void petscviewerhdf5pushgroup_(PetscViewer *viewer, char* name, 37 PetscErrorCode *ierr,PETSC_FORTRAN_CHARLEN_T len) 38 { 39 char *c1; 40 41 FIXCHAR(name, len, c1); 42 *ierr = PetscViewerHDF5PushGroup(*viewer, c1);if (*ierr) return; 43 FREECHAR(name, c1); 44 } 45 46 PETSC_EXTERN void petscviewerhdf5getgroup_(PetscViewer *viewer, char* path, char* abspath, 47 PetscErrorCode *ierr, PETSC_FORTRAN_CHARLEN_T len0, PETSC_FORTRAN_CHARLEN_T len1) 48 { 49 char *c0; 50 char *c1; 51 52 FIXCHAR(path, len0, c0); 53 *ierr = PetscViewerHDF5GetGroup(*viewer, c0, &c1);if (*ierr) return; 54 *ierr = PetscStrncpy(abspath, c1, len1);if (*ierr) return; 55 *ierr = PetscFree(c1);if (*ierr) return; 56 FREECHAR(path, c0); 57 FIXRETURNCHAR(PETSC_TRUE,abspath,len1); 58 } 59 60 PETSC_EXTERN void petscviewerhdf5hasattribute_(PetscViewer *viewer, char* parent, 61 char* name, PetscBool *has, PetscErrorCode *ierr,PETSC_FORTRAN_CHARLEN_T plen,PETSC_FORTRAN_CHARLEN_T nlen) 62 { 63 char *c1, *c2; 64 65 FIXCHAR(parent, plen, c1); 66 FIXCHAR(name, nlen, c2); 67 *ierr = PetscViewerHDF5HasAttribute(*viewer, c1, c2, has);if (*ierr) return; 68 FREECHAR(parent, c1); 69 FREECHAR(name, c2); 70 } 71 72 PETSC_EXTERN void petscviewerhdf5writeattribute_(PetscViewer *viewer, char* parent, 73 char* name, PetscDataType *datatype, const void *value, PetscErrorCode *ierr,PETSC_FORTRAN_CHARLEN_T plen,PETSC_FORTRAN_CHARLEN_T nlen) 74 { 75 char *c1, *c2; 76 77 FIXCHAR(parent, plen, c1); 78 FIXCHAR(name, nlen, c2); 79 *ierr = PetscViewerHDF5WriteAttribute(*viewer, c1, c2, *datatype, value);if (*ierr) return; 80 FREECHAR(parent, c1); 81 FREECHAR(name, c2); 82 } 83 84 PETSC_EXTERN void petscviewerhdf5readattribute_(PetscViewer *viewer, char* parent, 85 char* name, PetscDataType *datatype, void *defaultValue, void *value, PetscErrorCode *ierr,PETSC_FORTRAN_CHARLEN_T plen,PETSC_FORTRAN_CHARLEN_T nlen) 86 { 87 char *c1, *c2; 88 89 FIXCHAR(parent, plen, c1); 90 FIXCHAR(name, nlen, c2); 91 *ierr = PetscViewerHDF5ReadAttribute(*viewer, c1, c2, *datatype, defaultValue, value);if (*ierr) return; 92 FREECHAR(parent, c1); 93 FREECHAR(name, c2); 94 } 95 96 PETSC_EXTERN void petscviewerhdf5hasdataset_(PetscViewer *viewer, char* path, PetscBool *has, PetscErrorCode *ierr, PETSC_FORTRAN_CHARLEN_T len) 97 { 98 char *c1; 99 100 FIXCHAR(path, len, c1); 101 *ierr = PetscViewerHDF5HasDataset(*viewer, c1, has);if (*ierr) return; 102 FREECHAR(path, c1); 103 } 104 105 PETSC_EXTERN void petscviewerhdf5hasgroup_(PetscViewer *viewer, char* path, PetscBool *has, PetscErrorCode *ierr, PETSC_FORTRAN_CHARLEN_T len) 106 { 107 char *c1; 108 109 FIXCHAR(path, len, c1); 110 *ierr = PetscViewerHDF5HasGroup(*viewer, c1, has);if (*ierr) return; 111 FREECHAR(path, c1); 112 } 113 114 PETSC_EXTERN void petscviewerhdf5opengroup_(PetscViewer *viewer, char path[], hid_t *fileId, hid_t *groupId, int *ierr, PETSC_FORTRAN_CHARLEN_T len) 115 { 116 char *c1; 117 118 FIXCHAR(path, len, c1); 119 *ierr = PetscViewerHDF5OpenGroup(*viewer, c1, fileId, groupId); 120 FREECHAR(path, c1); 121 } 122