1de580fa9SBarry Smith /* 2e3c5b3baSBarry Smith Defines an interface to the MATLAB Engine from PETSc 3de580fa9SBarry Smith */ 46524c165SJacob Faibussowitsch #ifndef PETSCMATLAB_H 526bd1501SBarry Smith #define PETSCMATLAB_H 6de580fa9SBarry Smith 7ac09b921SBarry Smith /* SUBMANSEC = Sys */ 8ac09b921SBarry Smith 9014dd563SJed Brown PETSC_EXTERN PetscClassId MATLABENGINE_CLASSID; 10de580fa9SBarry Smith 11de580fa9SBarry Smith /*S 12e3c5b3baSBarry Smith PetscMatlabEngine - Object used to communicate with MATLAB 13de580fa9SBarry Smith 14de580fa9SBarry Smith Level: intermediate 15de580fa9SBarry Smith 16*2fcac7c0SBarry Smith Notes: 17*2fcac7c0SBarry Smith `Mat`s transferred between PETSc and MATLAB and vis versa are transposed in the other space 18ddcfb6fcSBarry Smith (this is because MATLAB uses compressed column format and PETSc uses compressed row format) 19ddcfb6fcSBarry Smith 20*2fcac7c0SBarry Smith One must `./configure` PETSc with `--with-matlab [-with-matlab-dir=matlab_root_directory]` to 21*2fcac7c0SBarry Smith use this capability 22*2fcac7c0SBarry Smith 23db781477SPatrick Sanan .seealso: `PetscMatlabEngineCreate()`, `PetscMatlabEngineDestroy()`, `PetscMatlabEngineEvaluate()`, 24db781477SPatrick Sanan `PetscMatlabEngineGetOutput()`, `PetscMatlabEnginePut()`, `PetscMatlabEngineGet()`, 25db781477SPatrick Sanan `PetscMatlabEnginePrintOutput()`, `PetscMatlabEnginePutArray()`, `PetscMatlabEngineGetArray()`, 26db781477SPatrick Sanan `PETSC_MATLAB_ENGINE_()`, `PETSC_MATLAB_ENGINE_SELF`, `PETSC_MATLAB_ENGINE_WORLD` 27de580fa9SBarry Smith S*/ 28de580fa9SBarry Smith typedef struct _p_PetscMatlabEngine *PetscMatlabEngine; 29de580fa9SBarry Smith 30014dd563SJed Brown PETSC_EXTERN PetscErrorCode PetscMatlabEngineCreate(MPI_Comm, const char[], PetscMatlabEngine *); 31014dd563SJed Brown PETSC_EXTERN PetscErrorCode PetscMatlabEngineDestroy(PetscMatlabEngine *); 32014dd563SJed Brown PETSC_EXTERN PetscErrorCode PetscMatlabEngineEvaluate(PetscMatlabEngine, const char[], ...); 33014dd563SJed Brown PETSC_EXTERN PetscErrorCode PetscMatlabEngineGetOutput(PetscMatlabEngine, char **); 34014dd563SJed Brown PETSC_EXTERN PetscErrorCode PetscMatlabEnginePrintOutput(PetscMatlabEngine, FILE *); 35014dd563SJed Brown PETSC_EXTERN PetscErrorCode PetscMatlabEnginePut(PetscMatlabEngine, PetscObject); 36014dd563SJed Brown PETSC_EXTERN PetscErrorCode PetscMatlabEngineGet(PetscMatlabEngine, PetscObject); 37014dd563SJed Brown PETSC_EXTERN PetscErrorCode PetscMatlabEnginePutArray(PetscMatlabEngine, int, int, const PetscScalar *, const char[]); 38014dd563SJed Brown PETSC_EXTERN PetscErrorCode PetscMatlabEngineGetArray(PetscMatlabEngine, int, int, PetscScalar *, const char[]); 39de580fa9SBarry Smith 40014dd563SJed Brown PETSC_EXTERN PetscMatlabEngine PETSC_MATLAB_ENGINE_(MPI_Comm); 41de580fa9SBarry Smith 42de580fa9SBarry Smith /*MC 43de580fa9SBarry Smith PETSC_MATLAB_ENGINE_WORLD - same as PETSC_MATLAB_ENGINE_(PETSC_COMM_WORLD) 44de580fa9SBarry Smith 4587497f52SBarry Smith Level: intermediate 4687497f52SBarry Smith 4787497f52SBarry Smith .seealso: `PetscMatlabEngine`, `PETSC_MATLAB_ENGINE_()`, `PETSC_MATLAB_ENGINE_SELF` 48de580fa9SBarry Smith M*/ 49de580fa9SBarry Smith #define PETSC_MATLAB_ENGINE_WORLD PETSC_MATLAB_ENGINE_(PETSC_COMM_WORLD) 50de580fa9SBarry Smith 51de580fa9SBarry Smith /*MC 52de580fa9SBarry Smith PETSC_MATLAB_ENGINE_SELF - same as PETSC_MATLAB_ENGINE_(PETSC_COMM_SELF) 53de580fa9SBarry Smith 5487497f52SBarry Smith Level: intermediate 5587497f52SBarry Smith 5687497f52SBarry Smith .seealso: `PetscMatlabEngine`, `PETSC_MATLAB_ENGINE_()`, `PETSC_MATLAB_ENGINE_WORLD` 57de580fa9SBarry Smith M*/ 58de580fa9SBarry Smith #define PETSC_MATLAB_ENGINE_SELF PETSC_MATLAB_ENGINE_(PETSC_COMM_SELF) 59de580fa9SBarry Smith 60de580fa9SBarry Smith #endif 61