xref: /petsc/src/sys/classes/matlabengine/ftn-custom/zmatlabf.c (revision c4762a1b19cd2af06abeed90e8f9d34fb975dd94)
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 petscmatlabenginecreate_(MPI_Comm *comm,char* m,PetscMatlabEngine *e,
21                                             PetscErrorCode *ierr,PETSC_FORTRAN_CHARLEN_T len)
22 {
23   char *ms;
24 
25   FIXCHAR(m,len,ms);
26   *ierr = PetscMatlabEngineCreate(MPI_Comm_f2c(*(MPI_Fint*)&*comm),ms,e);if (*ierr) return;
27   FREECHAR(m,ms);
28 }
29 
30 PETSC_EXTERN void petscmatlabengineevaluate_(PetscMatlabEngine *e,char* m,
31                                               PetscErrorCode *ierr,PETSC_FORTRAN_CHARLEN_T len)
32 {
33   char *ms;
34   FIXCHAR(m,len,ms);
35   *ierr = PetscMatlabEngineEvaluate(*e,ms);if (*ierr) return;
36   FREECHAR(m,ms);
37 }
38 
39 PETSC_EXTERN void petscmatlabengineputarray_(PetscMatlabEngine *e,PetscInt *m,PetscInt *n,PetscScalar *a,
40                                               char* s,PetscErrorCode *ierr,PETSC_FORTRAN_CHARLEN_T len)
41 {
42   char *ms;
43   FIXCHAR(s,len,ms);
44   *ierr = PetscMatlabEnginePutArray(*e,*m,*n,a,ms);if (*ierr) return;
45   FREECHAR(s,ms);
46 }
47 
48 PETSC_EXTERN void petscmatlabenginegetarray_(PetscMatlabEngine *e,PetscInt *m,PetscInt *n,PetscScalar *a,
49                                               char* s,PetscErrorCode *ierr,PETSC_FORTRAN_CHARLEN_T len)
50 {
51   char *ms;
52   FIXCHAR(s,len,ms);
53   *ierr = PetscMatlabEngineGetArray(*e,*m,*n,a,ms);if (*ierr) return;
54   FREECHAR(s,ms);
55 }
56 
57