an encyclopedia of finite element definitions

# Contributing to DefElement

If you find an error or inaccuracy in a DefElement entry, please open an issue on GitHub. You can also open an issue to suggest a new element that should be added to the database.

## Contributing directly

You can contribute to DefElement by forking the DefElement GitHub repo, making changes, then opening a pull request.

The functional information and examples on the element pages are generated using Symfem, a symbolic finite element definition library. Before adding an element to DefElement, it should first be implemented in Symfem.

### Defining an element

Elements in the DefElement database are defined using a yaml file in the elements/ folder. The full file for a Lagrange element is:

name: Lagrange
html-name: Lagrange
alt-names:
- Polynomial
- Galerkin
- DGT
- Hdiv trace
notes:
- DGT and Hdiv trace are names given to this element when it is defined on the facets of a mesh.
short-names:
- P
- CG
- DG
exterior-calculus:
- P-,0,simplex
- P,0,simplex
- Q-,0,tp
ndofs:
interval:
formula: k+1
oeis: A000027
triangle:
formula: (k+1)(k+2)/2
oeis: A000217
tetrahedron:
formula: (k+1)(k+2)(k+3)/6
oeis: A000292
formula: (k+1)^2
oeis: A000290
hexahedron:
formula: (k+1)^3
oeis: A000578
prism:
formula: (k+1)^2(k+2)/2
oeis: A002411
pyramid:
formula: (k+1)(k+2)(2k+3)/6
oeis: A000330
entity-ndofs:
vertices:
formula: 1
oeis: A000012
edges:
formula: k-1
oeis: A000027
faces:
triangle:
formula: (k-1)(k-2)/2
oeis: A000217
formula: (k-1)^2
oeis: A000290
volumes:
tetrahedron:
formula: (k-1)(k-2)(k-3)/6
oeis: A000292
hexahedron:
formula: (k-1)^3
oeis: A000578
prism:
formula: (k-1)^2(k-2)/2
oeis: A002411
pyramid:
formula: (k-1)(k-2)(2k-3)/6
oeis: A000330
min-order: 1
categories:
- scalar
reference elements:
- interval
- triangle
- tetrahedron
- hexahedron
- prism
- pyramid
dofs:
vertices: point evaluations
edges: point evaluations
faces: point evaluations
volumes: point evaluations
polynomial set:
interval: poly[k]
triangle: poly[k]
tetrahedron: poly[k]
hexahedron: qoly[k]
prism: [\operatorname{span}\left\{x_1^{p_1}x_2^{p_2}x_3^{p_3}\middle|\max(p_1+p_2,p_3)\leqslant k\right\}]
pyramid: [\operatorname{span}\left\{x_1^{p_1}x_2^{p_2}x_3^{p_3}\middle|p_3\leqslant k-1,p_1+p_3\leqslant k,p_2+p_3\leqslant k\right\}] && [\operatorname{span}\left\{x_3^k\right\}]
symfem:
interval: Lagrange
triangle: Lagrange
tetrahedron: Lagrange
hexahedron: Q
prism: Lagrange
pyramid: Lagrange
basix: Lagrange
ufl:
interval: Lagrange
triangle: Lagrange
tetrahedron: Lagrange
hexahedron: Q
bempp:
triangle: P orders=1
examples:
- interval,1
- interval,2
- interval,3
- triangle,1
- triangle,2
- triangle,3