Actual source code: ex19.F

  1: !
  2: !    "$Id: ex19.F,v 1.36 2001/01/15 21:45:13 bsmith Exp $";
  3: !
  4:       program main
  5: #include "include/finclude/petsc.h"
  6: #include "include/finclude/petscvec.h"
  7: !
  8: !  This example demonstrates basic use of the PETSc Fortran interface
  9: !  to vectors.
 10: !
 11:        integer          n,ierr,flg
 12:        Scalar           one,two,three,dot
 13:        double precision norm,rdot
 14:        Vec              x,y,w

 16:        n     = 20
 17:        one   = 1.0
 18:        two   = 2.0
 19:        three = 3.0

 21:        call PetscInitialize(PETSC_NULL_CHARACTER,ierr)
 22:        call PetscOptionsGetInt(PETSC_NULL_CHARACTER,'-n',n,flg,ierr)

 24: ! Create a vector, then duplicate it
 25:        call VecCreate(PETSC_COMM_WORLD,PETSC_DECIDE,n,x,ierr)
 26:        call VecSetFromOptions(x,ierr)
 27:        call VecDuplicate(x,y,ierr)
 28:        call VecDuplicate(x,w,ierr)

 30:        call VecSet(one,x,ierr)
 31:        call VecSet(two,y,ierr)

 33:        call VecDot(x,y,dot,ierr)
 34:        rdot = PetscRealPart(dot)
 35:        write(6,100) rdot
 36:   100  format('Result of inner product ',f10.4)

 38:        call VecScale(two,x,ierr)
 39:        call VecNorm(x,NORM_2,norm,ierr)
 40:        write(6,110) norm
 41:   110  format('Result of scaling ',f10.4)

 43:        call VecCopy(x,w,ierr)
 44:        call VecNorm(w,NORM_2,norm,ierr)
 45:        write(6,120) norm
 46:   120  format('Result of copy ',f10.4)

 48:        call VecAXPY(three,x,y,ierr)
 49:        call VecNorm(y,NORM_2,norm,ierr)
 50:        write(6,130) norm
 51:   130  format('Result of axpy ',f10.4)

 53:        call VecDestroy(x,ierr)
 54:        call VecDestroy(y,ierr)
 55:        call VecDestroy(w,ierr)
 56:        call PetscFinalize(ierr)
 57:        end

 59: