Thanks to all of you for the ideas (Roy, John and David). I will try 
some things and get back to you on this.

I would like to not have to either rebuild the system matrix or reinvert 
that matrix, as both are expensive and hopefully unnecessary in my case.

-Brent


Roy Stogner wrote:
>
> On Mon, 12 Jan 2009, John Peterson wrote:
>
>> On Mon, Jan 12, 2009 at 3:00 PM, Brent Kraczek 
>> <[email protected]> wrote:
>>> Dear all,
>>>
>>> I am trying to set-up a simple poisson system where I will change my 
>>> RHS
>>> repeatedly, but the main system matrix will not change, so it will only
>>> need to be inverted once. I have been looking through the class
>>> definition for LinearImplicitSystem and its parent classes, but I don't
>>> see how to implement this. (I did run across a comment about multiple
>>> RHS in regard to the variable assemble_before_solve, but it's still not
>>> clear to me.)
>>>
>>> Is there an example of this, or could you point me toward which member
>>> functions to use to accomplish this?
>>
>> I think what you'll want is if-tests in your matrix assembly code
>> which only assemble the matrix on the first trip through and on
>> subsequent calls to assemble only assemble the right-hand sides.
>> There's nothing that I know of in the library which makes this
>> particularly easy to do, unfortunately.
>
> This isn't too hard without library support.  Just stick a member
> boolean in your system (or a static local boolean in your assembly
> function) for matrix_valid, default it to false, set it to true after
> an assembly, set it back to false when something happens to invalidate
> that matrix.  The only time you'll want library support is in those
> special cases (FEMSystem's nonlinear solvers, for example) where the
> library knows enough to decide that only the residual needs
> reassembly, and in that particular case there's already an API for it.
>
> But I digress.  I think Brent's problem wasn't how to avoid redundant
> matrix assembly, it was how to avoid redundant matrix inversion (or,
> more generally, how to avoid throwing away and rebuilding your
> preconditioner).
>
> I think for that we currently force you to add a matrix named
> "Preconditioner" to the system, which can be saved and used again on
> subsequent solves.  I'm hazy on the details, though; I've never done
> that myself.
> ---
> Roy


------------------------------------------------------------------------------
This SF.net email is sponsored by:
SourcForge Community
SourceForge wants to tell your story.
http://p.sf.net/sfu/sf-spreadtheword
_______________________________________________
Libmesh-users mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/libmesh-users

Reply via email to