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 806bbad5aSVaclav Hapla #define petscviewerhdf5hasattribute_ PETSCVIEWERHDF5HASATTRIBUTE 9df863907SAlex Fikl #define petscviewerhdf5writeattribute_ PETSCVIEWERHDF5WRITEATTRIBUTE 10df863907SAlex Fikl #define petscviewerhdf5readattribute_ PETSCVIEWERHDF5READATTRIBUTE 11*4302210dSVaclav Hapla #define petscviewerhdf5hasgroup_ PETSCVIEWERHDF5HASGROUP 125c6c1daeSBarry Smith #elif !defined(PETSC_HAVE_FORTRAN_UNDERSCORE) 135c6c1daeSBarry Smith #define petscviewerhdf5open_ petscviewerhdf5open 143ef9c667SSatish Balay #define petscviewerhdf5pushgroup_ petscviewerhdf5pushgroup 153ef9c667SSatish Balay #define petscviewerhdf5getgroup_ petscviewerhdf5getgroup 1606bbad5aSVaclav Hapla #define petscviewerhdf5hasattribute_ petscviewerhdf5hasattribute 17df863907SAlex Fikl #define petscviewerhdf5writeattribute_ petscviewerhdf5writeattribute 18df863907SAlex Fikl #define petscviewerhdf5readattribute_ petscviewerhdf5readattribute 19*4302210dSVaclav Hapla #define petscviewerhdf5hasgroup_ petscviewerhdf5hasgroup 205c6c1daeSBarry Smith #endif 215c6c1daeSBarry Smith 2219caf8f3SSatish Balay PETSC_EXTERN void petscviewerhdf5open_(MPI_Comm *comm, char* name, PetscFileMode *type, 2319caf8f3SSatish Balay PetscViewer *binv, PetscErrorCode *ierr,PETSC_FORTRAN_CHARLEN_T len) 245c6c1daeSBarry Smith { 255c6c1daeSBarry Smith char *c1; 26df863907SAlex Fikl 275c6c1daeSBarry Smith FIXCHAR(name, len, c1); 28d49bb8f9SBarry Smith *ierr = PetscViewerHDF5Open(MPI_Comm_f2c(*(MPI_Fint*)&*comm), c1, *type, binv);if (*ierr) return; 295c6c1daeSBarry Smith FREECHAR(name, c1); 305c6c1daeSBarry Smith } 315c6c1daeSBarry Smith 3219caf8f3SSatish Balay PETSC_EXTERN void petscviewerhdf5pushgroup_(PetscViewer *viewer, char* name, 3319caf8f3SSatish Balay PetscErrorCode *ierr,PETSC_FORTRAN_CHARLEN_T len) 343ef9c667SSatish Balay { 353ef9c667SSatish Balay char *c1; 36df863907SAlex Fikl 373ef9c667SSatish Balay FIXCHAR(name, len, c1); 38d49bb8f9SBarry Smith *ierr = PetscViewerHDF5PushGroup(*viewer, c1);if (*ierr) return; 393ef9c667SSatish Balay FREECHAR(name, c1); 403ef9c667SSatish Balay } 413ef9c667SSatish Balay 4219caf8f3SSatish Balay PETSC_EXTERN void petscviewerhdf5getgroup_(PetscViewer *viewer, char* name, 4319caf8f3SSatish Balay PetscErrorCode *ierr,PETSC_FORTRAN_CHARLEN_T len) 443ef9c667SSatish Balay { 453ef9c667SSatish Balay const char *c1; 46df863907SAlex Fikl 47d49bb8f9SBarry Smith *ierr = PetscViewerHDF5GetGroup(*viewer, &c1);if (*ierr) return; 483ef9c667SSatish Balay *ierr = PetscStrncpy(name, c1, len); 493ef9c667SSatish Balay FIXRETURNCHAR(PETSC_TRUE,name,len); 503ef9c667SSatish Balay } 51df863907SAlex Fikl 5219caf8f3SSatish Balay PETSC_EXTERN void petscviewerhdf5hasattribute_(PetscViewer *viewer, char* parent, 5319caf8f3SSatish Balay char* name, PetscBool *has, PetscErrorCode *ierr,PETSC_FORTRAN_CHARLEN_T plen,PETSC_FORTRAN_CHARLEN_T nlen) 54df863907SAlex Fikl { 55df863907SAlex Fikl char *c1, *c2; 56df863907SAlex Fikl 57df863907SAlex Fikl FIXCHAR(parent, plen, c1); 58df863907SAlex Fikl FIXCHAR(name, nlen, c2); 59d49bb8f9SBarry Smith *ierr = PetscViewerHDF5HasAttribute(*viewer, c1, c2, has);if (*ierr) return; 60df863907SAlex Fikl FREECHAR(parent, c1); 61df863907SAlex Fikl FREECHAR(name, c2); 62df863907SAlex Fikl } 63df863907SAlex Fikl 6419caf8f3SSatish Balay PETSC_EXTERN void petscviewerhdf5writeattribute_(PetscViewer *viewer, char* parent, 6519caf8f3SSatish Balay char* name, PetscDataType *datatype, const void *value, PetscErrorCode *ierr,PETSC_FORTRAN_CHARLEN_T plen,PETSC_FORTRAN_CHARLEN_T nlen) 66df863907SAlex Fikl { 67df863907SAlex Fikl char *c1, *c2; 68df863907SAlex Fikl 69df863907SAlex Fikl FIXCHAR(parent, plen, c1); 70df863907SAlex Fikl FIXCHAR(name, nlen, c2); 71d49bb8f9SBarry Smith *ierr = PetscViewerHDF5WriteAttribute(*viewer, c1, c2, *datatype, (const void *) value);if (*ierr) return; 72df863907SAlex Fikl FREECHAR(parent, c1); 73df863907SAlex Fikl FREECHAR(name, c2); 74df863907SAlex Fikl } 75df863907SAlex Fikl 7619caf8f3SSatish Balay PETSC_EXTERN void petscviewerhdf5readattribute_(PetscViewer *viewer, char* parent, 7719caf8f3SSatish Balay char* name, PetscDataType *datatype, void *value, PetscErrorCode *ierr,PETSC_FORTRAN_CHARLEN_T plen,PETSC_FORTRAN_CHARLEN_T nlen) 78df863907SAlex Fikl { 79df863907SAlex Fikl char *c1, *c2; 80df863907SAlex Fikl 81df863907SAlex Fikl FIXCHAR(parent, plen, c1); 82df863907SAlex Fikl FIXCHAR(name, nlen, c2); 83d49bb8f9SBarry Smith *ierr = PetscViewerHDF5ReadAttribute(*viewer, c1, c2, *datatype, (void *) value);if (*ierr) return; 84df863907SAlex Fikl FREECHAR(parent, c1); 85df863907SAlex Fikl FREECHAR(name, c2); 86df863907SAlex Fikl } 87*4302210dSVaclav Hapla 88*4302210dSVaclav Hapla PETSC_EXTERN void petscviewerhdf5hasgroup_(PetscViewer *viewer, char* path, PetscBool *has, PetscErrorCode *ierr, PETSC_FORTRAN_CHARLEN_T len) 89*4302210dSVaclav Hapla { 90*4302210dSVaclav Hapla char *c1; 91*4302210dSVaclav Hapla 92*4302210dSVaclav Hapla FIXCHAR(path, len, c1); 93*4302210dSVaclav Hapla *ierr = PetscViewerHDF5HasGroup(*viewer, c1, has);if (*ierr) return; 94*4302210dSVaclav Hapla FREECHAR(path, c1); 95*4302210dSVaclav Hapla } 96