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





Reply via email to