More flexible `FVElementGeometry` interface
It may be better to pull out some functions of the SubControlVolume
and SubControlVolumeFace
classes into the FVElementGeometry
. This can significantly reduce the memory overhead (see #1173 and !3183 (merged)).
For instance, we could do
const auto outsideScv = fvGeometry.outsideScv(scvf);
instead of
const auto outsideScv = fvGeometry.scv(scvf.outsideScvIdx());
This way, users don't need to know that there is an index stored and it also doesn't force us to actually store an index (which is probably not necessary for box, for instance). It also forces us to write more consistent code between box and cc, because we sometimes do
// we know that for cc the inside index is the dof index
const auto insideDofIndex = scvf.insideScvIdx();
although a version that is compatible with box schemes would be
const auto insideDofIndex = fvGeometry.scv(scvf.insideScvIdx()).dofIndex();