Jed,
Though VecRestoreArray() does increase the Vector state, we also have our
base Vec class methods (and MatMult and friends) ALSO increase the state on
appropriate Vec arguments (so for built-in Vec classes like VECSEQ the state is
increased twice) . So for all of those routines there is no reason for an
alternative Vec class to manage the state itself. Thus is it not completely
unreasonable for Boyce (and people in similar situations) to ask that they
never need to manage the state themselves. They do need to because of
SNESComputeFunction().
Barry
Since VecRestoreArray() increases the state one could argument that we should
remove all the state increase calls in the Vec base classes and Mat and always
rely on VecRestoreArray(). And hence require all other Vec implementations to
manage the state completely themselves?
On Jun 6, 2011, at 4:05 PM, Jed Brown wrote:
> On Mon, Jun 6, 2011 at 23:01, Boyce Griffith <griffith at cims.nyu.edu> wrote:
> d_petsc_vector->data = /* pointer to SAMRAI vector object */;
>
>
> There must be a function somewhere with prototype along the lines of
>
> SAMRAI_Stuff VecGetStuff(Vec);
>
> and maybe a corresponding restore. You mutate SAMRAI_Stuff somehow. Just make
> the state get incremented somewhere in here.