[!287] Mixins instead of interfaces
Merge branch 'feature/geometry-mixins' into 'master' ref:extensions/dune-codegen 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: - \[x\] Allow generators to be used as class methods - \[x\] Implement basic mixin infrastructure - \[x\] Construct a visitor by combining mixins - \[x\] Port existing geometry implementations - \[x\] Generic PDELab - \[x\] Axiparallel - \[x\] Equidistant - \[x\] Blockstructured - \[x\] Sumfact: Multilinear - \[x\] Remove *Interface* Concept in favor of mixins - \[x\] Final cleanup This fixes [#128]. See merge request [extensions/dune-codegen!287] [#128]: gitlab.dune-project.org/NoneNone/issues/128 [extensions/dune-codegen!287]: gitlab.dune-project.org/extensions/dune-codegen/merge_requests/287 Closes #128
No related branches found
No related tags found
Showing
- python/dune/codegen/__init__.py 1 addition, 2 deletionspython/dune/codegen/__init__.py
- python/dune/codegen/blockstructured/__init__.py 1 addition, 56 deletionspython/dune/codegen/blockstructured/__init__.py
- python/dune/codegen/blockstructured/accumulation.py 82 additions, 6 deletionspython/dune/codegen/blockstructured/accumulation.py
- python/dune/codegen/blockstructured/argument.py 1 addition, 3 deletionspython/dune/codegen/blockstructured/argument.py
- python/dune/codegen/blockstructured/basis.py 116 additions, 57 deletionspython/dune/codegen/blockstructured/basis.py
- python/dune/codegen/blockstructured/geometry.py 159 additions, 137 deletionspython/dune/codegen/blockstructured/geometry.py
- python/dune/codegen/blockstructured/quadrature.py 17 additions, 17 deletionspython/dune/codegen/blockstructured/quadrature.py
- python/dune/codegen/blockstructured/spaces.py 1 addition, 2 deletionspython/dune/codegen/blockstructured/spaces.py
- python/dune/codegen/blockstructured/tools.py 38 additions, 81 deletionspython/dune/codegen/blockstructured/tools.py
- python/dune/codegen/generation/__init__.py 7 additions, 6 deletionspython/dune/codegen/generation/__init__.py
- python/dune/codegen/generation/backend.py 0 additions, 44 deletionspython/dune/codegen/generation/backend.py
- python/dune/codegen/generation/cache.py 29 additions, 17 deletionspython/dune/codegen/generation/cache.py
- python/dune/codegen/generation/context.py 7 additions, 6 deletionspython/dune/codegen/generation/context.py
- python/dune/codegen/generation/mixins.py 28 additions, 0 deletionspython/dune/codegen/generation/mixins.py
- python/dune/codegen/loopy/transformations/vectorize_quad.py 4 additions, 3 deletionspython/dune/codegen/loopy/transformations/vectorize_quad.py
- python/dune/codegen/options.py 18 additions, 2 deletionspython/dune/codegen/options.py
- python/dune/codegen/pdelab/__init__.py 0 additions, 158 deletionspython/dune/codegen/pdelab/__init__.py
- python/dune/codegen/pdelab/adjoint.py 14 additions, 34 deletionspython/dune/codegen/pdelab/adjoint.py
- python/dune/codegen/pdelab/argument.py 0 additions, 37 deletionspython/dune/codegen/pdelab/argument.py
- python/dune/codegen/pdelab/basis.py 243 additions, 130 deletionspython/dune/codegen/pdelab/basis.py
Loading
Please register or sign in to comment