1af0996ceSBarry Smith #include <petsc/private/fortranimpl.h> 2d70abbfaSBarry Smith #include <petscviewerhdf5.h> 35c6c1daeSBarry Smith 45c6c1daeSBarry Smith #if defined(PETSC_HAVE_FORTRAN_CAPS) 55c6c1daeSBarry Smith #define petscviewerhdf5open_ PETSCVIEWERHDF5OPEN 63ef9c667SSatish Balay #define petscviewerhdf5pushgroup_ PETSCVIEWERHDF5PUSHGROUP 73ef9c667SSatish Balay #define petscviewerhdf5getgroup_ PETSCVIEWERHDF5GETGROUP 889e0ef10SVaclav Hapla #define petscviewerhdf5hasdataset_ PETSCVIEWERHDF5HASDATASET 906bbad5aSVaclav Hapla #define petscviewerhdf5hasattribute_ PETSCVIEWERHDF5HASATTRIBUTE 10df863907SAlex Fikl #define petscviewerhdf5writeattribute_ PETSCVIEWERHDF5WRITEATTRIBUTE 11df863907SAlex Fikl #define petscviewerhdf5readattribute_ PETSCVIEWERHDF5READATTRIBUTE 124302210dSVaclav Hapla #define petscviewerhdf5hasgroup_ PETSCVIEWERHDF5HASGROUP 13*3014b61aSVaclav Hapla #define petscviewerhdf5opengroup_ PETSCVIEWERHDF5OPENGROUP 145c6c1daeSBarry Smith #elif !defined(PETSC_HAVE_FORTRAN_UNDERSCORE) 155c6c1daeSBarry Smith #define petscviewerhdf5open_ petscviewerhdf5open 163ef9c667SSatish Balay #define petscviewerhdf5pushgroup_ petscviewerhdf5pushgroup 173ef9c667SSatish Balay #define petscviewerhdf5getgroup_ petscviewerhdf5getgroup 1889e0ef10SVaclav Hapla #define petscviewerhdf5hasdataset_ petscviewerhdf5hasdataset 1906bbad5aSVaclav Hapla #define petscviewerhdf5hasattribute_ petscviewerhdf5hasattribute 20df863907SAlex Fikl #define petscviewerhdf5writeattribute_ petscviewerhdf5writeattribute 21df863907SAlex Fikl #define petscviewerhdf5readattribute_ petscviewerhdf5readattribute 224302210dSVaclav Hapla #define petscviewerhdf5hasgroup_ petscviewerhdf5hasgroup 23*3014b61aSVaclav Hapla #define petscviewerhdf5opengroup_ petscviewerhdf5opengroup 245c6c1daeSBarry Smith #endif 255c6c1daeSBarry Smith 2619caf8f3SSatish Balay PETSC_EXTERN void petscviewerhdf5open_(MPI_Comm *comm, char* name, PetscFileMode *type, 2719caf8f3SSatish Balay PetscViewer *binv, PetscErrorCode *ierr,PETSC_FORTRAN_CHARLEN_T len) 285c6c1daeSBarry Smith { 295c6c1daeSBarry Smith char *c1; 30df863907SAlex Fikl 315c6c1daeSBarry Smith FIXCHAR(name, len, c1); 32d49bb8f9SBarry Smith *ierr = PetscViewerHDF5Open(MPI_Comm_f2c(*(MPI_Fint*)&*comm), c1, *type, binv);if (*ierr) return; 335c6c1daeSBarry Smith FREECHAR(name, c1); 345c6c1daeSBarry Smith } 355c6c1daeSBarry Smith 3619caf8f3SSatish Balay PETSC_EXTERN void petscviewerhdf5pushgroup_(PetscViewer *viewer, char* name, 3719caf8f3SSatish Balay PetscErrorCode *ierr,PETSC_FORTRAN_CHARLEN_T len) 383ef9c667SSatish Balay { 393ef9c667SSatish Balay char *c1; 40df863907SAlex Fikl 413ef9c667SSatish Balay FIXCHAR(name, len, c1); 42d49bb8f9SBarry Smith *ierr = PetscViewerHDF5PushGroup(*viewer, c1);if (*ierr) return; 433ef9c667SSatish Balay FREECHAR(name, c1); 443ef9c667SSatish Balay } 453ef9c667SSatish Balay 4677717648SVaclav Hapla PETSC_EXTERN void petscviewerhdf5getgroup_(PetscViewer *viewer, char* path, char* abspath, 4777717648SVaclav Hapla PetscErrorCode *ierr, PETSC_FORTRAN_CHARLEN_T len0, PETSC_FORTRAN_CHARLEN_T len1) 483ef9c667SSatish Balay { 4977717648SVaclav Hapla char *c0; 5077717648SVaclav Hapla char *c1; 51df863907SAlex Fikl 5277717648SVaclav Hapla FIXCHAR(path, len0, c0); 5377717648SVaclav Hapla *ierr = PetscViewerHDF5GetGroup(*viewer, c0, &c1);if (*ierr) return; 5477717648SVaclav Hapla *ierr = PetscStrncpy(abspath, c1, len1);if (*ierr) return; 5577717648SVaclav Hapla *ierr = PetscFree(c1);if (*ierr) return; 5677717648SVaclav Hapla FREECHAR(path, c0); 5777717648SVaclav Hapla FIXRETURNCHAR(PETSC_TRUE,abspath,len1); 583ef9c667SSatish Balay } 59df863907SAlex Fikl 6019caf8f3SSatish Balay PETSC_EXTERN void petscviewerhdf5hasattribute_(PetscViewer *viewer, char* parent, 6119caf8f3SSatish Balay char* name, PetscBool *has, PetscErrorCode *ierr,PETSC_FORTRAN_CHARLEN_T plen,PETSC_FORTRAN_CHARLEN_T nlen) 62df863907SAlex Fikl { 63df863907SAlex Fikl char *c1, *c2; 64df863907SAlex Fikl 65df863907SAlex Fikl FIXCHAR(parent, plen, c1); 66df863907SAlex Fikl FIXCHAR(name, nlen, c2); 67d49bb8f9SBarry Smith *ierr = PetscViewerHDF5HasAttribute(*viewer, c1, c2, has);if (*ierr) return; 68df863907SAlex Fikl FREECHAR(parent, c1); 69df863907SAlex Fikl FREECHAR(name, c2); 70df863907SAlex Fikl } 71df863907SAlex Fikl 7219caf8f3SSatish Balay PETSC_EXTERN void petscviewerhdf5writeattribute_(PetscViewer *viewer, char* parent, 7319caf8f3SSatish Balay char* name, PetscDataType *datatype, const void *value, PetscErrorCode *ierr,PETSC_FORTRAN_CHARLEN_T plen,PETSC_FORTRAN_CHARLEN_T nlen) 74df863907SAlex Fikl { 75df863907SAlex Fikl char *c1, *c2; 76df863907SAlex Fikl 77df863907SAlex Fikl FIXCHAR(parent, plen, c1); 78df863907SAlex Fikl FIXCHAR(name, nlen, c2); 79a2d6be1bSVaclav Hapla *ierr = PetscViewerHDF5WriteAttribute(*viewer, c1, c2, *datatype, value);if (*ierr) return; 80df863907SAlex Fikl FREECHAR(parent, c1); 81df863907SAlex Fikl FREECHAR(name, c2); 82df863907SAlex Fikl } 83df863907SAlex Fikl 8419caf8f3SSatish Balay PETSC_EXTERN void petscviewerhdf5readattribute_(PetscViewer *viewer, char* parent, 85a2d6be1bSVaclav Hapla char* name, PetscDataType *datatype, void *defaultValue, void *value, PetscErrorCode *ierr,PETSC_FORTRAN_CHARLEN_T plen,PETSC_FORTRAN_CHARLEN_T nlen) 86df863907SAlex Fikl { 87df863907SAlex Fikl char *c1, *c2; 88df863907SAlex Fikl 89df863907SAlex Fikl FIXCHAR(parent, plen, c1); 90df863907SAlex Fikl FIXCHAR(name, nlen, c2); 91a2d6be1bSVaclav Hapla *ierr = PetscViewerHDF5ReadAttribute(*viewer, c1, c2, *datatype, defaultValue, value);if (*ierr) return; 92df863907SAlex Fikl FREECHAR(parent, c1); 93df863907SAlex Fikl FREECHAR(name, c2); 94df863907SAlex Fikl } 954302210dSVaclav Hapla 9689e0ef10SVaclav Hapla PETSC_EXTERN void petscviewerhdf5hasdataset_(PetscViewer *viewer, char* path, PetscBool *has, PetscErrorCode *ierr, PETSC_FORTRAN_CHARLEN_T len) 9789e0ef10SVaclav Hapla { 9889e0ef10SVaclav Hapla char *c1; 9989e0ef10SVaclav Hapla 10089e0ef10SVaclav Hapla FIXCHAR(path, len, c1); 10189e0ef10SVaclav Hapla *ierr = PetscViewerHDF5HasDataset(*viewer, c1, has);if (*ierr) return; 10289e0ef10SVaclav Hapla FREECHAR(path, c1); 10389e0ef10SVaclav Hapla } 10489e0ef10SVaclav Hapla 1054302210dSVaclav Hapla PETSC_EXTERN void petscviewerhdf5hasgroup_(PetscViewer *viewer, char* path, PetscBool *has, PetscErrorCode *ierr, PETSC_FORTRAN_CHARLEN_T len) 1064302210dSVaclav Hapla { 1074302210dSVaclav Hapla char *c1; 1084302210dSVaclav Hapla 1094302210dSVaclav Hapla FIXCHAR(path, len, c1); 1104302210dSVaclav Hapla *ierr = PetscViewerHDF5HasGroup(*viewer, c1, has);if (*ierr) return; 1114302210dSVaclav Hapla FREECHAR(path, c1); 1124302210dSVaclav Hapla } 113*3014b61aSVaclav Hapla 114*3014b61aSVaclav Hapla PETSC_EXTERN void petscviewerhdf5opengroup_(PetscViewer *viewer, char path[], hid_t *fileId, hid_t *groupId, int *ierr, PETSC_FORTRAN_CHARLEN_T len) 115*3014b61aSVaclav Hapla { 116*3014b61aSVaclav Hapla char *c1; 117*3014b61aSVaclav Hapla 118*3014b61aSVaclav Hapla FIXCHAR(path, len, c1); 119*3014b61aSVaclav Hapla *ierr = PetscViewerHDF5OpenGroup(*viewer, c1, fileId, groupId); 120*3014b61aSVaclav Hapla FREECHAR(path, c1); 121*3014b61aSVaclav Hapla } 122