Sophie

Sophie

distrib > Fedora > 17 > i386 > by-pkgid > 6f9b777f038c75c883ffd8a1c97d6221 > files > 79

SuperLU-devel-4.3-5.fc17.i686.rpm

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html><head><meta http-equiv="Content-Type" content="text/html;charset=UTF-8">
<title>SuperLU: EXAMPLE/ditersol1.c File Reference</title>
<link href="doxygen.css" rel="stylesheet" type="text/css">
<link href="tabs.css" rel="stylesheet" type="text/css">
</head><body>
<!-- Generated by Doxygen 1.5.5 -->
<div class="navigation" id="top">
  <div class="tabs">
    <ul>
      <li><a href="index.html"><span>Main&nbsp;Page</span></a></li>
      <li><a href="annotated.html"><span>Data&nbsp;Structures</span></a></li>
      <li class="current"><a href="files.html"><span>Files</span></a></li>
    </ul>
  </div>
</div>
<div class="contents">
<h1>EXAMPLE/ditersol1.c File Reference</h1>Example #2 showing how to use ILU to precondition GMRES. <a href="#_details">More...</a>
<p>
<code>#include &quot;<a class="el" href="slu__ddefs_8h-source.html">slu_ddefs.h</a>&quot;</code><br>
<table border="0" cellpadding="0" cellspacing="0">
<tr><td></td></tr>
<tr><td colspan="2"><br><h2>Functions</h2></td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top">void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="ditersol1_8c.html#0361a1766c36ff38205dc63f1b329afd">dpsolve</a> (int n, double x[], double y[])</td></tr>

<tr><td class="memItemLeft" nowrap align="right" valign="top">void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="ditersol1_8c.html#367b39a8f8095885ffb10c66c6652aff">dmatvec_mult</a> (double alpha, double x[], double beta, double y[])</td></tr>

<tr><td class="memItemLeft" nowrap align="right" valign="top">int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="ditersol1_8c.html#0ddf1224851353fc92bfbff6f499fa97">main</a> (int argc, char *argv[])</td></tr>

<tr><td colspan="2"><br><h2>Variables</h2></td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top">char *&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="ditersol1_8c.html#869338b25a186a486edd0cf1850a7fbb">GLOBAL_EQUED</a></td></tr>

<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="el" href="structsuperlu__options__t.html">superlu_options_t</a> *&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="ditersol1_8c.html#64b516645b16ef03c6fd0d692e6eb277">GLOBAL_OPTIONS</a></td></tr>

<tr><td class="memItemLeft" nowrap align="right" valign="top">double *&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="ditersol1_8c.html#8cb83de814c7fbf89011ba08bb602ce0">GLOBAL_R</a></td></tr>

<tr><td class="memItemLeft" nowrap align="right" valign="top">double *&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="ditersol1_8c.html#c5dce1561e620f6a6f6b6f17d82df4e8">GLOBAL_C</a></td></tr>

<tr><td class="memItemLeft" nowrap align="right" valign="top">int *&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="ditersol1_8c.html#fbcb1904a71d92b04c1aef1cede6c4b1">GLOBAL_PERM_C</a></td></tr>

<tr><td class="memItemLeft" nowrap align="right" valign="top">int *&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="ditersol1_8c.html#5a42ee721355f1c852f770661834be93">GLOBAL_PERM_R</a></td></tr>

<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="el" href="structSuperMatrix.html">SuperMatrix</a> *&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="ditersol1_8c.html#d42e5c3013507184841cdfee652a0c18">GLOBAL_A</a></td></tr>

<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="el" href="structSuperMatrix.html">SuperMatrix</a> *&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="ditersol1_8c.html#f1beb2a8fb47df4eb505addfef02814c">GLOBAL_A_ORIG</a></td></tr>

<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="el" href="structSuperMatrix.html">SuperMatrix</a> *&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="ditersol1_8c.html#0f5cf27b325ef2874c953290f74c9d0a">GLOBAL_L</a></td></tr>

<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="el" href="structSuperMatrix.html">SuperMatrix</a> *&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="ditersol1_8c.html#000ad5c2198e4309802b4478ed08a98c">GLOBAL_U</a></td></tr>

<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="el" href="structSuperLUStat__t.html">SuperLUStat_t</a> *&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="ditersol1_8c.html#96a062252c26544370e8feae987c6d16">GLOBAL_STAT</a></td></tr>

<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="el" href="structmem__usage__t.html">mem_usage_t</a> *&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="ditersol1_8c.html#19718c440adb41fbebcb4bafedbf932c">GLOBAL_MEM_USAGE</a></td></tr>

</table>
<hr><a name="_details"></a><h2>Detailed Description</h2>
<pre>
 -- SuperLU routine (version 4.2) --
 Lawrence Berkeley National Laboratory
 November, 2010
 August, 2011</pre><p>
<pre> This example shows that ILU is computed from the equilibrated matrix,
 but the preconditioned GMRES is applied to the original system.
 The driver routine DGSISX is called twice to perform factorization
 and apply preconditioner separately.</pre><p>
<pre> Note that DGSISX performs the following factorization:
     Pr*Dr*A*Dc*Pc^T ~= LU
 with Pr being obtained from MC64 statically then partial pivoting
 dybamically. On return, A is overwritten as A1 = Dr*A*Dc.</pre><p>
<pre> We need to save a copy of the original matrix A, then solve
 the original system, A*x = B, using FGMRES.
 Each GMRES step requires requires 2 procedures:
   1) Apply preconditioner M^{-1} = Dc*Pc^T*U^{-1}*L^{-1}*Pr*Dr
   2) Matrix-vector multiplication: w = A*v</pre><p>
<pre> </pre> <hr><h2>Function Documentation</h2>
<a class="anchor" name="367b39a8f8095885ffb10c66c6652aff"></a><!-- doxytag: member="ditersol1.c::dmatvec_mult" ref="367b39a8f8095885ffb10c66c6652aff" args="(double alpha, double x[], double beta, double y[])" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">void dmatvec_mult           </td>
          <td>(</td>
          <td class="paramtype">double&nbsp;</td>
          <td class="paramname"> <em>alpha</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">double&nbsp;</td>
          <td class="paramname"> <em>x</em>[], </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">double&nbsp;</td>
          <td class="paramname"> <em>beta</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">double&nbsp;</td>
          <td class="paramname"> <em>y</em>[]</td><td>&nbsp;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td><td width="100%"></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>

</div>
</div><p>
<a class="anchor" name="0361a1766c36ff38205dc63f1b329afd"></a><!-- doxytag: member="ditersol1.c::dpsolve" ref="0361a1766c36ff38205dc63f1b329afd" args="(int n, double x[], double y[])" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">void dpsolve           </td>
          <td>(</td>
          <td class="paramtype">int&nbsp;</td>
          <td class="paramname"> <em>n</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">double&nbsp;</td>
          <td class="paramname"> <em>x</em>[], </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">double&nbsp;</td>
          <td class="paramname"> <em>y</em>[]</td><td>&nbsp;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td><td width="100%"></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>

</div>
</div><p>
<a class="anchor" name="0ddf1224851353fc92bfbff6f499fa97"></a><!-- doxytag: member="ditersol1.c::main" ref="0ddf1224851353fc92bfbff6f499fa97" args="(int argc, char *argv[])" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">int main           </td>
          <td>(</td>
          <td class="paramtype">int&nbsp;</td>
          <td class="paramname"> <em>argc</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">char *&nbsp;</td>
          <td class="paramname"> <em>argv</em>[]</td><td>&nbsp;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td><td width="100%"></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>

</div>
</div><p>
<hr><h2>Variable Documentation</h2>
<a class="anchor" name="d42e5c3013507184841cdfee652a0c18"></a><!-- doxytag: member="ditersol1.c::GLOBAL_A" ref="d42e5c3013507184841cdfee652a0c18" args="" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname"><a class="el" href="structSuperMatrix.html">SuperMatrix</a>* <a class="el" href="zitersol1_8c.html#d42e5c3013507184841cdfee652a0c18">GLOBAL_A</a>          </td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>

</div>
</div><p>
<a class="anchor" name="f1beb2a8fb47df4eb505addfef02814c"></a><!-- doxytag: member="ditersol1.c::GLOBAL_A_ORIG" ref="f1beb2a8fb47df4eb505addfef02814c" args="" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname"><a class="el" href="structSuperMatrix.html">SuperMatrix</a> * <a class="el" href="zitersol1_8c.html#f1beb2a8fb47df4eb505addfef02814c">GLOBAL_A_ORIG</a>          </td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>

</div>
</div><p>
<a class="anchor" name="c5dce1561e620f6a6f6b6f17d82df4e8"></a><!-- doxytag: member="ditersol1.c::GLOBAL_C" ref="c5dce1561e620f6a6f6b6f17d82df4e8" args="" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">double * <a class="el" href="zitersol1_8c.html#c5dce1561e620f6a6f6b6f17d82df4e8">GLOBAL_C</a>          </td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>

</div>
</div><p>
<a class="anchor" name="869338b25a186a486edd0cf1850a7fbb"></a><!-- doxytag: member="ditersol1.c::GLOBAL_EQUED" ref="869338b25a186a486edd0cf1850a7fbb" args="" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">char* <a class="el" href="zitersol1_8c.html#869338b25a186a486edd0cf1850a7fbb">GLOBAL_EQUED</a>          </td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>

</div>
</div><p>
<a class="anchor" name="0f5cf27b325ef2874c953290f74c9d0a"></a><!-- doxytag: member="ditersol1.c::GLOBAL_L" ref="0f5cf27b325ef2874c953290f74c9d0a" args="" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname"><a class="el" href="structSuperMatrix.html">SuperMatrix</a> * <a class="el" href="zitersol1_8c.html#0f5cf27b325ef2874c953290f74c9d0a">GLOBAL_L</a>          </td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>

</div>
</div><p>
<a class="anchor" name="19718c440adb41fbebcb4bafedbf932c"></a><!-- doxytag: member="ditersol1.c::GLOBAL_MEM_USAGE" ref="19718c440adb41fbebcb4bafedbf932c" args="" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname"><a class="el" href="structmem__usage__t.html">mem_usage_t</a>* <a class="el" href="zitersol1_8c.html#19718c440adb41fbebcb4bafedbf932c">GLOBAL_MEM_USAGE</a>          </td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>

</div>
</div><p>
<a class="anchor" name="64b516645b16ef03c6fd0d692e6eb277"></a><!-- doxytag: member="ditersol1.c::GLOBAL_OPTIONS" ref="64b516645b16ef03c6fd0d692e6eb277" args="" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname"><a class="el" href="structsuperlu__options__t.html">superlu_options_t</a>* <a class="el" href="zitersol1_8c.html#64b516645b16ef03c6fd0d692e6eb277">GLOBAL_OPTIONS</a>          </td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>

</div>
</div><p>
<a class="anchor" name="fbcb1904a71d92b04c1aef1cede6c4b1"></a><!-- doxytag: member="ditersol1.c::GLOBAL_PERM_C" ref="fbcb1904a71d92b04c1aef1cede6c4b1" args="" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">int* <a class="el" href="zitersol1_8c.html#fbcb1904a71d92b04c1aef1cede6c4b1">GLOBAL_PERM_C</a>          </td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>

</div>
</div><p>
<a class="anchor" name="5a42ee721355f1c852f770661834be93"></a><!-- doxytag: member="ditersol1.c::GLOBAL_PERM_R" ref="5a42ee721355f1c852f770661834be93" args="" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">int * <a class="el" href="zitersol1_8c.html#5a42ee721355f1c852f770661834be93">GLOBAL_PERM_R</a>          </td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>

</div>
</div><p>
<a class="anchor" name="8cb83de814c7fbf89011ba08bb602ce0"></a><!-- doxytag: member="ditersol1.c::GLOBAL_R" ref="8cb83de814c7fbf89011ba08bb602ce0" args="" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">double* <a class="el" href="zitersol1_8c.html#8cb83de814c7fbf89011ba08bb602ce0">GLOBAL_R</a>          </td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>

</div>
</div><p>
<a class="anchor" name="96a062252c26544370e8feae987c6d16"></a><!-- doxytag: member="ditersol1.c::GLOBAL_STAT" ref="96a062252c26544370e8feae987c6d16" args="" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname"><a class="el" href="structSuperLUStat__t.html">SuperLUStat_t</a>* <a class="el" href="zitersol1_8c.html#96a062252c26544370e8feae987c6d16">GLOBAL_STAT</a>          </td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>

</div>
</div><p>
<a class="anchor" name="000ad5c2198e4309802b4478ed08a98c"></a><!-- doxytag: member="ditersol1.c::GLOBAL_U" ref="000ad5c2198e4309802b4478ed08a98c" args="" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname"><a class="el" href="structSuperMatrix.html">SuperMatrix</a> * <a class="el" href="zitersol1_8c.html#000ad5c2198e4309802b4478ed08a98c">GLOBAL_U</a>          </td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>

</div>
</div><p>
</div>
<hr size="1"><address style="text-align: right;"><small>Generated on Thu Aug 25 13:43:49 2011 for SuperLU by&nbsp;
<a href="http://www.doxygen.org/index.html">
<img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.5.5 </small></address>
</body>
</html>