Actual source code: zf90mat.c

      2: #include "petscmat.h"
      3: #include "petscf90.h"

      5: #ifdef PETSC_HAVE_FORTRAN_CAPS
      6: #define matgetarrayf90_            MATGETARRAYF90
      7: #define matrestorearrayf90_        MATRESTOREARRAYF90
      8: #elif !defined(PETSC_HAVE_FORTRAN_UNDERSCORE)
      9: #define matgetarrayf90_            matgetarrayf90
     10: #define matrestorearrayf90_        matrestorearrayf90
     11: #endif

     14: void PETSC_STDCALL matgetarrayf90_(Mat *mat,F90Array2d *ptr,int *ierr)
     15: {
     16:   PetscScalar *fa;
     17:   int    m,n;
     18:   *MatGetArray(*mat,&fa);       if (*ierr) return;
     19:   *MatGetLocalSize(*mat,&m,&n); if (*ierr) return;
     20:   *F90Array2dCreate(fa,PETSC_SCALAR,1,m,1,n,ptr);
     21: }
     22: void PETSC_STDCALL matrestorearrayf90_(Mat *mat,F90Array2d *ptr,int *ierr)
     23: {
     24:   PetscScalar *fa;
     25:   *F90Array2dAccess(ptr,(void **)&fa);if (*ierr) return;
     26:   *F90Array2dDestroy(ptr);if (*ierr) return;
     27:   *MatRestoreArray(*mat,&fa);
     28: }