In my naiveté, I thought I'd just toss the "equation" in as a smart pointer member. However, even though I inlined the solve function, perhaps being a pointer, it wasn't inlined upon profiling. Just creating a static equation each sweep dropped the time in half, and so I think I'm just going to template the sweeper.
Switched things around so that InnerIteration instantiates the templated sweeper. I'll have to change this if any discretization is used beyond DD or SC is used (due to unknowns/cell).
In my naiveté, I thought I'd just toss the "equation" in as a smart pointer member. However, even though I inlined the solve function, perhaps being a pointer, it wasn't inlined upon profiling. Just creating a static equation each sweep dropped the time in half, and so I think I'm just going to template the sweeper.