Actual source code: ex19f.F

  1: !
  2: !
  3:       program main
 4:  #include finclude/petscsys.h
 5:  #include finclude/petscvec.h
  6: !
  7: !  This example demonstrates basic use of the PETSc Fortran interface
  8: !  to vectors.
  9: !
 10:        PetscInt  n
 11:        PetscErrorCode ierr
 12:        PetscTruth flg
 13:        PetscScalar      one,two,three,dot
 14:        PetscReal        norm,rdot
 15:        Vec              x,y,w

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

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

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

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

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

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

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

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

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

 61: