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: