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, 21 PetscErrorCode *ierr,PETSC_FORTRAN_CHARLEN_T len) 22 { 23 char *ms; 24 25 FIXCHAR(m,len,ms); 26 *ierr = PetscMatlabEngineCreate(MPI_Comm_f2c(*(MPI_Fint*)&*comm),ms,e);if (*ierr) return; 27 FREECHAR(m,ms); 28 } 29 30 PETSC_EXTERN void petscmatlabengineevaluate_(PetscMatlabEngine *e,char* m, 31 PetscErrorCode *ierr,PETSC_FORTRAN_CHARLEN_T len) 32 { 33 char *ms; 34 FIXCHAR(m,len,ms); 35 *ierr = PetscMatlabEngineEvaluate(*e,ms);if (*ierr) return; 36 FREECHAR(m,ms); 37 } 38 39 PETSC_EXTERN void petscmatlabengineputarray_(PetscMatlabEngine *e,PetscInt *m,PetscInt *n,PetscScalar *a, 40 char* s,PetscErrorCode *ierr,PETSC_FORTRAN_CHARLEN_T len) 41 { 42 char *ms; 43 FIXCHAR(s,len,ms); 44 *ierr = PetscMatlabEnginePutArray(*e,*m,*n,a,ms);if (*ierr) return; 45 FREECHAR(s,ms); 46 } 47 48 PETSC_EXTERN void petscmatlabenginegetarray_(PetscMatlabEngine *e,PetscInt *m,PetscInt *n,PetscScalar *a, 49 char* s,PetscErrorCode *ierr,PETSC_FORTRAN_CHARLEN_T len) 50 { 51 char *ms; 52 FIXCHAR(s,len,ms); 53 *ierr = PetscMatlabEngineGetArray(*e,*m,*n,a,ms);if (*ierr) return; 54 FREECHAR(s,ms); 55 } 56 57