1af0996ceSBarry Smith #include <petsc/private/fortranimpl.h> 25c6c1daeSBarry Smith #include <petscmatlab.h> 35c6c1daeSBarry Smith 45c6c1daeSBarry Smith #if defined(PETSC_HAVE_FORTRAN_CAPS) 55c6c1daeSBarry Smith #define petscmatlabenginecreate_ PETSCMATLABENGINECREATE 65c6c1daeSBarry Smith #define petscmatlabengineevaluate_ PETSCMATLABENGINEEVALUATE 75c6c1daeSBarry Smith #define petscmatlabenginegetoutput_ PETSCMATLABENGINEGETOUTPUT 85c6c1daeSBarry Smith #define petscmatlabengineprintoutput_ PETSCMATLABENGINEPRINTOUTPUT 95c6c1daeSBarry Smith #define petscmatlabengineputarray_ PETSCMATLABENGINEPUTARRAY 105c6c1daeSBarry Smith #define petscmatlabenginegetarray_ PETSCMATLABENGINEGETARRAY 115c6c1daeSBarry Smith #elif !defined(PETSC_HAVE_FORTRAN_UNDERSCORE) 125c6c1daeSBarry Smith #define petscmatlabenginecreate_ petscmatlabenginecreate 135c6c1daeSBarry Smith #define petscmatlabengineevaluate_ petscmatlabengineevaluate 145c6c1daeSBarry Smith #define petscmatlabenginegetoutput_ petscmatlabenginegetoutput 155c6c1daeSBarry Smith #define petscmatlabengineprintoutput_ petscmatlabengineprintoutput 165c6c1daeSBarry Smith #define petscmatlabengineputarray_ petscmatlabengineputarray 175c6c1daeSBarry Smith #define petscmatlabenginegetarray_ petscmatlabenginegetarray 185c6c1daeSBarry Smith #endif 195c6c1daeSBarry Smith 20*5975b3b6SBarry Smith PETSC_EXTERN void petscmatlabenginecreate_(MPI_Comm *comm, char *m, PetscMatlabEngine *e, PetscErrorCode *ierr, PETSC_FORTRAN_CHARLEN_T len) 215c6c1daeSBarry Smith { 225c6c1daeSBarry Smith char *ms; 235c6c1daeSBarry Smith 245c6c1daeSBarry Smith FIXCHAR(m, len, ms); 25*5975b3b6SBarry Smith *ierr = PetscMatlabEngineCreate(MPI_Comm_f2c(*(MPI_Fint *)&*comm), ms, e); 26*5975b3b6SBarry Smith if (*ierr) return; 275c6c1daeSBarry Smith FREECHAR(m, ms); 285c6c1daeSBarry Smith } 295c6c1daeSBarry Smith 30*5975b3b6SBarry Smith PETSC_EXTERN void petscmatlabengineevaluate_(PetscMatlabEngine *e, char *m, PetscErrorCode *ierr, PETSC_FORTRAN_CHARLEN_T len) 315c6c1daeSBarry Smith { 325c6c1daeSBarry Smith char *ms; 335c6c1daeSBarry Smith FIXCHAR(m, len, ms); 34*5975b3b6SBarry Smith *ierr = PetscMatlabEngineEvaluate(*e, ms); 35*5975b3b6SBarry Smith if (*ierr) return; 365c6c1daeSBarry Smith FREECHAR(m, ms); 375c6c1daeSBarry Smith } 385c6c1daeSBarry Smith 39*5975b3b6SBarry Smith PETSC_EXTERN void petscmatlabengineputarray_(PetscMatlabEngine *e, PetscInt *m, PetscInt *n, PetscScalar *a, char *s, PetscErrorCode *ierr, PETSC_FORTRAN_CHARLEN_T len) 405c6c1daeSBarry Smith { 415c6c1daeSBarry Smith char *ms; 425c6c1daeSBarry Smith FIXCHAR(s, len, ms); 43*5975b3b6SBarry Smith *ierr = PetscMatlabEnginePutArray(*e, *m, *n, a, ms); 44*5975b3b6SBarry Smith if (*ierr) return; 455c6c1daeSBarry Smith FREECHAR(s, ms); 465c6c1daeSBarry Smith } 475c6c1daeSBarry Smith 48*5975b3b6SBarry Smith PETSC_EXTERN void petscmatlabenginegetarray_(PetscMatlabEngine *e, PetscInt *m, PetscInt *n, PetscScalar *a, char *s, PetscErrorCode *ierr, PETSC_FORTRAN_CHARLEN_T len) 495c6c1daeSBarry Smith { 505c6c1daeSBarry Smith char *ms; 515c6c1daeSBarry Smith FIXCHAR(s, len, ms); 52*5975b3b6SBarry Smith *ierr = PetscMatlabEngineGetArray(*e, *m, *n, a, ms); 53*5975b3b6SBarry Smith if (*ierr) return; 545c6c1daeSBarry Smith FREECHAR(s, ms); 555c6c1daeSBarry Smith } 56