<html xmlns:v="urn:schemas-microsoft-com:vml" xmlns:o="urn:schemas-microsoft-com:office:office" xmlns:w="urn:schemas-microsoft-com:office:word" xmlns="http://www.w3.org/TR/REC-html40">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=us-ascii">
<meta name="Generator" content="Microsoft Word 11 (filtered medium)">
<style>
<!--
 /* Style Definitions */
 p.MsoNormal, li.MsoNormal, div.MsoNormal
        {margin:0cm;
        margin-bottom:.0001pt;
        font-size:12.0pt;
        font-family:"Times New Roman";}
a:link, span.MsoHyperlink
        {color:blue;
        text-decoration:underline;}
a:visited, span.MsoHyperlinkFollowed
        {color:#606420;
        text-decoration:underline;}
span.EmailStyle17
        {mso-style-type:personal-compose;
        font-family:Arial;
        color:windowtext;}
@page Section1
        {size:595.3pt 841.9pt;
        margin:70.85pt 70.85pt 70.85pt 70.85pt;}
div.Section1
        {page:Section1;}
-->
</style><!--[if gte mso 9]><xml>
 <o:shapedefaults v:ext="edit" spidmax="1026" />
</xml><![endif]--><!--[if gte mso 9]><xml>
 <o:shapelayout v:ext="edit">
  <o:idmap v:ext="edit" data="1" />
 </o:shapelayout></xml><![endif]-->
</head>
<body lang="FR" link="blue" vlink="#606420">
<div class="Section1">
<p class="MsoNormal"><font size="2" face="Arial"><span style="font-size:10.0pt;
font-family:Arial">Hi,<o:p></o:p></span></font></p>
<p class="MsoNormal"><font size="2" face="Arial"><span style="font-size:10.0pt;
font-family:Arial"><o:p>&nbsp;</o:p></span></font></p>
<p class="MsoNormal"><font size="2" face="Arial"><span lang="EN-GB" style="font-size:
10.0pt;font-family:Arial">I am working on an application that requires the inversion of an implicit operator that is more or less a very anisotropic 3D diffusion operator
 (about 1E6 ratio between diffusion coefficient in 1 direction with respect to the 2 others). The matrix is therefore very badly conditioned. By direction splitting, I can split the system in 2 pieces:<o:p></o:p></span></font></p>
<p class="MsoNormal"><font size="2" face="Arial"><span lang="EN-GB" style="font-size:
10.0pt;font-family:Arial"><o:p>&nbsp;</o:p></span></font></p>
<p class="MsoNormal"><font size="2" face="Arial"><span lang="EN-GB" style="font-size:
10.0pt;font-family:Arial">A = B &#43; C<o:p></o:p></span></font></p>
<p class="MsoNormal"><font size="2" face="Arial"><span lang="EN-GB" style="font-size:
10.0pt;font-family:Arial"><o:p>&nbsp;</o:p></span></font></p>
<p class="MsoNormal"><font size="2" face="Arial"><span lang="EN-GB" style="font-size:
10.0pt;font-family:Arial">where B is block diagonal and contains all the coefficients corresponding to the high diffusion part of the operator. B seems like a good preconditioner
 for the system (I checked in low resolution cases with matlab that applying B^-1 to A reduces its condition number by a factor of close to 1E6), but B is ill-conditioned. However, since it is block diagonal and that it will not vary in time (contrary to C),
 it seems to me that it would be a good idea to perform once and for all an LU factorization of B and use it to precondition A each time the ksp solver is called afterwards.<o:p></o:p></span></font></p>
<p class="MsoNormal"><font size="2" face="Arial"><span lang="EN-GB" style="font-size:
10.0pt;font-family:Arial"><o:p>&nbsp;</o:p></span></font></p>
<p class="MsoNormal"><font size="2" face="Arial"><span lang="EN-GB" style="font-size:
10.0pt;font-family:Arial">I somehow can&#8217;t figure out how to do this in practise with PETSC. I tried to configure the KSP like this<o:p></o:p></span></font></p>
<p class="MsoNormal"><font size="2" face="Arial"><span lang="EN-GB" style="font-size:
10.0pt;font-family:Arial">call KSPSetOperators(myKSP,A,B,SAME_PRECONDITIONER,ierr)
<o:p></o:p></span></font></p>
<p class="MsoNormal"><font size="2" face="Arial"><span lang="EN-GB" style="font-size:
10.0pt;font-family:Arial">and then run PETSC with the following options:<o:p></o:p></span></font></p>
<p class="MsoNormal"><font size="2" face="Arial"><span lang="EN-GB" style="font-size:
10.0pt;font-family:Arial">-pc_type asm -sub_pc_type lu -ksp_type bcgsl<o:p></o:p></span></font></p>
<p class="MsoNormal"><font size="2" face="Arial"><span lang="EN-GB" style="font-size:
10.0pt;font-family:Arial">but the computation time becomes awful, far more than if I try to do separately the LU decomposition of the blocks of B with MUMPS.<o:p></o:p></span></font></p>
<p class="MsoNormal"><font size="2" face="Arial"><span lang="EN-GB" style="font-size:
10.0pt;font-family:Arial"><o:p>&nbsp;</o:p></span></font></p>
<p class="MsoNormal"><font size="2" face="Arial"><span lang="EN-GB" style="font-size:
10.0pt;font-family:Arial">Would you have some advice / hints on how to implement such a preconditioner for my problem?<o:p></o:p></span></font></p>
<p class="MsoNormal"><font size="2" face="Arial"><span lang="EN-GB" style="font-size:
10.0pt;font-family:Arial"><o:p>&nbsp;</o:p></span></font></p>
<p class="MsoNormal"><font size="2" face="Arial"><span lang="EN-GB" style="font-size:
10.0pt;font-family:Arial">Thanks in advance.<o:p></o:p></span></font></p>
<p class="MsoNormal"><font size="2" face="Arial"><span lang="EN-GB" style="font-size:
10.0pt;font-family:Arial"><o:p>&nbsp;</o:p></span></font></p>
<p class="MsoNormal"><font size="2" face="Arial"><span lang="EN-GB" style="font-size:
10.0pt;font-family:Arial">Patrick<o:p></o:p></span></font></p>
<p class="MsoNormal"><font size="3" face="Times New Roman"><span style="font-size:
12.0pt"><o:p>&nbsp;</o:p></span></font></p>
</div>
</body>
</html>