#include #include #if defined(PETSC_HAVE_FORTRAN_CAPS) #define petscmatlabenginecreate_ PETSCMATLABENGINECREATE #define petscmatlabengineevaluate_ PETSCMATLABENGINEEVALUATE #define petscmatlabenginegetoutput_ PETSCMATLABENGINEGETOUTPUT #define petscmatlabengineprintoutput_ PETSCMATLABENGINEPRINTOUTPUT #define petscmatlabengineputarray_ PETSCMATLABENGINEPUTARRAY #define petscmatlabenginegetarray_ PETSCMATLABENGINEGETARRAY #elif !defined(PETSC_HAVE_FORTRAN_UNDERSCORE) #define petscmatlabenginecreate_ petscmatlabenginecreate #define petscmatlabengineevaluate_ petscmatlabengineevaluate #define petscmatlabenginegetoutput_ petscmatlabenginegetoutput #define petscmatlabengineprintoutput_ petscmatlabengineprintoutput #define petscmatlabengineputarray_ petscmatlabengineputarray #define petscmatlabenginegetarray_ petscmatlabenginegetarray #endif PETSC_EXTERN void petscmatlabenginecreate_(MPI_Comm *comm, char *m, PetscMatlabEngine *e, PetscErrorCode *ierr, PETSC_FORTRAN_CHARLEN_T len) { char *ms; FIXCHAR(m, len, ms); *ierr = PetscMatlabEngineCreate(MPI_Comm_f2c(*(MPI_Fint *)&*comm), ms, e); if (*ierr) return; FREECHAR(m, ms); } PETSC_EXTERN void petscmatlabengineevaluate_(PetscMatlabEngine *e, char *m, PetscErrorCode *ierr, PETSC_FORTRAN_CHARLEN_T len) { char *ms; FIXCHAR(m, len, ms); *ierr = PetscMatlabEngineEvaluate(*e, ms); if (*ierr) return; FREECHAR(m, ms); } PETSC_EXTERN void petscmatlabengineputarray_(PetscMatlabEngine *e, PetscInt *m, PetscInt *n, PetscScalar *a, char *s, PetscErrorCode *ierr, PETSC_FORTRAN_CHARLEN_T len) { char *ms; FIXCHAR(s, len, ms); *ierr = PetscMatlabEnginePutArray(*e, *m, *n, a, ms); if (*ierr) return; FREECHAR(s, ms); } PETSC_EXTERN void petscmatlabenginegetarray_(PetscMatlabEngine *e, PetscInt *m, PetscInt *n, PetscScalar *a, char *s, PetscErrorCode *ierr, PETSC_FORTRAN_CHARLEN_T len) { char *ms; FIXCHAR(s, len, ms); *ierr = PetscMatlabEngineGetArray(*e, *m, *n, a, ms); if (*ierr) return; FREECHAR(s, ms); }