Mixins instead of interfaces
This MR switches the way we allow configurable handling of geometry, quadrature and basis evaluation. So far, we had an interface class - one for PDELab, sum factorization and block structuring. This had the disadvantage of being quite monolithic. Also, different geometries (equidistant, axiparallel, multilinear etc.) were handled through a backend mechanism that performed fine for simple examples, but could get quite messy for complex ones.
The new way introduced here is mixin classes. Mixins for the above topics can be defined anywhere in the code (even in user code, if a poweruser wants to implement his own geometries!!!) and are registered through a decorator. The visitor is then constructed by choosing a set of mixins and combining them into a class. This is currently done through ini options.
TODO:
-
Allow generators to be used as class methods -
Implement basic mixin infrastructure -
Construct a visitor by combining mixins -
Port existing geometry implementations -
Generic PDELab -
Axiparallel -
Equidistant -
Blockstructured -
Sumfact: Multilinear
-
-
Remove Interface Concept in favor of mixins -
Final cleanup
This fixes #128 (closed).