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 EXTERN_C_BEGIN 21 22 void PETSC_STDCALL petscmatlabenginecreate_(MPI_Comm *comm,CHAR m PETSC_MIXED_LEN(len),PetscMatlabEngine *e, 23 PetscErrorCode *ierr PETSC_END_LEN(len)) 24 { 25 char *ms; 26 27 FIXCHAR(m,len,ms); 28 *ierr = PetscMatlabEngineCreate(MPI_Comm_f2c(*(MPI_Fint *)&*comm),ms,e); 29 FREECHAR(m,ms); 30 } 31 32 void PETSC_STDCALL petscmatlabengineevaluate_(PetscMatlabEngine *e,CHAR m PETSC_MIXED_LEN(len), 33 PetscErrorCode *ierr PETSC_END_LEN(len)) 34 { 35 char *ms; 36 FIXCHAR(m,len,ms); 37 *ierr = PetscMatlabEngineEvaluate(*e,ms); 38 FREECHAR(m,ms); 39 } 40 41 void PETSC_STDCALL petscmatlabengineputarray_(PetscMatlabEngine *e,PetscInt *m,PetscInt *n,PetscScalar *a, 42 CHAR s PETSC_MIXED_LEN(len),PetscErrorCode *ierr PETSC_END_LEN(len)) 43 { 44 char *ms; 45 FIXCHAR(s,len,ms); 46 *ierr = PetscMatlabEnginePutArray(*e,*m,*n,a,ms); 47 FREECHAR(s,ms); 48 } 49 50 void PETSC_STDCALL petscmatlabenginegetarray_(PetscMatlabEngine *e,PetscInt *m,PetscInt *n,PetscScalar *a, 51 CHAR s PETSC_MIXED_LEN(len),PetscErrorCode *ierr PETSC_END_LEN(len)) 52 { 53 char *ms; 54 FIXCHAR(s,len,ms); 55 *ierr = PetscMatlabEngineGetArray(*e,*m,*n,a,ms); 56 FREECHAR(s,ms); 57 } 58 59 /* 60 extern int PetscMatlabEngineGetOutput(PetscMatlabEngine,char **); 61 extern int PetscMatlabEnginePrintOutput(PetscMatlabEngine,FILE*); 62 */ 63 64 EXTERN_C_END 65