Actual source code: ex19f.F

petsc-3.7.1 2016-05-15
Report Typos and Errors
  1: !
  2: !
  3:       program main
  4:       implicit none
  5: #include <petsc/finclude/petscsys.h>
  6: #include <petsc/finclude/petscvec.h>
  7: !
  8: !  This example demonstrates basic use of the PETSc Fortran interface
  9: !  to vectors.
 10: !
 11:        PetscInt  n
 12:        PetscErrorCode ierr
 13:        PetscBool  flg
 14:        PetscScalar      one,two,three,dot
 15:        PetscReal        norm,rdot
 16:        Vec              x,y,w
 17:        PetscOptions     options

 19:        n     = 20
 20:        one   = 1.0
 21:        two   = 2.0
 22:        three = 3.0

 24:        call PetscInitialize(PETSC_NULL_CHARACTER,ierr)
 25:        call PetscOptionsCreate(options,ierr)
 26:        call PetscOptionsGetInt(options,PETSC_NULL_CHARACTER,                  &
 27:      &                        '-n',n,flg,ierr)
 28:        call PetscOptionsDestroy(options,ierr)

 30: ! Create a vector, then duplicate it
 31:        call VecCreate(PETSC_COMM_WORLD,x,ierr)
 32:        call VecSetSizes(x,PETSC_DECIDE,n,ierr)
 33:        call VecSetFromOptions(x,ierr)
 34:        call VecDuplicate(x,y,ierr)
 35:        call VecDuplicate(x,w,ierr)

 37:        call VecSet(x,one,ierr)
 38:        call VecSet(y,two,ierr)

 40:        call VecDot(x,y,dot,ierr)
 41:        rdot = PetscRealPart(dot)
 42:        write(6,100) rdot
 43:   100  format('Result of inner product ',f10.4)

 45:        call VecScale(x,two,ierr)
 46:        call VecNorm(x,NORM_2,norm,ierr)
 47:        write(6,110) norm
 48:   110  format('Result of scaling ',f10.4)

 50:        call VecCopy(x,w,ierr)
 51:        call VecNorm(w,NORM_2,norm,ierr)
 52:        write(6,120) norm
 53:   120  format('Result of copy ',f10.4)

 55:        call VecAXPY(y,three,x,ierr)
 56:        call VecNorm(y,NORM_2,norm,ierr)
 57:        write(6,130) norm
 58:   130  format('Result of axpy ',f10.4)

 60:        call VecDestroy(x,ierr)
 61:        call VecDestroy(y,ierr)
 62:        call VecDestroy(w,ierr)
 63:        call PetscFinalize(ierr)
 64:        end