Todd,
What's the semi-smooth version in TAO that respect the bounds at the iterates?
Maybe that would be a good place to attempt a unification with SNESVI.
The current implementation could benefit from refactoring to enable more composability:
could we use a VIRS method inside VISS and allow for a user-defined active set definition/projection?
Then a bound-respecting VISS would be a combination of the current VISS and VIRS, potentially
controllable from the command line.
The same goes for the linesearch: Armijo would be another SNESLineSearch type that could be turned on on demand.
Finally, perhaps we could enable composition of DM(SNES) objects? Then wrapping projection onto bounds around residual/Jacobian evaluation routines would be a composition of two DM(SNES) objects. Right now something along those lines takes place in VIRS where an RS DM is "composed" with the full space DM, although this composition is
currently ad hoc.
Dmitry.