Actual source code: zf90mat.c

  1: /*$Id: zf90mat.c,v 1.13 2001/09/06 14:49:32 bsmith Exp $*/

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

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

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