1
<center><a href="dspai.c">Actual source code: dspai.c</a></center><br>
6
<meta name="generator" content="c2html 0.9.4">
7
<meta name="date" content="2004-02-27T20:01:43+00:00">
10
<body bgcolor="#FFFFFF">
11
<pre width="80"><a name="line1"> 1: </a><font color="#B22222">/* $Id: dspai.c,v 1.7 2001/08/07 03:03:40 balay Exp $*/</font>
13
<a name="line3"> 3: </a> #include <A href="../../../../../../include/petscmat.h.html">petscmat.h</A>
15
<a name="line5"> 5: </a><font color="#B22222">/*</font>
16
<a name="line6"> 6: </a><font color="#B22222"> MatDumpSPAI - Dumps a PETSc matrix to a file in an ASCII format </font>
17
<a name="line7"> 7: </a><font color="#B22222"> suitable for the SPAI code of Stephen Barnard to solve. This routine</font>
18
<a name="line8"> 8: </a><font color="#B22222"> is simply here to allow testing of matrices directly with the SPAI </font>
19
<a name="line9"> 9: </a><font color="#B22222"> code, rather then through the PETSc interface.</font>
21
<a name="line11"> 11: </a><font color="#B22222">*/</font>
22
<a name="line12"> 12: </a><strong><font color="#4169E1"><a name="MatDumpSPAI"></a>int MatDumpSPAI(<A href="../../../../../../docs/manualpages/Mat/Mat.html#Mat">Mat</A> A,FILE *file)</font></strong>
23
<a name="line13"> 13: </a>{
24
<a name="line14"> 14: </a> <A href="../../../../../../docs/manualpages/Sys/PetscScalar.html#PetscScalar">PetscScalar</A> *vals;
25
<a name="line15"> 15: </a> int i,j,ierr,*cols,n,<A href="../../../../../../docs/manualpages/Sys/size.html#size">size</A>,nz;
26
<a name="line16"> 16: </a> <A href="../../../../../../docs/manualpages/Sys/MPI_Comm.html#MPI_Comm">MPI_Comm</A> <A href="../../../../../../docs/manualpages/Sys/comm.html#comm">comm</A>;
28
<a name="line18"> 18: </a> <A href="../../../../../../docs/manualpages/Sys/PetscObjectGetComm.html#PetscObjectGetComm">PetscObjectGetComm</A>((<A href="../../../../../../docs/manualpages/Sys/PetscObject.html#PetscObject">PetscObject</A>)A,&<A href="../../../../../../docs/manualpages/Sys/comm.html#comm">comm</A>);
29
<a name="line19"> 19: </a>
30
<a name="line20"> 20: </a> <A href="http://www.mcs.anl.gov/mpi/www/www3/MPI_Comm_size.html#MPI_Comm_size">MPI_Comm_size</A>(<A href="../../../../../../docs/manualpages/Sys/comm.html#comm">comm</A>,&<A href="../../../../../../docs/manualpages/Sys/size.html#size">size</A>);
31
<a name="line21"> 21: </a> <font color="#4169E1">if</font> (<A href="../../../../../../docs/manualpages/Sys/size.html#size">size</A> > 1) <A href="../../../../../../docs/manualpages/Sys/SETERRQ.html#SETERRQ">SETERRQ</A>(1,<font color="#666666">"Only single processor dumps"</font>);
33
<a name="line23"> 23: </a> <A href="../../../../../../docs/manualpages/Mat/MatGetSize.html#MatGetSize">MatGetSize</A>(A,&n,&n);
35
<a name="line25"> 25: </a> <font color="#B22222">/* print the matrix */</font>
36
<a name="line26"> 26: </a> fprintf(file,<font color="#666666">"%d\n"</font>,n);
37
<a name="line27"> 27: </a> <font color="#4169E1">for</font> (i=0; i<n; i++) {
38
<a name="line28"> 28: </a> <A href="../../../../../../docs/manualpages/Mat/MatGetRow.html#MatGetRow">MatGetRow</A>(A,i,&nz,&cols,&vals);
39
<a name="line29"> 29: </a> <font color="#4169E1">for</font> (j=0; j<nz; j++) {
40
<a name="line30"> 30: </a> fprintf(file,<font color="#666666">"%d %d %16.14e\n"</font>,i+1,cols[j]+1,vals[j]);
41
<a name="line31"> 31: </a> }
42
<a name="line32"> 32: </a> <A href="../../../../../../docs/manualpages/Mat/MatRestoreRow.html#MatRestoreRow">MatRestoreRow</A>(A,i,&nz,&cols,&vals);
43
<a name="line33"> 33: </a> }
45
<a name="line35"> 35: </a> <font color="#4169E1">return</font>(0);
46
<a name="line36"> 36: </a>}
48
<a name="line38"> 38: </a><strong><font color="#4169E1"><a name="VecDumpSPAI"></a>int VecDumpSPAI(<A href="../../../../../../docs/manualpages/Vec/Vec.html#Vec">Vec</A> b,FILE *file)</font></strong>
49
<a name="line39"> 39: </a>{
50
<a name="line40"> 40: </a> int n,i,ierr;
51
<a name="line41"> 41: </a> <A href="../../../../../../docs/manualpages/Sys/PetscScalar.html#PetscScalar">PetscScalar</A> *array;
53
<a name="line43"> 43: </a> <A href="../../../../../../docs/manualpages/Vec/VecGetSize.html#VecGetSize">VecGetSize</A>(b,&n);
54
<a name="line44"> 44: </a> <A href="../../../../../../docs/manualpages/Vec/VecGetArray.html#VecGetArray">VecGetArray</A>(b,&array);
56
<a name="line46"> 46: </a> fprintf(file,<font color="#666666">"%d\n"</font>,n);
57
<a name="line47"> 47: </a> <font color="#4169E1">for</font> (i=0; i<n; i++) {
58
<a name="line48"> 48: </a> fprintf(file,<font color="#666666">"%d %16.14e\n"</font>,i+1,array[i]);
59
<a name="line49"> 49: </a> }
61
<a name="line51"> 51: </a> <font color="#4169E1">return</font>(0);
62
<a name="line52"> 52: </a>}