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: