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 115c6c1daeSBarry Smith #elif !defined(PETSC_HAVE_FORTRAN_UNDERSCORE) 125c6c1daeSBarry Smith #define petscviewerhdf5open_ petscviewerhdf5open 133ef9c667SSatish Balay #define petscviewerhdf5pushgroup_ petscviewerhdf5pushgroup 143ef9c667SSatish Balay #define petscviewerhdf5getgroup_ petscviewerhdf5getgroup 1506bbad5aSVaclav Hapla #define petscviewerhdf5hasattribute_ petscviewerhdf5hasattribute 16df863907SAlex Fikl #define petscviewerhdf5writeattribute_ petscviewerhdf5writeattribute 17df863907SAlex Fikl #define petscviewerhdf5readattribute_ petscviewerhdf5readattribute 185c6c1daeSBarry Smith #endif 195c6c1daeSBarry Smith 20*19caf8f3SSatish Balay PETSC_EXTERN void petscviewerhdf5open_(MPI_Comm *comm, char* name, PetscFileMode *type, 21*19caf8f3SSatish Balay PetscViewer *binv, PetscErrorCode *ierr,PETSC_FORTRAN_CHARLEN_T len) 225c6c1daeSBarry Smith { 235c6c1daeSBarry Smith char *c1; 24df863907SAlex Fikl 255c6c1daeSBarry Smith FIXCHAR(name, len, c1); 26d49bb8f9SBarry Smith *ierr = PetscViewerHDF5Open(MPI_Comm_f2c(*(MPI_Fint*)&*comm), c1, *type, binv);if (*ierr) return; 275c6c1daeSBarry Smith FREECHAR(name, c1); 285c6c1daeSBarry Smith } 295c6c1daeSBarry Smith 30*19caf8f3SSatish Balay PETSC_EXTERN void petscviewerhdf5pushgroup_(PetscViewer *viewer, char* name, 31*19caf8f3SSatish Balay PetscErrorCode *ierr,PETSC_FORTRAN_CHARLEN_T len) 323ef9c667SSatish Balay { 333ef9c667SSatish Balay char *c1; 34df863907SAlex Fikl 353ef9c667SSatish Balay FIXCHAR(name, len, c1); 36d49bb8f9SBarry Smith *ierr = PetscViewerHDF5PushGroup(*viewer, c1);if (*ierr) return; 373ef9c667SSatish Balay FREECHAR(name, c1); 383ef9c667SSatish Balay } 393ef9c667SSatish Balay 40*19caf8f3SSatish Balay PETSC_EXTERN void petscviewerhdf5getgroup_(PetscViewer *viewer, char* name, 41*19caf8f3SSatish Balay PetscErrorCode *ierr,PETSC_FORTRAN_CHARLEN_T len) 423ef9c667SSatish Balay { 433ef9c667SSatish Balay const char *c1; 44df863907SAlex Fikl 45d49bb8f9SBarry Smith *ierr = PetscViewerHDF5GetGroup(*viewer, &c1);if (*ierr) return; 463ef9c667SSatish Balay *ierr = PetscStrncpy(name, c1, len); 473ef9c667SSatish Balay FIXRETURNCHAR(PETSC_TRUE,name,len); 483ef9c667SSatish Balay } 49df863907SAlex Fikl 50*19caf8f3SSatish Balay PETSC_EXTERN void petscviewerhdf5hasattribute_(PetscViewer *viewer, char* parent, 51*19caf8f3SSatish Balay char* name, PetscBool *has, PetscErrorCode *ierr,PETSC_FORTRAN_CHARLEN_T plen,PETSC_FORTRAN_CHARLEN_T nlen) 52df863907SAlex Fikl { 53df863907SAlex Fikl char *c1, *c2; 54df863907SAlex Fikl 55df863907SAlex Fikl FIXCHAR(parent, plen, c1); 56df863907SAlex Fikl FIXCHAR(name, nlen, c2); 57d49bb8f9SBarry Smith *ierr = PetscViewerHDF5HasAttribute(*viewer, c1, c2, has);if (*ierr) return; 58df863907SAlex Fikl FREECHAR(parent, c1); 59df863907SAlex Fikl FREECHAR(name, c2); 60df863907SAlex Fikl } 61df863907SAlex Fikl 62*19caf8f3SSatish Balay PETSC_EXTERN void petscviewerhdf5writeattribute_(PetscViewer *viewer, char* parent, 63*19caf8f3SSatish Balay char* name, PetscDataType *datatype, const void *value, PetscErrorCode *ierr,PETSC_FORTRAN_CHARLEN_T plen,PETSC_FORTRAN_CHARLEN_T nlen) 64df863907SAlex Fikl { 65df863907SAlex Fikl char *c1, *c2; 66df863907SAlex Fikl 67df863907SAlex Fikl FIXCHAR(parent, plen, c1); 68df863907SAlex Fikl FIXCHAR(name, nlen, c2); 69d49bb8f9SBarry Smith *ierr = PetscViewerHDF5WriteAttribute(*viewer, c1, c2, *datatype, (const void *) value);if (*ierr) return; 70df863907SAlex Fikl FREECHAR(parent, c1); 71df863907SAlex Fikl FREECHAR(name, c2); 72df863907SAlex Fikl } 73df863907SAlex Fikl 74*19caf8f3SSatish Balay PETSC_EXTERN void petscviewerhdf5readattribute_(PetscViewer *viewer, char* parent, 75*19caf8f3SSatish Balay char* name, PetscDataType *datatype, void *value, PetscErrorCode *ierr,PETSC_FORTRAN_CHARLEN_T plen,PETSC_FORTRAN_CHARLEN_T nlen) 76df863907SAlex Fikl { 77df863907SAlex Fikl char *c1, *c2; 78df863907SAlex Fikl 79df863907SAlex Fikl FIXCHAR(parent, plen, c1); 80df863907SAlex Fikl FIXCHAR(name, nlen, c2); 81d49bb8f9SBarry Smith *ierr = PetscViewerHDF5ReadAttribute(*viewer, c1, c2, *datatype, (void *) value);if (*ierr) return; 82df863907SAlex Fikl FREECHAR(parent, c1); 83df863907SAlex Fikl FREECHAR(name, c2); 84df863907SAlex Fikl } 85