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