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