Hi Jed,<br><br>Thank you for your suggestions.<br><br>Best,<br>Rongliang<br><br><div class="gmail_quote"><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex;">
<br>
------------------------------<br>
<br>
Message: 2<br>
Date: Thu, 17 Nov 2011 12:50:23 -0600<br>
From: Jed Brown &lt;<a href="mailto:jedbrown@mcs.anl.gov">jedbrown@mcs.anl.gov</a>&gt;<br>
Subject: Re: [petsc-users] KSPGMRESOrthog costs too much time<br>
To: PETSc users list &lt;<a href="mailto:petsc-users@mcs.anl.gov">petsc-users@mcs.anl.gov</a>&gt;<br>
Message-ID:<br>
        &lt;CAM9tzSkqexpY9RD4Z=<a href="mailto:huP25P1yA4viKqSKFTb5hxZQcyZrU1rg@mail.gmail.com">huP25P1yA4viKqSKFTb5hxZQcyZrU1rg@mail.gmail.com</a>&gt;<br>
Content-Type: text/plain; charset=&quot;utf-8&quot;<br>
<br>
On Thu, Nov 17, 2011 at 12:18, Rongliang Chen &lt;<a href="mailto:rongliang.chan@gmail.com">rongliang.chan@gmail.com</a>&gt;wrote:<br>
<br>
&gt; I am using the composite pc now not the PCMG:<br>
&gt;<br>
&gt;       ierr = PCCompositeAddPC(finepc,PCSHELL);CHKERRQ(ierr);<br>
&gt;       ierr = PCCompositeAddPC(finepc,PCASM);CHKERRQ(ierr);<br>
&gt;<br>
&gt;       ierr = PCCompositeGetPC(finepc,0,&amp;coarsesolve);CHKERRQ(ierr);<br>
&gt;       ierr = PCShellSetContext(coarsesolve,ctx);CHKERRQ(ierr);<br>
&gt;       ierr = PCShellSetApply(coarsesolve,<br>
&gt; CoarseSolvePCApply);CHKERRQ(ierr);<br>
&gt;<br>
&gt;       ierr = PCCompositeGetPC(finepc,1,&amp;asmpc);CHKERRQ(ierr);<br>
&gt;       ierr = PCSetOptionsPrefix(asmpc,&quot;fine_&quot;);CHKERRQ(ierr);<br>
&gt;       ierr = PCSetFromOptions(asmpc);CHKERRQ(ierr);<br>
&gt;<br>
&gt;       ierr = PCSetType(asmpc,PCASM);CHKERRQ(ierr);<br>
&gt;       ierr = PCASMSetOverlap(asmpc,0);CHKERRQ(ierr);<br>
&gt;       ierr = PCASMSetLocalSubdomains(asmpc,1,&amp;grid-&gt;df_global_asm,<br>
&gt; PETSC_NULL);CHKERRQ(ierr);<br>
&gt;<br>
<br>
You can make your own event for the coarse level solve. Using PCMG instead<br>
of PCComposite would make your code more flexible, so you may want to<br>
consider doing it at some point.<br>
<br>
<br>
&gt;<br>
&gt; I just use two level method now and it is not very easy to try more levels<br>
&gt; since I am using unstructure meshes.<br>
&gt; I tried to solve the coarse level exactly by LU and it works well if the<br>
&gt; coarse problem is small. When the coarse problem is large, LU is also very<br>
&gt; slow (when the fine level problem is large, I can not use very small coarse<br>
&gt; level problem). I found that nearly 90% of the time is spent on the coarse<br>
&gt; level when the number of processor is large (np &gt;512), so I want to know<br>
&gt; which step of the coarse level solver costs the most of the time. Thanks.<br>
&gt;<br>
<br>
This is a common problem. Depending on your equations, you might be able to<br>
solve the coarse-level problem using algebraic multigrid. Try<br>
-coarse_pc_type gamg (or however you set up the options prefixes; maybe<br>
also &quot;hypre&quot; or &quot;ml&quot; if you have those installed).<br>
-------------- next part --------------<br>
An HTML attachment was scrubbed...<br>
URL: &lt;<a href="http://lists.mcs.anl.gov/pipermail/petsc-users/attachments/20111117/81aa79c0/attachment-0001.htm" target="_blank">http://lists.mcs.anl.gov/pipermail/petsc-users/attachments/20111117/81aa79c0/attachment-0001.htm</a>&gt;<br>

<br>
<br>
</blockquote></div><br>