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 petscviewerhdf5readsizes_ PETSCVIEWERHDF5READSIZES 10 #define petscviewerhdf5writeattribute_ PETSCVIEWERHDF5WRITEATTRIBUTE 11 #define petscviewerhdf5readattribute_ PETSCVIEWERHDF5READATTRIBUTE 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 petscviewerhdf5readsizes_ petscviewerhdf5readsizes 18 #define petscviewerhdf5writeattribute_ petscviewerhdf5writeattribute 19 #define petscviewerhdf5readattribute_ petscviewerhdf5readattribute 20 #endif 21 22 PETSC_EXTERN void PETSC_STDCALL petscviewerhdf5open_(MPI_Comm *comm, char* name PETSC_MIXED_LEN(len), PetscFileMode *type, 23 PetscViewer *binv, PetscErrorCode *ierr PETSC_END_LEN(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 PETSC_STDCALL petscviewerhdf5pushgroup_(PetscViewer *viewer, char* name PETSC_MIXED_LEN(len), 33 PetscErrorCode *ierr PETSC_END_LEN(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 PETSC_STDCALL petscviewerhdf5getgroup_(PetscViewer *viewer, char* name PETSC_MIXED_LEN(len), 43 PetscErrorCode *ierr PETSC_END_LEN(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 PETSC_STDCALL petscviewerhdf5hasattribute_(PetscViewer *viewer, char* parent PETSC_MIXED_LEN(plen), 53 char* name PETSC_MIXED_LEN(nlen), PetscBool *has, PetscErrorCode *ierr PETSC_END_LEN(plen) PETSC_END_LEN(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 PETSC_STDCALL petscviewerhdf5readsizes_(PetscViewer *viewer, char* name PETSC_MIXED_LEN(len), 65 PetscInt *bs, PetscInt *N, PetscErrorCode *ierr PETSC_END_LEN(len)) 66 { 67 char *c1; 68 69 FIXCHAR(name, len, c1); 70 *ierr = PetscViewerHDF5ReadSizes(*viewer, c1, bs, N); 71 FREECHAR(name, c1); 72 } 73 74 PETSC_EXTERN void PETSC_STDCALL petscviewerhdf5writeattribute_(PetscViewer *viewer, char* parent PETSC_MIXED_LEN(plen), 75 char* name PETSC_MIXED_LEN(nlen), PetscDataType *datatype, const void *value, PetscErrorCode *ierr PETSC_END_LEN(plen) PETSC_END_LEN(nlen)) 76 { 77 char *c1, *c2; 78 79 FIXCHAR(parent, plen, c1); 80 FIXCHAR(name, nlen, c2); 81 *ierr = PetscViewerHDF5WriteAttribute(*viewer, c1, c2, *datatype, (const void *) value);if (*ierr) return; 82 FREECHAR(parent, c1); 83 FREECHAR(name, c2); 84 } 85 86 PETSC_EXTERN void PETSC_STDCALL petscviewerhdf5readattribute_(PetscViewer *viewer, char* parent PETSC_MIXED_LEN(plen), 87 char* name PETSC_MIXED_LEN(nlen), PetscDataType *datatype, void *value, PetscErrorCode *ierr PETSC_END_LEN(plen) PETSC_END_LEN(nlen)) 88 { 89 char *c1, *c2; 90 91 FIXCHAR(parent, plen, c1); 92 FIXCHAR(name, nlen, c2); 93 *ierr = PetscViewerHDF5ReadAttribute(*viewer, c1, c2, *datatype, (void *) value);if (*ierr) return; 94 FREECHAR(parent, c1); 95 FREECHAR(name, c2); 96 } 97