Improve performance of incompressible solver

Merged Douglas Serson requested to merge feature/IncNSOpt into master

This MR contains improvements to the performance of the incompressible solver (some of the changes might also help in other cases).

I worked on these changes based on a profiling of the Cyl.xml example (2D, N=5, using both tris and quads). For this particular case (in serial), I got a reduction of computational cost close to 30%, although I suspect simulations with higher order or in 3D will get more modest improvements.

The main changes are:

  • Use a virtual function to make UnsteadySystem skip the FwdTrans it performs after each time step, since this is completely redundant for the incompressible solver
  • Introduce a parameter to choose the frequency at which the solver checks for NaNs
  • Tweak the default value of the mdswitch parameter for the multilevelstaticcond, and also allow to specify it in the session file
  • Include PhysDeriv in a single direction in the Collections, since we need it to compute div(u) for the pressure forcing
  • Use symmetric matrices for the interior part of the static cond (whenever possible)
  • Several small changes to reduce overhead costs, especially in matrix vector multiplications.

Merge request reports