Actual source code: ex19.F
1: !
2: ! "$Id: ex19.F,v 1.36 2001/01/15 21:45:13 bsmith 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: Scalar one,two,three,dot
13: double precision 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,PETSC_DECIDE,n,x,ierr)
26: call VecSetFromOptions(x,ierr)
27: call VecDuplicate(x,y,ierr)
28: call VecDuplicate(x,w,ierr)
30: call VecSet(one,x,ierr)
31: call VecSet(two,y,ierr)
33: call VecDot(x,y,dot,ierr)
34: rdot = PetscRealPart(dot)
35: write(6,100) rdot
36: 100 format('Result of inner product ',f10.4)
38: call VecScale(two,x,ierr)
39: call VecNorm(x,NORM_2,norm,ierr)
40: write(6,110) norm
41: 110 format('Result of scaling ',f10.4)
43: call VecCopy(x,w,ierr)
44: call VecNorm(w,NORM_2,norm,ierr)
45: write(6,120) norm
46: 120 format('Result of copy ',f10.4)
48: call VecAXPY(three,x,y,ierr)
49: call VecNorm(y,NORM_2,norm,ierr)
50: write(6,130) norm
51: 130 format('Result of axpy ',f10.4)
53: call VecDestroy(x,ierr)
54: call VecDestroy(y,ierr)
55: call VecDestroy(w,ierr)
56: call PetscFinalize(ierr)
57: end
59: