[petsc-dev] Lagging the numerical factorization for one of the fields of fieldsplit preconditioner

Barry Smith bsmith at mcs.anl.gov
Tue Mar 15 17:28:20 CDT 2011


On Mar 15, 2011, at 5:24 PM, Jed Brown wrote:

> On Tue, Mar 15, 2011 at 20:47, Barry Smith <bsmith at mcs.anl.gov> wrote:
> Do you form the big-assed matrix
> > | A      dg_dx |
> >  | df_dy  df_dx |
> 
>  explicitly as one big matrix?  And each time-step you changes values in the dg_dx, df_dy  and df_dx parts with MatSetValues?
> 
> 
>    One fix may be to make PCSetUp() smarter and know the matrix has not changed and hence it doesn't have to be refactored (instead of only relying on the flag passed to KSPSetOperators()).
> 
> If you use MatNest (the logical choice with PCFieldSplit, it's a runtime option except for preallocation), then we could PetscObjectStateQuery() to decide when sub-objects need to be rebuilt. Seems like a better general-purpose solution if you want an easy high-level way to control when things get rebuilt.

  I'd like the flow control and ability to "do things" on inner blocks to be the same regardless of the matrix class being used.  I don't want suddenly much more to code with or better functionality if you've chose one matrix class over another (maybe much better speed but that is a different question).  So that's why I don't want it hardwired to MatNest (and that would also make it non-general purpose even though you claim it "better general purpose".)

  

  Barry







More information about the petsc-dev mailing list