~ubuntu-branches/ubuntu/warty/petsc/warty

« back to all changes in this revision

Viewing changes to src/sles/examples/tests/ex16.F.html

  • Committer: Bazaar Package Importer
  • Author(s): Adam C. Powell, IV
  • Date: 2004-06-07 13:41:43 UTC
  • mfrom: (1.1.1 upstream)
  • Revision ID: james.westby@ubuntu.com-20040607134143-92p586zrauvie0le
Tags: 2.2.0-2
* Upstream patch level 2.
* New PETSC_BOPT_EXTRA option for different BOPT and lib names, with _c++
  symlinks only for plain and single (closes: #249617).
* New DEBIAN_DIST=contrib option to link with hypre, parmetis (closes:
  #249619).
* Combined petsc-c and petsc-fortran substvars into petsc-compilers.
* Extra quote in -dev prerm eliminates "too many arguments" problem.

Show diffs side-by-side

added added

removed removed

Lines of Context:
1
 
<center><a href="ex16.F">Actual source code: ex16.F</a></center><br>
2
 
 
3
 
<html>
4
 
<head>
5
 
<title></title>
6
 
<meta name="generator" content="c2html 0.9.1">
7
 
<meta name="date" content="2002-05-31T16:28:03+00:00">
8
 
</head>
9
 
 
10
 
<body bgcolor="#FFFFFF">
11
 
<pre width="80"><a name="line1">  1: </a>!
12
 
<a name="line2">  2: </a>!      <font color="#666666">"$Id: ex16.F,v 1.29 2001/08/07 03:03:57 balay Exp $"</font>;
13
 
<a name="line3">  3: </a>!
14
 
<a name="line4">  4: </a>      program main
15
 
<a name="line5">  5: </a>       implicit none
16
 
 
17
 
<a name="line7"> 7: </a> #include <A href="../../../../include/finclude/petsc.h.html">include/finclude/petsc.h</A>
18
 
<a name="line8"> 8: </a> #include <A href="../../../../include/finclude/petscvec.h.html">include/finclude/petscvec.h</A>
19
 
<a name="line9"> 9: </a> #include <A href="../../../../include/finclude/petscmat.h.html">include/finclude/petscmat.h</A>
20
 
<a name="line10"> 10: </a> #include <A href="../../../../include/finclude/petscpc.h.html">include/finclude/petscpc.h</A>
21
 
<a name="line11"> 11: </a> #include <A href="../../../../include/finclude/petscsles.h.html">include/finclude/petscsles.h</A>
22
 
<a name="line12"> 12: </a> #include <A href="../../../../include/finclude/petscviewer.h.html">include/finclude/petscviewer.h</A>
23
 
<a name="line13"> 13: </a> #include <A href="../../../../include/finclude/petscis.h.html">include/finclude/petscis.h</A>
24
 
<a name="line14"> 14: </a>!
25
 
<a name="line15"> 15: </a>!  This example is a modified Fortran version of ex6.c.  It tests the use of
26
 
<a name="line16"> 16: </a>!  options prefixes in PETSc. Two linear problems are solved in this program.
27
 
<a name="line17"> 17: </a>!  The first problem is read from a file. The second problem is constructed
28
 
<a name="line18"> 18: </a>!  from the first, by eliminating some of the entries of the linear matrix 'A'.
29
 
 
30
 
<a name="line20"> 20: </a>!  Each solve is distinguished by a unique prefix - 'a' <font color="#4169E1">for</font> the first, 'b'
31
 
<a name="line21"> 21: </a>!  <font color="#4169E1">for</font> the second.  With the prefix the user can distinguish between the various
32
 
<a name="line22"> 22: </a>!  options (command line, from .petscrc file, etc.) <font color="#4169E1">for</font> each of the solvers.
33
 
<a name="line23"> 23: </a>!  Input arguments are:
34
 
<a name="line24"> 24: </a>!     -f &lt;input_file&gt; : file to load.  For a 5X5 example of the 5-pt. stencil
35
 
<a name="line25"> 25: </a>!                       use the file petsc/src/mat/examples/mat.ex.binary
36
 
 
37
 
<a name="line27"> 27: </a>      integer          ierr,its,flg
38
 
<a name="line28"> 28: </a>      <A href="../../../../docs/manualpages/Sys/PetscScalar.html#PetscScalar">PetscScalar</A>      norm,none,five
39
 
<a name="line29"> 29: </a>      <A href="../../../../docs/manualpages/Vec/Vec.html#Vec">Vec</A>              x,b,u
40
 
<a name="line30"> 30: </a>      <A href="../../../../docs/manualpages/Mat/Mat.html#Mat">Mat</A>              A
41
 
<a name="line31"> 31: </a>      <A href="../../../../docs/manualpages/SLES/SLES.html#SLES">SLES</A>             sles1,sles2
42
 
<a name="line32"> 32: </a>      character*(128)  f
43
 
<a name="line33"> 33: </a>      <A href="../../../../docs/manualpages/Viewer/PetscViewer.html#PetscViewer">PetscViewer</A>           fd
44
 
<a name="line34"> 34: </a>      <A href="../../../../docs/manualpages/IS/IS.html#IS">IS</A>               isrow
45
 
<a name="line35"> 35: </a>      PetscLogDouble       time1,time2
46
 
 
47
 
<a name="line37"> 37: </a>      none = -1.0
48
 
<a name="line38"> 38: </a>      five = 5.0
49
 
<a name="line39"> 39: </a>      call <A href="../../../../docs/manualpages/Sys/PetscInitialize.html#PetscInitialize">PetscInitialize</A>(PETSC_NULL_CHARACTER,ierr)
50
 
 
51
 
<a name="line41"> 41: </a>! Read in matrix and RHS
52
 
<a name="line42"> 42: </a>      call <A href="../../../../docs/manualpages/Sys/PetscOptionsGetString.html#PetscOptionsGetString">PetscOptionsGetString</A>(PETSC_NULL_CHARACTER,'-f',f,flg,ierr)
53
 
<a name="line43"> 43: </a>      call <A href="../../../../docs/manualpages/Viewer/PetscViewerBinaryOpen.html#PetscViewerBinaryOpen">PetscViewerBinaryOpen</A>(PETSC_COMM_WORLD,f,PETSC_BINARY_RDONLY,            &amp;
54
 
<a name="line44"> 44: </a>     &amp;     fd,ierr)
55
 
<a name="line45"> 45: </a>      <font color="#4169E1">if</font> (ierr .ne. 0) then
56
 
<a name="line46"> 46: </a>        print*, 'Unable to open file ',f
57
 
<a name="line47"> 47: </a>        <A href="../../../../docs/manualpages/Sys/SETERRQ.html#SETERRQ">SETERRQ</A>(1,' ',ierr)
58
 
<a name="line48"> 48: </a>      endif
59
 
 
60
 
<a name="line50"> 50: </a>      call <A href="../../../../docs/manualpages/Mat/MatLoad.html#MatLoad">MatLoad</A>(fd,MATSEQAIJ,A,ierr)
61
 
<a name="line51"> 51: </a>      <font color="#4169E1">if</font> (ierr .ne. 0) then
62
 
<a name="line52"> 52: </a>        print*, 'Unable to load matrix '
63
 
<a name="line53"> 53: </a>        <A href="../../../../docs/manualpages/Sys/SETERRQ.html#SETERRQ">SETERRQ</A>(1,' ',ierr)
64
 
<a name="line54"> 54: </a>      endif
65
 
 
66
 
<a name="line56"> 56: </a>      call <A href="../../../../docs/manualpages/Vec/VecLoad.html#VecLoad">VecLoad</A>(fd,b,ierr)
67
 
<a name="line57"> 57: </a>      call <A href="../../../../docs/manualpages/Viewer/PetscViewerDestroy.html#PetscViewerDestroy">PetscViewerDestroy</A>(fd,ierr)
68
 
 
69
 
<a name="line59"> 59: </a>! Set up solution
70
 
<a name="line60"> 60: </a>      call <A href="../../../../docs/manualpages/Vec/VecDuplicate.html#VecDuplicate">VecDuplicate</A>(b,x,ierr)
71
 
<a name="line61"> 61: </a>      call <A href="../../../../docs/manualpages/Vec/VecDuplicate.html#VecDuplicate">VecDuplicate</A>(b,u,ierr)
72
 
 
73
 
<a name="line63"> 63: </a>! Solve system-1
74
 
<a name="line64"> 64: </a>      call <A href="../../../../docs/manualpages/SLES/SLESCreate.html#SLESCreate">SLESCreate</A>(PETSC_COMM_WORLD,sles1,ierr)
75
 
<a name="line65"> 65: </a>      call <A href="../../../../docs/manualpages/SLES/SLESSetOptionsPrefix.html#SLESSetOptionsPrefix">SLESSetOptionsPrefix</A>(sles1,'a',ierr)
76
 
<a name="line66"> 66: </a>      call <A href="../../../../docs/manualpages/SLES/SLESAppendOptionsPrefix.html#SLESAppendOptionsPrefix">SLESAppendOptionsPrefix</A>(sles1,'_',ierr)
77
 
<a name="line67"> 67: </a>      call <A href="../../../../docs/manualpages/SLES/SLESSetOperators.html#SLESSetOperators">SLESSetOperators</A>(sles1,A,A,DIFFERENT_NONZERO_PATTERN,        &amp;
78
 
<a name="line68"> 68: </a>     &amp;                      ierr)
79
 
<a name="line69"> 69: </a>      call <A href="../../../../docs/manualpages/SLES/SLESSetFromOptions.html#SLESSetFromOptions">SLESSetFromOptions</A>(sles1,ierr)
80
 
<a name="line70"> 70: </a>      call <A href="../../../../docs/manualpages/Profiling/PetscGetTime.html#PetscGetTime">PetscGetTime</A>(time1,ierr)
81
 
<a name="line71"> 71: </a>      call <A href="../../../../docs/manualpages/SLES/SLESSolve.html#SLESSolve">SLESSolve</A>(sles1,b,x,its,ierr)
82
 
<a name="line72"> 72: </a>      call <A href="../../../../docs/manualpages/Profiling/PetscGetTime.html#PetscGetTime">PetscGetTime</A>(time2,ierr)
83
 
 
84
 
<a name="line74"> 74: </a>! Show result
85
 
<a name="line75"> 75: </a>      call <A href="../../../../docs/manualpages/Mat/MatMult.html#MatMult">MatMult</A>(A,x,u,ierr)
86
 
<a name="line76"> 76: </a>      call <A href="../../../../docs/manualpages/Vec/VecAXPY.html#VecAXPY">VecAXPY</A>(none,b,u,ierr)
87
 
<a name="line77"> 77: </a>      call <A href="../../../../docs/manualpages/Vec/VecNorm.html#VecNorm">VecNorm</A>(u,NORM_2,norm,ierr)
88
 
 
89
 
<a name="line79"> 79: </a>!      print*, 'Time for solve = ',time2-time1
90
 
 
91
 
<a name="line81"> 81: </a>      write(6,100) norm,its
92
 
<a name="line82"> 82: </a>  100 format('Residual norm ',e10.4,' iterations ',i5)
93
 
 
94
 
<a name="line84"> 84: </a>! Create system 2 by striping off some rows of the matrix
95
 
<a name="line85"> 85: </a>      call <A href="../../../../docs/manualpages/IS/ISCreateStride.html#ISCreateStride">ISCreateStride</A>(PETSC_COMM_SELF,5,0,1,isrow,ierr)
96
 
<a name="line86"> 86: </a>      call <A href="../../../../docs/manualpages/Mat/MatZeroRows.html#MatZeroRows">MatZeroRows</A>(A,isrow,five,ierr)
97
 
 
98
 
<a name="line88"> 88: </a>! Solve system-2
99
 
<a name="line89"> 89: </a>      call <A href="../../../../docs/manualpages/SLES/SLESCreate.html#SLESCreate">SLESCreate</A>(PETSC_COMM_WORLD,sles2,ierr)
100
 
<a name="line90"> 90: </a>      call <A href="../../../../docs/manualpages/SLES/SLESSetOptionsPrefix.html#SLESSetOptionsPrefix">SLESSetOptionsPrefix</A>(sles2,'b',ierr)
101
 
<a name="line91"> 91: </a>      call <A href="../../../../docs/manualpages/SLES/SLESAppendOptionsPrefix.html#SLESAppendOptionsPrefix">SLESAppendOptionsPrefix</A>(sles2,'_',ierr)
102
 
<a name="line92"> 92: </a>      call <A href="../../../../docs/manualpages/SLES/SLESSetOperators.html#SLESSetOperators">SLESSetOperators</A>(sles2,A,A,DIFFERENT_NONZERO_PATTERN,        &amp;
103
 
<a name="line93"> 93: </a>     &amp;                      ierr)
104
 
<a name="line94"> 94: </a>      call <A href="../../../../docs/manualpages/SLES/SLESSetFromOptions.html#SLESSetFromOptions">SLESSetFromOptions</A>(sles2,ierr)
105
 
<a name="line95"> 95: </a>      call <A href="../../../../docs/manualpages/Profiling/PetscGetTime.html#PetscGetTime">PetscGetTime</A>(time1,ierr)
106
 
<a name="line96"> 96: </a>      call <A href="../../../../docs/manualpages/SLES/SLESSolve.html#SLESSolve">SLESSolve</A>(sles2,b,x,its,ierr)
107
 
<a name="line97"> 97: </a>      call <A href="../../../../docs/manualpages/Profiling/PetscGetTime.html#PetscGetTime">PetscGetTime</A>(time2,ierr)
108
 
 
109
 
<a name="line99"> 99: </a>! Show result
110
 
<a name="line100">100: </a>      call <A href="../../../../docs/manualpages/Mat/MatMult.html#MatMult">MatMult</A>(A,x,u,ierr)
111
 
<a name="line101">101: </a>      call <A href="../../../../docs/manualpages/Vec/VecAXPY.html#VecAXPY">VecAXPY</A>(none,b,u,ierr)
112
 
<a name="line102">102: </a>      call <A href="../../../../docs/manualpages/Vec/VecNorm.html#VecNorm">VecNorm</A>(u,NORM_2,norm,ierr)
113
 
<a name="line103">103: </a>!      print*, 'Time for solve = ',time2-time1
114
 
<a name="line104">104: </a>      write(6,100) norm,its
115
 
 
116
 
<a name="line106">106: </a>! Cleanup
117
 
<a name="line107">107: </a>      call <A href="../../../../docs/manualpages/SLES/SLESDestroy.html#SLESDestroy">SLESDestroy</A>(sles1,ierr)
118
 
<a name="line108">108: </a>      call <A href="../../../../docs/manualpages/SLES/SLESDestroy.html#SLESDestroy">SLESDestroy</A>(sles2,ierr)
119
 
<a name="line109">109: </a>      call <A href="../../../../docs/manualpages/Vec/VecDestroy.html#VecDestroy">VecDestroy</A>(b,ierr)
120
 
<a name="line110">110: </a>      call <A href="../../../../docs/manualpages/Vec/VecDestroy.html#VecDestroy">VecDestroy</A>(x,ierr)
121
 
<a name="line111">111: </a>      call <A href="../../../../docs/manualpages/Vec/VecDestroy.html#VecDestroy">VecDestroy</A>(u,ierr)
122
 
<a name="line112">112: </a>      call <A href="../../../../docs/manualpages/Mat/MatDestroy.html#MatDestroy">MatDestroy</A>(A,ierr)
123
 
<a name="line113">113: </a>      call <A href="../../../../docs/manualpages/IS/ISDestroy.html#ISDestroy">ISDestroy</A>(isrow,ierr)
124
 
 
125
 
<a name="line115">115: </a>      call <A href="../../../../docs/manualpages/Sys/PetscFinalize.html#PetscFinalize">PetscFinalize</A>(ierr)
126
 
<a name="line116">116: </a>      end
127
 
 
128
 
</pre>
129
 
</body>
130
 
 
131
 
</html>