firedrakeproject / fiat

This is FIAT. FIAT was previously maintained as part of the FEniCS project (https://github.com/fenics/fiat)
GNU Lesser General Public License v3.0
5 stars 7 forks source link

Implement C0/C1 macroelements #64

Closed pbrubeck closed 6 months ago

pbrubeck commented 7 months ago

Extend Simplex to SimplicialComplex with minimal changes.

Implement SplitSimplicialComplex and AlfeldSplit and IsoSplit subclasses, which take a parent simplex in the constructor.

DualSet on a SplitSimplicialComplex merges the entities DOFs on the complex onto the parent entites.

ExpansionSet loops across subcells and does indirection to evaluate the hierarchical DG or CG basis functions.

FiniteElement gets a reference complex attached to in, in case we want to expose the split to define quadrature rules. CiarletElement will infer the reference complex from the underlying polynomial space.

create_quadrature returns a MacroQuadrature rule on macro cells.