Actual source code: ex19.F

  1: !
  2: !    "$Id: ex19.F,v 1.38 2001/08/10 03:08:33 balay 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:        PetscScalar      one,two,three,dot
 13:        PetscReal        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,x,ierr)
 26:        call VecSetSizes(x,PETSC_DECIDE,n,ierr)
 27:        call VecSetFromOptions(x,ierr)
 28:        call VecDuplicate(x,y,ierr)
 29:        call VecDuplicate(x,w,ierr)

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

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

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

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

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

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

 60: