On Thu, 9 Sep 2010 15:27:42 +0200 (CEST), Tim Kroeger
<[email protected]> wrote:
> Dear all,
>
> Let X be a computational domain, covered by a Mesh on which an
> EquationSystems object is based on. Let X2 be a subset of X, given by
> the union of selected grid elements (which are, say, marked by certain
> values of subdomain_id).
>
> Assume I want (at some point in my application) to solve a system only
> on X2 (say, using Dirichlet boundary conditions on all boundaries of
> X2 that are not boundaries of X).
>
> I can easily achieve this by assembling Dirichlet conditions
> everywhere ouside X2 and then solving as usual. However, then I
> cannot benefit from the performance gain that I should theoretically
> have if X2 contains much less elements than X. This is in particular
> true if I am using a direct solver (such as SuperLU_DIST, wrapped via
> PETSc).
Do you want to assemble X, or are you really only working with X2? If
the former, you can MatGetSubMatrix (you just need an index set defining
the subdomain) the part you want and solve with that. Maybe more
interesting, you can provide the index sets to PCFieldSplit which gives
you an additive or multiplicative method with a KSP created for each
split (which you can control under the -fieldsplit_{0,1,...}_{ksp,pc}_
prefixes).
Jed
------------------------------------------------------------------------------
This SF.net Dev2Dev email is sponsored by:
Show off your parallel programming skills.
Enter the Intel(R) Threading Challenge 2010.
http://p.sf.net/sfu/intel-thread-sfd
_______________________________________________
Libmesh-users mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/libmesh-users