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 8*df863907SAlex Fikl #define petscviewerhdf5writeattribute_ PETSCVIEWERHDF5WRITEATTRIBUTE 9*df863907SAlex Fikl #define petscviewerhdf5readattribute_ PETSCVIEWERHDF5READATTRIBUTE 105c6c1daeSBarry Smith #elif !defined(PETSC_HAVE_FORTRAN_UNDERSCORE) 115c6c1daeSBarry Smith #define petscviewerhdf5open_ petscviewerhdf5open 123ef9c667SSatish Balay #define petscviewerhdf5pushgroup_ petscviewerhdf5pushgroup 133ef9c667SSatish Balay #define petscviewerhdf5getgroup_ petscviewerhdf5getgroup 14*df863907SAlex Fikl #define petscviewerhdf5writeattribute_ petscviewerhdf5writeattribute 15*df863907SAlex Fikl #define petscviewerhdf5readattribute_ petscviewerhdf5readattribute 165c6c1daeSBarry Smith #endif 175c6c1daeSBarry Smith 188cc058d9SJed Brown PETSC_EXTERN void PETSC_STDCALL petscviewerhdf5open_(MPI_Comm *comm, CHAR name PETSC_MIXED_LEN(len), PetscFileMode *type, 195c6c1daeSBarry Smith PetscViewer *binv, PetscErrorCode *ierr PETSC_END_LEN(len)) 205c6c1daeSBarry Smith { 215c6c1daeSBarry Smith char *c1; 22*df863907SAlex Fikl 235c6c1daeSBarry Smith FIXCHAR(name, len, c1); 245c6c1daeSBarry Smith *ierr = PetscViewerHDF5Open(MPI_Comm_f2c(*(MPI_Fint*)&*comm), c1, *type, binv); 255c6c1daeSBarry Smith FREECHAR(name, c1); 265c6c1daeSBarry Smith } 275c6c1daeSBarry Smith 283ef9c667SSatish Balay PETSC_EXTERN void PETSC_STDCALL petscviewerhdf5pushgroup_(PetscViewer *viewer, CHAR name PETSC_MIXED_LEN(len), 293ef9c667SSatish Balay PetscErrorCode *ierr PETSC_END_LEN(len)) 303ef9c667SSatish Balay { 313ef9c667SSatish Balay char *c1; 32*df863907SAlex Fikl 333ef9c667SSatish Balay FIXCHAR(name, len, c1); 343ef9c667SSatish Balay *ierr = PetscViewerHDF5PushGroup(*viewer, c1); 353ef9c667SSatish Balay FREECHAR(name, c1); 363ef9c667SSatish Balay } 373ef9c667SSatish Balay 383ef9c667SSatish Balay PETSC_EXTERN void PETSC_STDCALL petscviewerhdf5getgroup_(PetscViewer *viewer, CHAR name PETSC_MIXED_LEN(len), 393ef9c667SSatish Balay PetscErrorCode *ierr PETSC_END_LEN(len)) 403ef9c667SSatish Balay { 413ef9c667SSatish Balay const char *c1; 42*df863907SAlex Fikl 433ef9c667SSatish Balay *ierr = PetscViewerHDF5GetGroup(*viewer, &c1); 443ef9c667SSatish Balay *ierr = PetscStrncpy(name, c1, len); 453ef9c667SSatish Balay FIXRETURNCHAR(PETSC_TRUE,name,len); 463ef9c667SSatish Balay } 47*df863907SAlex Fikl 48*df863907SAlex Fikl PETSC_EXTERN void PETSC_STDCALL petscviewerhdf5hasattribute_(PetscViewer *viewer, CHAR parent PETSC_MIXED_LEN(plen), 49*df863907SAlex Fikl CHAR name PETSC_MIXED_LEN(nlen), PetscBool *has, PetscErrorCode *ierr PETSC_END_LEN(plen) PETSC_END_LEN(nlen)) 50*df863907SAlex Fikl { 51*df863907SAlex Fikl char *c1, *c2; 52*df863907SAlex Fikl 53*df863907SAlex Fikl FIXCHAR(parent, plen, c1); 54*df863907SAlex Fikl FIXCHAR(name, nlen, c2); 55*df863907SAlex Fikl *ierr = PetscViewerHDF5HasAttribute(*viewer, c1, c2, has); 56*df863907SAlex Fikl FREECHAR(parent, c1); 57*df863907SAlex Fikl FREECHAR(name, c2); 58*df863907SAlex Fikl } 59*df863907SAlex Fikl 60*df863907SAlex Fikl PETSC_EXTERN void PETSC_STDCALL petscviewerhdf5writeattribute_(PetscViewer *viewer, CHAR parent PETSC_MIXED_LEN(plen), 61*df863907SAlex Fikl CHAR name PETSC_MIXED_LEN(nlen), PetscDataType *datatype, const void *value, PetscErrorCode *ierr PETSC_END_LEN(plen) PETSC_END_LEN(nlen)) 62*df863907SAlex Fikl { 63*df863907SAlex Fikl char *c1, *c2; 64*df863907SAlex Fikl 65*df863907SAlex Fikl FIXCHAR(parent, plen, c1); 66*df863907SAlex Fikl FIXCHAR(name, nlen, c2); 67*df863907SAlex Fikl *ierr = PetscViewerHDF5WriteAttribute(*viewer, c1, c2, *datatype, (const void *) value); 68*df863907SAlex Fikl FREECHAR(parent, c1); 69*df863907SAlex Fikl FREECHAR(name, c2); 70*df863907SAlex Fikl } 71*df863907SAlex Fikl 72*df863907SAlex Fikl PETSC_EXTERN void PETSC_STDCALL petscviewerhdf5readattribute_(PetscViewer *viewer, CHAR parent PETSC_MIXED_LEN(plen), 73*df863907SAlex Fikl CHAR name PETSC_MIXED_LEN(nlen), PetscDataType *datatype, void *value, PetscErrorCode *ierr PETSC_END_LEN(plen) PETSC_END_LEN(nlen)) 74*df863907SAlex Fikl { 75*df863907SAlex Fikl char *c1, *c2; 76*df863907SAlex Fikl 77*df863907SAlex Fikl FIXCHAR(parent, plen, c1); 78*df863907SAlex Fikl FIXCHAR(name, nlen, c2); 79*df863907SAlex Fikl *ierr = PetscViewerHDF5ReadAttribute(*viewer, c1, c2, *datatype, (void *) value); 80*df863907SAlex Fikl FREECHAR(parent, c1); 81*df863907SAlex Fikl FREECHAR(name, c2); 82*df863907SAlex Fikl } 83