xref: /petsc/src/sys/classes/viewer/impls/hdf5/ftn-custom/zhdf5f.c (revision 19caf8f3c08b1f0ca9f5469bde385c134aa76c82)
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