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*06bbad5aSVaclav Hapla #define petscviewerhdf5hasattribute_ PETSCVIEWERHDF5HASATTRIBUTE 9*06bbad5aSVaclav Hapla #define petscviewerhdf5readsizes_ PETSCVIEWERHDF5READSIZES 10df863907SAlex Fikl #define petscviewerhdf5writeattribute_ PETSCVIEWERHDF5WRITEATTRIBUTE 11df863907SAlex Fikl #define petscviewerhdf5readattribute_ PETSCVIEWERHDF5READATTRIBUTE 12*06bbad5aSVaclav Hapla #define petscviewerhdf5setaijnames_ PETSCVIEWERHDF5SETAIJNAMES 13*06bbad5aSVaclav Hapla #define petscviewerhdf5getaijnames_ PETSCVIEWERHDF5GETAIJNAMES 145c6c1daeSBarry Smith #elif !defined(PETSC_HAVE_FORTRAN_UNDERSCORE) 155c6c1daeSBarry Smith #define petscviewerhdf5open_ petscviewerhdf5open 163ef9c667SSatish Balay #define petscviewerhdf5pushgroup_ petscviewerhdf5pushgroup 173ef9c667SSatish Balay #define petscviewerhdf5getgroup_ petscviewerhdf5getgroup 18*06bbad5aSVaclav Hapla #define petscviewerhdf5hasattribute_ petscviewerhdf5hasattribute 19*06bbad5aSVaclav Hapla #define petscviewerhdf5readsizes_ petscviewerhdf5readsizes 20df863907SAlex Fikl #define petscviewerhdf5writeattribute_ petscviewerhdf5writeattribute 21df863907SAlex Fikl #define petscviewerhdf5readattribute_ petscviewerhdf5readattribute 22*06bbad5aSVaclav Hapla #define petscviewerhdf5setaijnames_ petscviewerhdf5setaijnames 23*06bbad5aSVaclav Hapla #define petscviewerhdf5getaijnames_ petscviewerhdf5getaijnames 245c6c1daeSBarry Smith #endif 255c6c1daeSBarry Smith 26390e1bf2SBarry Smith PETSC_EXTERN void PETSC_STDCALL petscviewerhdf5open_(MPI_Comm *comm, char* name PETSC_MIXED_LEN(len), PetscFileMode *type, 275c6c1daeSBarry Smith PetscViewer *binv, PetscErrorCode *ierr PETSC_END_LEN(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 36390e1bf2SBarry Smith PETSC_EXTERN void PETSC_STDCALL petscviewerhdf5pushgroup_(PetscViewer *viewer, char* name PETSC_MIXED_LEN(len), 373ef9c667SSatish Balay PetscErrorCode *ierr PETSC_END_LEN(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 46390e1bf2SBarry Smith PETSC_EXTERN void PETSC_STDCALL petscviewerhdf5getgroup_(PetscViewer *viewer, char* name PETSC_MIXED_LEN(len), 473ef9c667SSatish Balay PetscErrorCode *ierr PETSC_END_LEN(len)) 483ef9c667SSatish Balay { 493ef9c667SSatish Balay const char *c1; 50df863907SAlex Fikl 51d49bb8f9SBarry Smith *ierr = PetscViewerHDF5GetGroup(*viewer, &c1);if (*ierr) return; 523ef9c667SSatish Balay *ierr = PetscStrncpy(name, c1, len); 533ef9c667SSatish Balay FIXRETURNCHAR(PETSC_TRUE,name,len); 543ef9c667SSatish Balay } 55df863907SAlex Fikl 56390e1bf2SBarry Smith PETSC_EXTERN void PETSC_STDCALL petscviewerhdf5hasattribute_(PetscViewer *viewer, char* parent PETSC_MIXED_LEN(plen), 57390e1bf2SBarry Smith char* name PETSC_MIXED_LEN(nlen), PetscBool *has, PetscErrorCode *ierr PETSC_END_LEN(plen) PETSC_END_LEN(nlen)) 58df863907SAlex Fikl { 59df863907SAlex Fikl char *c1, *c2; 60df863907SAlex Fikl 61df863907SAlex Fikl FIXCHAR(parent, plen, c1); 62df863907SAlex Fikl FIXCHAR(name, nlen, c2); 63d49bb8f9SBarry Smith *ierr = PetscViewerHDF5HasAttribute(*viewer, c1, c2, has);if (*ierr) return; 64df863907SAlex Fikl FREECHAR(parent, c1); 65df863907SAlex Fikl FREECHAR(name, c2); 66df863907SAlex Fikl } 67df863907SAlex Fikl 68c1aaad9cSVaclav Hapla PETSC_EXTERN void PETSC_STDCALL petscviewerhdf5readsizes_(PetscViewer *viewer, char* name PETSC_MIXED_LEN(len), 69c1aaad9cSVaclav Hapla PetscInt *bs, PetscInt *N, PetscErrorCode *ierr PETSC_END_LEN(len)) 70c1aaad9cSVaclav Hapla { 71c1aaad9cSVaclav Hapla char *c1; 72c1aaad9cSVaclav Hapla 73c1aaad9cSVaclav Hapla FIXCHAR(name, len, c1); 74c1aaad9cSVaclav Hapla *ierr = PetscViewerHDF5ReadSizes(*viewer, c1, bs, N); 75c1aaad9cSVaclav Hapla FREECHAR(name, c1); 76c1aaad9cSVaclav Hapla } 77c1aaad9cSVaclav Hapla 78390e1bf2SBarry Smith PETSC_EXTERN void PETSC_STDCALL petscviewerhdf5writeattribute_(PetscViewer *viewer, char* parent PETSC_MIXED_LEN(plen), 79390e1bf2SBarry Smith char* name PETSC_MIXED_LEN(nlen), PetscDataType *datatype, const void *value, PetscErrorCode *ierr PETSC_END_LEN(plen) PETSC_END_LEN(nlen)) 80df863907SAlex Fikl { 81df863907SAlex Fikl char *c1, *c2; 82df863907SAlex Fikl 83df863907SAlex Fikl FIXCHAR(parent, plen, c1); 84df863907SAlex Fikl FIXCHAR(name, nlen, c2); 85d49bb8f9SBarry Smith *ierr = PetscViewerHDF5WriteAttribute(*viewer, c1, c2, *datatype, (const void *) value);if (*ierr) return; 86df863907SAlex Fikl FREECHAR(parent, c1); 87df863907SAlex Fikl FREECHAR(name, c2); 88df863907SAlex Fikl } 89df863907SAlex Fikl 90390e1bf2SBarry Smith PETSC_EXTERN void PETSC_STDCALL petscviewerhdf5readattribute_(PetscViewer *viewer, char* parent PETSC_MIXED_LEN(plen), 91390e1bf2SBarry Smith char* name PETSC_MIXED_LEN(nlen), PetscDataType *datatype, void *value, PetscErrorCode *ierr PETSC_END_LEN(plen) PETSC_END_LEN(nlen)) 92df863907SAlex Fikl { 93df863907SAlex Fikl char *c1, *c2; 94df863907SAlex Fikl 95df863907SAlex Fikl FIXCHAR(parent, plen, c1); 96df863907SAlex Fikl FIXCHAR(name, nlen, c2); 97d49bb8f9SBarry Smith *ierr = PetscViewerHDF5ReadAttribute(*viewer, c1, c2, *datatype, (void *) value);if (*ierr) return; 98df863907SAlex Fikl FREECHAR(parent, c1); 99df863907SAlex Fikl FREECHAR(name, c2); 100df863907SAlex Fikl } 101058bd781SVaclav Hapla 102058bd781SVaclav Hapla PETSC_EXTERN void PETSC_STDCALL petscviewerhdf5setaijnames_(PetscViewer *viewer, 103058bd781SVaclav Hapla char* iname PETSC_MIXED_LEN(ilen), 104058bd781SVaclav Hapla char* jname PETSC_MIXED_LEN(jlen), 105058bd781SVaclav Hapla char* aname PETSC_MIXED_LEN(alen), 106058bd781SVaclav Hapla char* cname PETSC_MIXED_LEN(clen), 107058bd781SVaclav Hapla PetscErrorCode *ierr PETSC_END_LEN(ilen) PETSC_END_LEN(jlen) PETSC_END_LEN(alen) PETSC_END_LEN(clen)) 108058bd781SVaclav Hapla { 109058bd781SVaclav Hapla char *ci, *cj, *ca, *cc; 110058bd781SVaclav Hapla PetscViewer v; 111058bd781SVaclav Hapla 112058bd781SVaclav Hapla PetscPatchDefaultViewers_Fortran(viewer,v); 113058bd781SVaclav Hapla FIXCHAR(iname,ilen,ci); 114058bd781SVaclav Hapla FIXCHAR(jname,jlen,cj); 115058bd781SVaclav Hapla FIXCHAR(aname,alen,ca); 116058bd781SVaclav Hapla FIXCHAR(cname,clen,cc); 117058bd781SVaclav Hapla *ierr = PetscViewerHDF5SetAIJNames(v,ci,cj,ca,cc);if (*ierr) return; 118058bd781SVaclav Hapla FREECHAR(iname,ci); 119058bd781SVaclav Hapla FREECHAR(jname,cj); 120058bd781SVaclav Hapla FREECHAR(aname,ca); 121058bd781SVaclav Hapla FREECHAR(cname,cc); 122058bd781SVaclav Hapla } 123058bd781SVaclav Hapla 124058bd781SVaclav Hapla PETSC_EXTERN void PETSC_STDCALL petscviewerhdf5getaijnames_(PetscViewer *viewer, 125058bd781SVaclav Hapla char* iname PETSC_MIXED_LEN(ilen), 126058bd781SVaclav Hapla char* jname PETSC_MIXED_LEN(jlen), 127058bd781SVaclav Hapla char* aname PETSC_MIXED_LEN(alen), 128058bd781SVaclav Hapla char* cname PETSC_MIXED_LEN(clen), 129058bd781SVaclav Hapla PetscErrorCode *ierr PETSC_END_LEN(ilen) PETSC_END_LEN(jlen) PETSC_END_LEN(alen) PETSC_END_LEN(clen)) 130058bd781SVaclav Hapla { 131058bd781SVaclav Hapla const char *ci, *cj, *ca, *cc; 132058bd781SVaclav Hapla 133058bd781SVaclav Hapla *ierr = PetscViewerHDF5GetAIJNames(*viewer,&ci,&cj,&ca,&cc);if (*ierr) return; 134058bd781SVaclav Hapla *ierr = PetscStrncpy(iname,ci,ilen);if (*ierr) return; 135058bd781SVaclav Hapla *ierr = PetscStrncpy(jname,cj,jlen);if (*ierr) return; 136058bd781SVaclav Hapla *ierr = PetscStrncpy(aname,ca,alen);if (*ierr) return; 137058bd781SVaclav Hapla *ierr = PetscStrncpy(cname,cc,clen);if (*ierr) return; 138058bd781SVaclav Hapla FIXRETURNCHAR(PETSC_TRUE,iname,ilen); 139058bd781SVaclav Hapla FIXRETURNCHAR(PETSC_TRUE,jname,jlen); 140058bd781SVaclav Hapla FIXRETURNCHAR(PETSC_TRUE,aname,alen); 141058bd781SVaclav Hapla FIXRETURNCHAR(PETSC_TRUE,cname,clen); 142058bd781SVaclav Hapla } 143