Feature: Improve Navier-Stokes interior penalty implementation
-
dgparameter.hh
doesn't tell much what's contained in there, does it?
It contains the interior penalty parameter implementation for the Stokes / Navier-Stokes equations. Would you guess that?
Thing is, this implementation returns the wrong scaling of the face diameter in 3D.
It computes the face diameter by ig.intersection().volume()
which is
correct in 2D but gives wrong powers in 3D. The penalty parameter also contains
the scaling by the viscosity which is confusing when looking at the code in the
local operators, especially at the consistency and symmetry term.
Therefore come up with a new filename, dginteriorpenaltyparameter.hh
, and a new
implementation that computes the face diameter from the formula derived by
Paul Houston et al. (similar to convectiondiffusiondg.hh
). The scaling by the
viscosity is omitted, it is included in the local operators instead. Another change
in the local operators is that the penalty factor is computed once outside the
quadrature loop and not for every quadrature point (because there is no dependency
on that). For efficiency reasons the overpenalized version of the interior penalty
implementation has moved to separate class next to the non-overpenalized version.
- changes in the user code (to avoid deprecation warnings and possibly undefined behaviour):
-
provide the type of interior penalty (overpenalized or not) to the parameter class but in contrast to before don't create an instance of it. This is done for you internally in the parameter class.
-
symmetric and non-symmetric interior penalty can now be specified through an ini-file. The same thing holds for the penalty parameter.
See the dune-pdelab-howto for an example of changes (in a same named branch).
-