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: }