Actual source code: zmatlabf.c
1: #include <petsc/private/fortranimpl.h>
2: #include <petscmatlab.h>
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
20: PETSC_EXTERN void petscmatlabenginecreate_(MPI_Comm *comm, char *m, PetscMatlabEngine *e, PetscErrorCode *ierr, PETSC_FORTRAN_CHARLEN_T len)
21: {
22: char *ms;
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: }
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: }
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: }
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: }