<div class="gmail_quote">On Thu, Nov 17, 2011 at 12:18, Rongliang Chen <span dir="ltr">&lt;<a href="mailto:rongliang.chan@gmail.com">rongliang.chan@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=":2c4">I am using the composite pc now not the PCMG:<br><br>      ierr = PCCompositeAddPC(finepc,PCSHELL);CHKERRQ(ierr);<br>      ierr = PCCompositeAddPC(finepc,PCASM);CHKERRQ(ierr); <br>
           <br>
      ierr = PCCompositeGetPC(finepc,0,&amp;coarsesolve);CHKERRQ(ierr);<br>
      ierr = PCShellSetContext(coarsesolve,ctx);CHKERRQ(ierr);<br>
      ierr = PCShellSetApply(coarsesolve, CoarseSolvePCApply);CHKERRQ(ierr);  <br><br>      ierr = PCCompositeGetPC(finepc,1,&amp;asmpc);CHKERRQ(ierr);<br>      ierr = PCSetOptionsPrefix(asmpc,&quot;fine_&quot;);CHKERRQ(ierr); <br>

      ierr = PCSetFromOptions(asmpc);CHKERRQ(ierr);<br>      <br>      ierr = PCSetType(asmpc,PCASM);CHKERRQ(ierr);<br>      ierr = PCASMSetOverlap(asmpc,0);CHKERRQ(ierr);<br>      ierr = PCASMSetLocalSubdomains(asmpc,1,&amp;grid-&gt;df_global_asm, PETSC_NULL);CHKERRQ(ierr);<br>
</div></blockquote><div><br></div><div>You can make your own event for the coarse level solve. Using PCMG instead of PCComposite would make your code more flexible, so you may want to consider doing it at some point.</div>
<div>  </div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex;"><div id=":2c4"><br>I just use two level method now and it is not very easy to try more levels since I am using unstructure meshes.<br>
I tried to solve the coarse level exactly by LU and it works well if the coarse problem is small. When the coarse problem is large, LU is also very slow  (when the fine level problem is large, I can not use very small coarse level problem). I found that nearly 90% of the time is spent on the coarse level when the number of processor is large (np &gt;512), so I want to know which step of the coarse level solver costs the most of the time. Thanks.</div>
</blockquote></div><br><div>This is a common problem. Depending on your equations, you might be able to solve the coarse-level problem using algebraic multigrid. Try -coarse_pc_type gamg (or however you set up the options prefixes; maybe also &quot;hypre&quot; or &quot;ml&quot; if you have those installed).</div>