Re: [petsc-dev] vector inner products
My first choice is to remove the TaoGradientNorm() wrapper if there is not anyone using it. It seems like a hack that would need more significant thought to turn it into "not a hack". Maybe Patrick F. can comment, as he is the one that added it. FWIW, I think the user can already change the inner products by writing their own using a VecShell. Todd.
On Apr 12, 2018, at 2:17 PM, Smith, Barry F. <[email protected]> wrote:
I don't know if we are ready for this dramatic change. I wouldn't do it until there was a clear need (not just potential future usage) that would be cumbersome to do without this generality. I am a little scared of this without demonstrated general need.
I would start by having an abstract inner product object (which includes a norm function) that has the standard l2 implementation, then another implementation that is based on passing in a matrix, maybe one based on passing in a vector. Then each solver would have a XXXSetInnerProduct() while defaulting to l2.
Barry
On Apr 12, 2018, at 12:21 PM, Munson, Todd <[email protected]> wrote:
There is a bit of code in TAO that allows the user to change the norm to a matrix norm. This was introduced to get some mesh independent behavior in one example (tao/examples/tutorials/ex3.c). That norm, however, does not propagate down into the KSP methods and is only used for testing convergence of the nonlinear problem.
A few questions then: Is similar functionality needed in SNES? Are TAO and SNES even the right place for this functionality? Should it belong to the Vector class so that you can change the inner products and have all the KSP methods (hopefully) work correctly?
Note: that this discussion brings us to the brink of supporting an optimize-then-discretize approach. I am not convinced we should go down that rabbit hole.
Thanks, Todd.
participants (1)
-
Munson, Todd