Actual source code: ex32f.F

  1: !
  2: !    "$Id: ex32f.F,v 1.5 2001/08/07 03:02:26 balay Exp $";
  3: !
  4: !  Tests PescOffsetFortran()
  5: !  duplicated
  6:       program main
  7:        implicit none

 9:  #include include/finclude/petsc.h
 10:  #include include/finclude/petscis.h
 11:  #include include/finclude/petscvec.h

 13:       integer ierr, n, size

 15:       PetscScalar  v_v1(1),v_v2(1)
 16:       Vec     v
 17:       integer i,i_v1,i_v2
 18: 
 19:       n=8
 20:       call PetscInitialize(PETSC_NULL_CHARACTER,ierr)
 21:       call MPI_Comm_size(PETSC_COMM_WORLD,size,ierr)
 22:       if (size .gt. 1) then
 23:         print*,'Example for one processor only'
 24:         call MPI_Abort(MPI_COMM_WORLD,0)
 25:       endif

 27:       call VecCreateMPI(PETSC_COMM_WORLD,PETSC_DECIDE,n,v,ierr)
 28:       call VecGetArray(v,v_v1,i_v1,ierr)
 29:       call PetscOffsetFortran(v_v2,v_v1,i_v2,ierr)
 30:       i_v2 = i_v1 + i_v2

 32:       do 10, i=1,n
 33:         v_v1(i_v1 + i) = i
 34:  10   continue

 36:       call VecView(v,PETSC_VIEWER_STDOUT_WORLD,ierr)

 38:       do 20, i=1,n
 39:         print*,i,v_v2(i_v2 + i)
 40:  20   continue

 42:       call VecDestroy(v,ierr)

 44:       call PetscFinalize(ierr)
 45: 
 46:       end
 47: