The "mass" matrix for compact FD is usually well-conditioned. I suggest assembling it once so you can experiment with methods. You can try solving it using a Krylov method with only jacobi preconditioning. If that converges fast enough for you, you can reduce memory costs and speed it up somewhat by writing a MatShell that applies the action (instead of using the assembled matrix).<br>
<br><div class="gmail_quote">On Fri, Jun 22, 2012 at 7:03 AM, Gaetano Esposito <span dir="ltr"><<a href="mailto:gaetano@email.virginia.edu" target="_blank">gaetano@email.virginia.edu</a>></span> wrote:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">
Compact finite differences have been already discussed in this post<br>
and following responses:<br>
<a href="http://lists.mcs.anl.gov/pipermail/petsc-users/2011-November/011006.html" target="_blank">http://lists.mcs.anl.gov/pipermail/petsc-users/2011-November/011006.html</a>.<br>
<br>
If I understand well, the matrix for a 2-D (or 3-D) *implicit* solver<br>
that makes use of compact FD for the calculation of derivatives is not<br>
"banded" because of the ordering of the x-y-z variables in the<br>
solution vector destroys any structure, and the matrix is simply<br>
sparse (bandwith=sqrt(n)). In that post is actually suggested that a<br>
sparse dense solver could be more attractive because of that.<br>
<br>
However, if the PDE's are solved explicitly in time, the derivatives<br>
in all directions may be calculated independently by using an<br>
efficient sequential algorithm (o(n)). I am not familiar with any<br>
parallel implementations of the banded diagonal algorithm solvers, but<br>
I was wondering whether this could be efficiently implemented in Petsc<br>
with the existing MA modules. But at that point, I don't know whether<br>
there will be any advantage in possibly using an iterative solver that<br>
converges to the exact solution in N iterations for a well behaved<br>
matrix as the one deriving from compact FD.<br>
<span class="HOEnZb"><font color="#888888"><br>
--g<br>
</font></span></blockquote></div><br>