<div class="gmail_quote">On Tue, Mar 15, 2011 at 20:47, Barry Smith <span dir="ltr"><<a href="mailto:bsmith@mcs.anl.gov">bsmith@mcs.anl.gov</a>></span> wrote:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex;">
<div id=":2p9">Do you form the big-assed matrix<br>
<div class="im">> | A      dg_dx |<br>
>  | df_dy  df_dx |<br>
<br>
</div>  explicitly as one big matrix?  And each time-step you changes values in the dg_dx, df_dy  and df_dx parts with MatSetValues?<br>
<br>
<br>
    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()).</div></blockquote></div><br>
<div>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.</div>