WIP: Feature/structured refinement
This MR unifies the code generation for blockstructured and extruded meshes, by using a common interface for locally structured meshes. The interface is defined in this private repo, more specifically these changes were necessary
Some notes on the implementation:
- Most changes to the generic code generation are due to the changed order of the kernel generation. For locally structured meshes the kernels are grouped by the corresponding PDELab kernel. The PDELab kernel needs to compute integrals for different measures, for example the volume kernel also computes the integrals over interior faces wrt the macro element.
- Currently the finite elements for blockstructured and extruded meshes are fixed to CG Q1 and DG Q1 resp.
- The coordinate element is fixed to Q1, but generalizing this should not be too difficult.
- The loop domains over the micro entities are defined in
quadrature.py, but I'm not sure this is the best place for that.
- The refinement object is attached to the measures as metadata, but this is obviously not the best choice.