<div class="gmail_quote">On Fri, Dec 3, 2010 at 20:20, Vijay S. Mahadevan <span dir="ltr">&lt;<a href="mailto:vijay.m@gmail.com">vijay.m@gmail.com</a>&gt;</span> wrote:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex;">
<div id=":4ck">This is fine and I am more than happy to hand these to Petsc. I do<br>
have the restriction/prolongation matrices explicitly but only the<br>
operators are matrix-free for now. So if I start off with a<br>
matrix-free PC operator, how exactly do I provide the shell matrix<br>
operators for all the other levels ?<br></div></blockquote><div><br></div><div>PCMGSetResidual, PCMGGetSmoother and set it to whatever type you want (maybe your custom one).</div><div> </div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex;">
<div id=":4ck">
I do not see any routine to enable this and my conclusion is that<br>
petsc does find it using the fine grid operator at hand using R^T*A*R<br>
transformation.</div></blockquote><div><br></div><div>Galerkin coarse operators really need to be formed (not applied as a product) to make sense.  PCMG calls MatPtAP(), Galerkin coarse operators will not work unless this is implemented.  You want to provide the matrix yourself.</div>
<div><br></div><div>Jed</div></div>