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