1*af0996ceSBarry 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 208cc058d9SJed Brown PETSC_EXTERN void PETSC_STDCALL petscmatlabenginecreate_(MPI_Comm *comm,CHAR m PETSC_MIXED_LEN(len),PetscMatlabEngine *e, 215c6c1daeSBarry Smith PetscErrorCode *ierr PETSC_END_LEN(len)) 225c6c1daeSBarry Smith { 235c6c1daeSBarry Smith char *ms; 245c6c1daeSBarry Smith 255c6c1daeSBarry Smith FIXCHAR(m,len,ms); 265c6c1daeSBarry Smith *ierr = PetscMatlabEngineCreate(MPI_Comm_f2c(*(MPI_Fint*)&*comm),ms,e); 275c6c1daeSBarry Smith FREECHAR(m,ms); 285c6c1daeSBarry Smith } 295c6c1daeSBarry Smith 308cc058d9SJed Brown PETSC_EXTERN void PETSC_STDCALL petscmatlabengineevaluate_(PetscMatlabEngine *e,CHAR m PETSC_MIXED_LEN(len), 315c6c1daeSBarry Smith PetscErrorCode *ierr PETSC_END_LEN(len)) 325c6c1daeSBarry Smith { 335c6c1daeSBarry Smith char *ms; 345c6c1daeSBarry Smith FIXCHAR(m,len,ms); 355c6c1daeSBarry Smith *ierr = PetscMatlabEngineEvaluate(*e,ms); 365c6c1daeSBarry Smith FREECHAR(m,ms); 375c6c1daeSBarry Smith } 385c6c1daeSBarry Smith 398cc058d9SJed Brown PETSC_EXTERN void PETSC_STDCALL petscmatlabengineputarray_(PetscMatlabEngine *e,PetscInt *m,PetscInt *n,PetscScalar *a, 405c6c1daeSBarry Smith CHAR s PETSC_MIXED_LEN(len),PetscErrorCode *ierr PETSC_END_LEN(len)) 415c6c1daeSBarry Smith { 425c6c1daeSBarry Smith char *ms; 435c6c1daeSBarry Smith FIXCHAR(s,len,ms); 445c6c1daeSBarry Smith *ierr = PetscMatlabEnginePutArray(*e,*m,*n,a,ms); 455c6c1daeSBarry Smith FREECHAR(s,ms); 465c6c1daeSBarry Smith } 475c6c1daeSBarry Smith 488cc058d9SJed Brown PETSC_EXTERN void PETSC_STDCALL petscmatlabenginegetarray_(PetscMatlabEngine *e,PetscInt *m,PetscInt *n,PetscScalar *a, 495c6c1daeSBarry Smith CHAR s PETSC_MIXED_LEN(len),PetscErrorCode *ierr PETSC_END_LEN(len)) 505c6c1daeSBarry Smith { 515c6c1daeSBarry Smith char *ms; 525c6c1daeSBarry Smith FIXCHAR(s,len,ms); 535c6c1daeSBarry Smith *ierr = PetscMatlabEngineGetArray(*e,*m,*n,a,ms); 545c6c1daeSBarry Smith FREECHAR(s,ms); 555c6c1daeSBarry Smith } 565c6c1daeSBarry Smith 57