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