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