<div dir="ltr"><div class="gmail_extra"><br><div class="gmail_quote">On Thu, Mar 21, 2013 at 9:21 PM, Barry Smith <span dir="ltr"><<a href="mailto:bsmith@mcs.anl.gov" target="_blank">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=":11x">  Is it really worth manually putting it into a bunch of places rather than just leaving it at the top level?  I reckon about 10 of the current preconditioners could utilize this function. If we change this we need to change PCSetModifySubMatrices() and PCSetInitialGuessNonzero() also since they work for far fewer PCs. I'm fine with either leaving it or changing it.<br>

<br>
   It would be nice if we could more automate handling these kinds of things for each PC rather than cut and pasting code all over.</div></blockquote></div><br>Well, we could make some protocol like storing pc->reuse as an integer, creating (likely private) PETSC_NOT_AVAILABLE=-3, and have PCCreate() set pc->reuse = PETSC_NOT_AVAILABLE. Then PCCreate_X() would set pc->reuse = PETSC_DECIDE and PCSetFromOptions() would choose a default if PETSC_DECIDE and then consult the options database only if pc->reuse != PETSC_NOT_AVAILABLE.</div>
<div class="gmail_extra"><br></div><div class="gmail_extra" style>I don't want to use behavior like above unless we standardize and use it everywhere that it makes sense.</div><div class="gmail_extra" style><br></div>
<div class="gmail_extra" style>More in line with existing conventions would be:</div><div class="gmail_extra" style><br></div><div class="gmail_extra" style>PetscObjectComposeFunction(...,PCSetUseAmatDefault);</div></div>