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 #elif !defined(PETSC_HAVE_FORTRAN_UNDERSCORE) 12 #define petscviewerhdf5open_ petscviewerhdf5open 13 #define petscviewerhdf5pushgroup_ petscviewerhdf5pushgroup 14 #define petscviewerhdf5getgroup_ petscviewerhdf5getgroup 15 #define petscviewerhdf5hasattribute_ petscviewerhdf5hasattribute 16 #define petscviewerhdf5writeattribute_ petscviewerhdf5writeattribute 17 #define petscviewerhdf5readattribute_ petscviewerhdf5readattribute 18 #endif 19 20 PETSC_EXTERN void petscviewerhdf5open_(MPI_Comm *comm, char* name, PetscFileMode *type, 21 PetscViewer *binv, PetscErrorCode *ierr,PETSC_FORTRAN_CHARLEN_T len) 22 { 23 char *c1; 24 25 FIXCHAR(name, len, c1); 26 *ierr = PetscViewerHDF5Open(MPI_Comm_f2c(*(MPI_Fint*)&*comm), c1, *type, binv);if (*ierr) return; 27 FREECHAR(name, c1); 28 } 29 30 PETSC_EXTERN void petscviewerhdf5pushgroup_(PetscViewer *viewer, char* name, 31 PetscErrorCode *ierr,PETSC_FORTRAN_CHARLEN_T len) 32 { 33 char *c1; 34 35 FIXCHAR(name, len, c1); 36 *ierr = PetscViewerHDF5PushGroup(*viewer, c1);if (*ierr) return; 37 FREECHAR(name, c1); 38 } 39 40 PETSC_EXTERN void petscviewerhdf5getgroup_(PetscViewer *viewer, char* name, 41 PetscErrorCode *ierr,PETSC_FORTRAN_CHARLEN_T len) 42 { 43 const char *c1; 44 45 *ierr = PetscViewerHDF5GetGroup(*viewer, &c1);if (*ierr) return; 46 *ierr = PetscStrncpy(name, c1, len); 47 FIXRETURNCHAR(PETSC_TRUE,name,len); 48 } 49 50 PETSC_EXTERN void petscviewerhdf5hasattribute_(PetscViewer *viewer, char* parent, 51 char* name, PetscBool *has, PetscErrorCode *ierr,PETSC_FORTRAN_CHARLEN_T plen,PETSC_FORTRAN_CHARLEN_T nlen) 52 { 53 char *c1, *c2; 54 55 FIXCHAR(parent, plen, c1); 56 FIXCHAR(name, nlen, c2); 57 *ierr = PetscViewerHDF5HasAttribute(*viewer, c1, c2, has);if (*ierr) return; 58 FREECHAR(parent, c1); 59 FREECHAR(name, c2); 60 } 61 62 PETSC_EXTERN void petscviewerhdf5writeattribute_(PetscViewer *viewer, char* parent, 63 char* name, PetscDataType *datatype, const void *value, 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 = PetscViewerHDF5WriteAttribute(*viewer, c1, c2, *datatype, (const void *) value);if (*ierr) return; 70 FREECHAR(parent, c1); 71 FREECHAR(name, c2); 72 } 73 74 PETSC_EXTERN void petscviewerhdf5readattribute_(PetscViewer *viewer, char* parent, 75 char* name, PetscDataType *datatype, 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 = PetscViewerHDF5ReadAttribute(*viewer, c1, c2, *datatype, (void *) value);if (*ierr) return; 82 FREECHAR(parent, c1); 83 FREECHAR(name, c2); 84 } 85