Actual source code: vecf90.F

  1: #include "petscconf.h"
  2: #if defined(PETSC_HAVE_F90_H)
  3:       subroutine dummy_VecGetArrayF90()
  4:       return
  5:       end subroutine

  7: #else
  8:       subroutine VecGetArrayF90(v, array, ierr)
  9:       implicit none

 11: #include "include/finclude/petsc.h"
 12: #include "include/finclude/petscvec.h"

 14:       PetscScalar, pointer :: array(:)
 15:       PetscErrorCode ierr
 16:       Vec v

 18:       PetscScalar, dimension(1), target :: v_local
 19:       PetscOffset offset

 21:       call VecGetArray(v,v_local,offset,ierr)
 22:       array=>v_local(offset+1:)
 23:       return
 24:       end subroutine

 26:       Subroutine VecRestoreArrayF90(v,array,ierr)
 27:       PetscScalar, pointer :: array(:)
 28:       PetscErrorCode ierr
 29:       Vec     v
 30:       PetscOffset offset

 32:       offset = 0
 33:       call VecRestoreArray(v,array,offset,ierr)
 34:       nullify(array)

 36:       return
 37:       end subroutine

 39: #endif