<div class="gmail_quote">On Thu, Jul 5, 2012 at 10:38 AM, domenico lahaye <span dir="ltr"><<a href="mailto:domenico_lahaye@yahoo.com" target="_blank">domenico_lahaye@yahoo.com</a>></span> wrote:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">
<div><div style="font-size:12pt;font-family:arial,helvetica,sans-serif"><div><span>Hi Jed, </span></div><div><span><br></span></div><div><span>  Thank you for your reply. The Algorithm II is described in the paper </span></div>
<div><span><br></span></div><div><span><font face="Arial" size="3"><span style="font-size:13px"><div>@ARTICLE{yoginabben1,</div><div>  author = {Erlangga, Y.A. and R. Nabben},</div><div>  title = {On a multilevel {K}rylov Method for the {H}elmholtz Equation preconditioned</div>
<div><span style="white-space:pre-wrap">  </span>by Shifted {L}aplacian},</div><div>  journal = {Electronic Transaction on Num. Analysis (ETNA)},</div><div>  year = {2008},</div><div>  volume = {31},</div><div>  pages =
 {403--424},</div><div> }</div></span></font></span></div></div></div></blockquote><div><br></div><div>As I interpret this method, you have custom interpolation operators and a Krylov smoother that is itself a multigrid cycle with the shifted operator. In PETSc parlance, you have two matrices, the operator A and the preconditioning matrix M. Here M would be the shifted matrix and smoothing would involve MG cycles with coarsened approximations of M. I would start with the PCMG interface, use a Krylov method as the smoother, and perhaps use PCComposite or PCShell as the preconditioner for the Krylov smoother. Eventually the preconditioner for your Krylov smoother will call the "other" MG cycle (a standard method applied to M).</div>
<div><br></div><div>Note that this method involves an enormous number of synchronization points as well as high operator complexity, so you may find the cost to be quite high even though the iteration count is not bad.</div>
<div> </div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div><div style="font-size:12pt;font-family:arial,helvetica,sans-serif"><div><span><font face="Arial" size="3"><span style="font-size:13px"><div>
<br></div><div>  Kind wishes, Domenico.</div></span></font></span></div><div><br></div><div class="hm HOEnZb">  </div><div style="font-size:12pt;font-family:arial,helvetica,sans-serif"><div class="hm HOEnZb"> </div><div style="font-size:12pt;font-family:'times new roman','new york',times,serif">
<div class="hm HOEnZb"> </div><div dir="ltr"><div class="hm HOEnZb"> </div><font face="Arial"><div class="hm HOEnZb"> <hr size="1">  <b><span style="font-weight:bold">From:</span></b> Jed Brown <<a href="mailto:jedbrown@mcs.anl.gov" target="_blank">jedbrown@mcs.anl.gov</a>><br>
 <b><span style="font-weight:bold">To:</span></b> domenico lahaye <<a href="mailto:domenico_lahaye@yahoo.com" target="_blank">domenico_lahaye@yahoo.com</a>>; PETSc users list <<a href="mailto:petsc-users@mcs.anl.gov" target="_blank">petsc-users@mcs.anl.gov</a>> <br>
<b><span style="font-weight:bold">Cc:</span></b> Abdul Hanan Sheikh <<a href="mailto:hanangul12@yahoo.co.uk" target="_blank">hanangul12@yahoo.co.uk</a>> <br> <b><span style="font-weight:bold">Sent:</span></b> Thursday, July 5, 2012 7:47 PM</div>
<div><div class="h5"><br> <b><span style="font-weight:bold">Subject:</span></b> Re: [petsc-users] Adapting MatMult and PCMG functions in matrix-free method.<br> </div></div></font> </div><div><div class="h5">
 <br><div>Can you reference a paper or some notes on the algorithm?<br><br><div>On Thu, Jul 5, 2012 at 8:40 AM, domenico lahaye <span dir="ltr"><<a rel="nofollow" href="mailto:domenico_lahaye@yahoo.com" target="_blank">domenico_lahaye@yahoo.com</a>></span> wrote:<br>

<blockquote style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div><div style="font-size:12pt;font-family:arial,helvetica,sans-serif">Dear PETSc developers, <br><br>  Thank you for your support to Abdul. <br>

<div><br><span></span></div><div><span>   We are in the process of developing a multilevel <br></span></div><div><span>Krylov solver for the Helmholtz equation. Abdul <br></span></div><div><span>has implemented Algorithm I for this purpose. <br>

</span></div><div><span>We next would like to implement Algorithm II. <br></span></div><div><span></span><span>Algorithm || amounts to replacing every occurrence <br></span></div><div><span>of the system matrix $A$ in Algorithm I by <br>

</span></div><div><span></span><span>$M^{-1} A$. This replacement should occur on all <br></span></div><div><span>levels. We thought of two ways to realize this <br></span></div><div><span>replacement. <br></span></div><div>

<span><br></span></div><div><span>1) We thought of
 adopting a matrix-free approach, <br></span></div><div><span>and to plug in the operation with  $M^{-1}$ there. <br></span></div><div>This would require a ksp context inside MatMult.    <br><span></span></div><div><span>We wonder whether this a approach is feasible to <br>

</span></div><div><span>take. <br></span></div><div><br><span></span></div><div><span>2) The other approach would by to implement a <br></span></div><div><span>customized pcmg preconditioner that we can adapt <br></span></div>

<div><span>to our needs. This could be a more elegant approach, <br></span></div><div><span>at the cost of doing more work. Is the assumption <br></span></div><div><span>that the second approach is more elegant correct <br>

</span></div><div><span>and would you be able to give advice on how to tackle <br></span></div><div><span>this approach? <br></span></div><div><br><span></span></div><div><span>  Kind wishes, Domenico.
 <br></span></div><div><span><br> </span></div><div><br></div>  <div style="font-size:12pt;font-family:arial,helvetica,sans-serif"> <div style="font-size:12pt;font-family:'times new roman','new york',times,serif">
 <div style="font-size:10pt;font-family:verdana,helvetica,sans-serif">
 <font face="Arial"> <hr size="1"><b><span style="font-weight:bold"></span></b></font><div><div><div><br></div><div><br><blockquote style="border-left:2px solid rgb(16,16,255);margin-left:5px;margin-top:5px;padding-left:5px">

  <div style="font-size:10pt;font-family:verdana,helvetica,sans-serif"> <div style="font-size:12pt;font-family:'times new roman','new york',times,serif"> <div dir="ltr"> <font face="Arial"> ----- Forwarded
 Message -----<br>  <b><span style="font-weight:bold">From:</span></b> Matthew Knepley <<a rel="nofollow" href="mailto:knepley@gmail.com" target="_blank">knepley@gmail.com</a>><br> <b><span style="font-weight:bold">To:</span></b> Abdul Hanan Sheikh <<a rel="nofollow" href="mailto:hanangul12@yahoo.co.uk" target="_blank">hanangul12@yahoo.co.uk</a>>; PETSc users list <<a rel="nofollow" href="mailto:petsc-users@mcs.anl.gov" target="_blank">petsc-users@mcs.anl.gov</a>> <br>

 <b><span style="font-weight:bold">Sent:</span></b> Thursday, 5 July 2012, 15:45<br> <b><span style="font-weight:bold">Subject:</span></b> Re: [petsc-users] Adapting MatMult and PCMG functions in matrix-free method.<br> </font> </div>

 <br><div>On Thu, Jul 5, 2012 at 7:34 AM, Abdul Hanan Sheikh <span dir="ltr"><<a rel="nofollow" href="mailto:hanangul12@yahoo.co.uk" target="_blank">hanangul12@yahoo.co.uk</a>></span> wrote:<br><div><blockquote style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">


<div><div style="font-size:10pt;font-family:verdana,helvetica,sans-serif"><div style="color:rgb(0,0,191)"><span>Dear developers and users,</span></div><div style="color:rgb(0,0,191)"><span>Summer greetings.</span></div><div style="color:rgb(0,0,191)">


<span> We have few question listen below: </span></div><div style="color:rgb(0,0,191)"><span><br></span></div><div style="color:rgb(0,0,191)">1. <br><span></span></div><div style="color:rgb(0,0,191)"><span>The first question is about adapting <span style="font-style:italic">" MatMult</span> " function in matrix-free method.</span></div>


<div style="color:rgb(0,0,191)"><span>We intend to incorporate a KSP context inside <span style="font-style:italic">"MatMult</span>" . </span><span>The immediate question is how to</span></div><div style="color:rgb(0,0,191)">


<span>provide more than one matrices as input. </span></div></div></div></blockquote><div><br></div><div>You provide extra data through the context for the MATSHELL</div><div> </div><blockquote style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">


<div><div style="font-size:10pt;font-family:verdana,helvetica,sans-serif"><div style="color:rgb(0,0,191)"><span>Is this idea of incorporating a KSP context inside </span><span><span style="font-style:italic">"MatMult</span>" </span><span>function workable ? Does it make any confrontation <br>


</span></div><div style="color:rgb(0,0,191)"><span>with philosophy of development of Petsc. ? </span></div></div></div></blockquote><div><br></div><div>I am not sure you want this. Do you think PCKSP can do what you want? There is not enough information here to help us answer.</div>


<div> </div><blockquote style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div><div style="font-size:10pt;font-family:verdana,helvetica,sans-serif"><div style="color:rgb(0,0,191)">2. <br>
</div><div style="color:rgb(0,0,191)">An other advance level feedback is needed. <br></div><div style="color:rgb(0,0,191)"> Re-implementing PCMG function {<span> mg.c </span>} will lead any violation of philosophy of Petsc-development ??</div>


</div></div></blockquote><div><br></div><div>Again, there is not enough information. Can you do what you want by just replacing the monitors?</div><div><br></div><div>  Thanks,</div><div><br></div><div>     Matt</div><div>


 </div><blockquote style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div><div style="font-size:10pt;font-family:verdana,helvetica,sans-serif"><div style="color:rgb(0,0,191)">3. <br>
</div><div style="color:rgb(0,0,191)">Which one of the above both is more elegant and feasible to work on ? <br></div><div style="color:rgb(0,0,191)"><br></div><div style="color:rgb(0,0,191)"><br></div><div style="color:rgb(0,0,191)">


Thanking in anticipation, </div><span><font color="#888888"><div><span style="color:rgb(0,0,191)">Abdul </span><br><span></span></div><div><br><span></span></div><div><span><br></span></div><div><span style="color:rgb(0,0,255)"><span style="font-family:verdana,helvetica,sans-serif"><span style="font-family:'lucida console',sans-serif"></span></span></span><span style="color:rgb(0,0,255)"><span style="font-family:verdana,helvetica,sans-serif"></span></span></div>


</font></span></div></div></blockquote></div><br><br clear="all"><div><br></div>-- <br>What most experimenters take for granted before they begin their experiments is infinitely more interesting than any results to which their experiments lead.<br>


-- Norbert Wiener<br>
</div><br><br> </div> </div> </blockquote></div>   </div></div></div><br><br> </div> </div>  </div></div></blockquote></div><br>
</div><br><br> </div></div></div> </div>  </div></div></blockquote></div><br>