[staggered] Restructure staggered geometry, assembly, etc.
The current implementation of the staggered scheme is not very intuitive, at some parts even kind of "hacky".
Rather than considering dedicated geometries for the staggered control volumes,
we miss-use the scvf
s in order to store all relevant geometrical quantities, as well es DOF indices, to
assemble the momentum balance equations defined on the staggered volumes.
We should discuss the introduction of a "real" staggered grid geometry which handles only the staggered control volumes and behaves more natural, or in other words, more like the classes of the other discretization schemes. The discussion already started in #846 (closed) and my feeling is that this will need some substantial changes to the code.
I therefore propose to form some sort of task force to discuss everything in detail. We could use the issue to collect ideas and and potential issues.
Current issues
- Geometrical information and dof indices are stored twice, we should only store this once per intersection
- If caching is not enabled, gathering above mentioned information is very costly. This again calls for doing it only once.
- This may conflict with our element-wise assembly strategy, which we also use for the staggered variables so far.
- The scheme is currently limited to structured grids . Having the new, dedicated staggered geometry could make life easier for unstructured stuff
See !2012 (closed) for some first ideas.