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.
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.
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 (facets)
- Hdiv trace (facets)
- Q (quadrilateral and hexahedron)
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
- P-,d,simplex
- P,d,simplex
- Q-,d,tp
- TNT,d,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
quadrilateral:
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
quadrilateral:
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
- quadrilateral
- 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]
quadrilateral: qoly[k]
hexahedron: qoly[k]
prism:
pyramid:
symfem:
interval: Lagrange
triangle: Lagrange
tetrahedron: Lagrange
quadrilateral: Q
hexahedron: Q
prism: Lagrange
pyramid: Lagrange
basix: P lagrange_variant=equispaced
ufl:
interval: Lagrange
triangle: Lagrange
tetrahedron: Lagrange
quadrilateral: Q
hexahedron: Q
bempp:
triangle: P orders=1
examples:
- interval,1
- interval,2
- interval,3
- triangle,1
- triangle,2
- triangle,3
- quadrilateral,1
- quadrilateral,2
- quadrilateral,3
- tetrahedron,1
- tetrahedron,2
- hexahedron,1
- hexahedron,2
- prism,1
- prism,2
- pyramid,1
- pyramid,2
The entries in this yaml file are:
Name | Required | Description |
name | The name of the element (ascii). | |
html-name | The name of the element, including HTML special characters. | |
alt-names | Alternative (HTML) names of the element. | |
short-names | Abbreviated names of the element. | |
exterior-calculus | The family name and exerior derivatuve order. | |
ndofs | The number of DOFs the element has and the A-numbers of the OEIS sequence(s) giving the number of DOFs. | |
entity-ndofs | The number of DOFs the element has per subentity type and the A-numbers of the OEIS sequence(s) giving the number of DOFs. | |
min-order | The minimum order of the element | |
max-order | The maximum order of the element | |
categories | Categories the element belongs to. Categories are defined in the file /data/categories. | |
reference elements | The reference element(s) that this finite element can be defined on. | |
dofs | Description of the DOFs of this element. | |
polynomial set | The polynomial set of this element. This can use sets defined in the file /data/polysets. Other sets can be given by writing | |
examples | Reference elements and orders to be included in the examples section of the entry. | |
symfem | The string used to define this element in Symfem's create_element function. | |
basix | The name of the enum item used to define this element in Basix's create_element function. | |
ufl | The string used to define this element in UFL. | |
bempp | The string used to define this element in Bempp. | |
notes | Notes about the element. |
Once you have contributed to DefElement, you should add your name and some information about yourself to the contributors page. To do this, you should add info about yourself to the file data/contributors. If you wish to include a picture of yourself, add a square-shaped image to the pictures/ folder.