xref: /petsc/src/sys/classes/matlabengine/ftn-custom/zmatlabf.c (revision 8cc058d9cd56c1ccb3be12a47760ddfc446aaffc)
15c6c1daeSBarry 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 
20*8cc058d9SJed 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 
30*8cc058d9SJed 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 
39*8cc058d9SJed 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 
48*8cc058d9SJed 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