<div class="gmail_quote">On Mon, Dec 12, 2011 at 16:51, Sebastian Skatulla <span dir="ltr"><<a href="mailto:sebastian.skatulla@googlemail.com">sebastian.skatulla@googlemail.com</a>></span> wrote:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">
<div id=":151">I am struggling to solve an incompressible solid mechanics problem using<br>
a meshfree code based on Moving Least Square approximations. My<br>
knowledge of solvers and preconditioners is quite limited. But it seems<br>
that Additive Schwarz or Gram Schmidt preconditioners together with<br>
GMRES is a good choice - yet still not good enough in my case. So, I was<br>
experimenting with exact (LU) solves in each subdomain which does the<br>
trick but the memory need is significant. Now, my question is what<br>
purpose serves the function PCASMSetOverlap and could it be used to<br>
improve this setup in any way? Thanks.</div></blockquote></div><br><div>Incompressible problems generally lead to indefinite or saddle-point matrices. These cause two problems for Schwarz preconditioners:</div><div><br></div>
<div>1. Local problems must be stable. A general way to compute stable subdomains is to take a set of dual variables (e.g. all owned pressure dofs) and add all primal variables that are connected to those dual variables (e.g. all displacements that influence those pressures).</div>
<div><br></div><div>2. Local solves are more delicate. Incomplete factorization is unreliable and very order-dependent. Direct solves work, but are more expensive. You can use "block preconditioners" as the local solve (this could be as simple as -sub_pc_type fieldsplit -sub_pc_fieldsplit_type schur -sub_pc_fieldsplit_detect_saddle_point, but you will likely have to learn a bit about PCFieldSplit and how to build block preconditioners for your problem).</div>