xref: /petsc/src/sys/classes/matlabengine/ftn-custom/zmatlabf.c (revision 2205254efee3a00a594e5e2a3a70f74dcb40bc03)
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 EXTERN_C_BEGIN
21 
22 void PETSC_STDCALL petscmatlabenginecreate_(MPI_Comm *comm,CHAR m PETSC_MIXED_LEN(len),PetscMatlabEngine *e,
23                                             PetscErrorCode *ierr PETSC_END_LEN(len))
24 {
25   char *ms;
26 
27   FIXCHAR(m,len,ms);
28   *ierr = PetscMatlabEngineCreate(MPI_Comm_f2c(*(MPI_Fint*)&*comm),ms,e);
29   FREECHAR(m,ms);
30 }
31 
32 void PETSC_STDCALL petscmatlabengineevaluate_(PetscMatlabEngine *e,CHAR m PETSC_MIXED_LEN(len),
33                                               PetscErrorCode *ierr PETSC_END_LEN(len))
34 {
35   char *ms;
36   FIXCHAR(m,len,ms);
37   *ierr = PetscMatlabEngineEvaluate(*e,ms);
38   FREECHAR(m,ms);
39 }
40 
41 void PETSC_STDCALL petscmatlabengineputarray_(PetscMatlabEngine *e,PetscInt *m,PetscInt *n,PetscScalar *a,
42                                               CHAR s PETSC_MIXED_LEN(len),PetscErrorCode *ierr PETSC_END_LEN(len))
43 {
44   char *ms;
45   FIXCHAR(s,len,ms);
46   *ierr = PetscMatlabEnginePutArray(*e,*m,*n,a,ms);
47   FREECHAR(s,ms);
48 }
49 
50 void PETSC_STDCALL petscmatlabenginegetarray_(PetscMatlabEngine *e,PetscInt *m,PetscInt *n,PetscScalar *a,
51                                               CHAR s PETSC_MIXED_LEN(len),PetscErrorCode *ierr PETSC_END_LEN(len))
52 {
53   char *ms;
54   FIXCHAR(s,len,ms);
55   *ierr = PetscMatlabEngineGetArray(*e,*m,*n,a,ms);
56   FREECHAR(s,ms);
57 }
58 
59 /*
60 extern int PetscMatlabEngineGetOutput(PetscMatlabEngine,char **);
61 extern int PetscMatlabEnginePrintOutput(PetscMatlabEngine,FILE*);
62 */
63 
64 EXTERN_C_END
65