Dear Jed,

On Thu, 9 Sep 2010, Jed Brown wrote:

> 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?

Most probably, my assmble method will loop over X but skip every 
element that is not contained in X2.  This seems to be the easiest 
assemble method at the moment.

> If the former, you can MatGetSubMatrix (you just need an index set 
> defining the subdomain) the part you want and solve with that.

That sounds like a good idea.  I will think about this.  It should 
certainly be worth implementing a general method for this in libMesh 
somehow (with an exception trown if a solver other than PETSc is 
used...).  The question is what the API should look like.

> 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).

I didn't understand this part at the moment.

Best Regards,

Tim

-- 
Dr. Tim Kroeger
CeVis -- Center of Complex Systems and Visualization
University of Bremen              [email protected]
Universitaetsallee 29             [email protected]
D-28359 Bremen                             Phone +49-421-218-7710
Germany                                    Fax   +49-421-218-4236

------------------------------------------------------------------------------
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

Reply via email to