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