xref: /petsc/src/sys/classes/matlabengine/ftn-custom/zmatlabf.c (revision af0996ce37bc06907c37d8d91773840993d61e62)
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