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. >
