1 #include <petsc/private/fortranimpl.h> 2 #include <petscmatlab.h> 3 4 #if defined(PETSC_HAVE_FORTRAN_CAPS) 5 #define petscmatlabenginecreate_ PETSCMATLABENGINECREATE 6 #define petscmatlabengineevaluate_ PETSCMATLABENGINEEVALUATE 7 #define petscmatlabenginegetoutput_ PETSCMATLABENGINEGETOUTPUT 8 #define petscmatlabengineprintoutput_ PETSCMATLABENGINEPRINTOUTPUT 9 #define petscmatlabengineputarray_ PETSCMATLABENGINEPUTARRAY 10 #define petscmatlabenginegetarray_ PETSCMATLABENGINEGETARRAY 11 #elif !defined(PETSC_HAVE_FORTRAN_UNDERSCORE) 12 #define petscmatlabenginecreate_ petscmatlabenginecreate 13 #define petscmatlabengineevaluate_ petscmatlabengineevaluate 14 #define petscmatlabenginegetoutput_ petscmatlabenginegetoutput 15 #define petscmatlabengineprintoutput_ petscmatlabengineprintoutput 16 #define petscmatlabengineputarray_ petscmatlabengineputarray 17 #define petscmatlabenginegetarray_ petscmatlabenginegetarray 18 #endif 19 20 PETSC_EXTERN void petscmatlabenginecreate_(MPI_Comm *comm, char *m, PetscMatlabEngine *e, PetscErrorCode *ierr, PETSC_FORTRAN_CHARLEN_T len) 21 { 22 char *ms; 23 24 FIXCHAR(m, len, ms); 25 *ierr = PetscMatlabEngineCreate(MPI_Comm_f2c(*(MPI_Fint *)&*comm), ms, e); 26 if (*ierr) return; 27 FREECHAR(m, ms); 28 } 29 30 PETSC_EXTERN void petscmatlabengineevaluate_(PetscMatlabEngine *e, char *m, PetscErrorCode *ierr, PETSC_FORTRAN_CHARLEN_T len) 31 { 32 char *ms; 33 FIXCHAR(m, len, ms); 34 *ierr = PetscMatlabEngineEvaluate(*e, ms); 35 if (*ierr) return; 36 FREECHAR(m, ms); 37 } 38 39 PETSC_EXTERN void petscmatlabengineputarray_(PetscMatlabEngine *e, PetscInt *m, PetscInt *n, PetscScalar *a, char *s, PetscErrorCode *ierr, PETSC_FORTRAN_CHARLEN_T len) 40 { 41 char *ms; 42 FIXCHAR(s, len, ms); 43 *ierr = PetscMatlabEnginePutArray(*e, *m, *n, a, ms); 44 if (*ierr) return; 45 FREECHAR(s, ms); 46 } 47 48 PETSC_EXTERN void petscmatlabenginegetarray_(PetscMatlabEngine *e, PetscInt *m, PetscInt *n, PetscScalar *a, char *s, PetscErrorCode *ierr, PETSC_FORTRAN_CHARLEN_T len) 49 { 50 char *ms; 51 FIXCHAR(s, len, ms); 52 *ierr = PetscMatlabEngineGetArray(*e, *m, *n, a, ms); 53 if (*ierr) return; 54 FREECHAR(s, ms); 55 } 56