GeometryMaps are completely opaque
Their is currently no way to get information about the GeometryMap
which is currently in use.
It is not even possible to detect whether the identity is used or not.
Instead, it must always be assumed that an arbitrary transformation is in effect which prohibits certain optimizations.
For instance, the interpolation of constant vector fields requires that the vector field is mapped to computational space (btw, this is currently not implemented in CSFVectorFunction
and N1E1VectorFunction
).
In general, this destroys the constant nature of the vector field.
However, in case the mapping is affine (which of course includes the special case of the identity) the field remains constant.
I suggest implementing a means to query information about the nature of the geometry map:
- is identity
- is linear
- is affine
- something else?
This could be done by
- adding pure virtual functions to the base class
GeometryMap
, or - adding trait classes similar to
FunctionTrait
.
I think 1. is better fit for purpose.