Interfaces for creating finite elements. More...
Typedefs | |
using | cmdspan2_t = impl::cmdspan2_t |
Typedef for mdspan. | |
using | cmdspan4_t = impl::cmdspan4_t |
Typedef for mdspan. | |
Enumerations | |
enum | lagrange_variant { unset = -1, equispaced = 0, gll_warped = 1, gll_isaac = 2, gll_centroid = 3, chebyshev_warped = 4, chebyshev_isaac = 5, chebyshev_centroid = 6, gl_warped = 7, gl_isaac = 8, gl_centroid = 9, legendre = 10, bernstein = 11, vtk = 20 } |
Variants of a Lagrange space that can be created. | |
enum | dpc_variant { unset = -1, simplex_equispaced = 0, simplex_gll = 1, horizontal_equispaced = 2, horizontal_gll = 3, diagonal_equispaced = 4, diagonal_gll = 5, legendre = 6 } |
enum | family { custom = 0, P = 1, RT = 2, N1E = 3, BDM = 4, N2E = 5, CR = 6, Regge = 7, DPC = 8, bubble = 9, serendipity = 10, HHJ = 11, Hermite = 12 } |
Available element families. | |
Functions | |
FiniteElement | create_bdm (cell::type celltype, int degree, lagrange_variant lvariant, bool discontinuous) |
FiniteElement | create_bubble (cell::type celltype, int degree, bool discontinuous) |
FiniteElement | create_cr (cell::type celltype, int degree, bool discontinuous) |
FiniteElement | create_hermite (cell::type celltype, int degree, bool discontinuous) |
FiniteElement | create_hhj (cell::type celltype, int degree, bool discontinuous) |
FiniteElement | create_lagrange (cell::type celltype, int degree, lagrange_variant variant, bool discontinuous) |
Create a Lagrange(-like) element on cell with given degree. More... | |
FiniteElement | create_rtc (cell::type celltype, int degree, element::lagrange_variant lvariant, bool discontinuous) |
FiniteElement | create_nce (cell::type celltype, int degree, element::lagrange_variant lvariant, bool discontinuous) |
FiniteElement | create_nedelec (cell::type celltype, int degree, lagrange_variant lvariant, bool discontinuous) |
FiniteElement | create_nedelec2 (cell::type celltype, int degree, lagrange_variant lvariant, bool discontinuous) |
FiniteElement | create_rt (cell::type celltype, int degree, element::lagrange_variant lvariant, bool discontinuous) |
FiniteElement | create_regge (cell::type celltype, int degree, bool discontinuous) |
FiniteElement | create_serendipity (cell::type celltype, int degree, element::lagrange_variant lvariant, element::dpc_variant dvariant, bool discontinuous) |
FiniteElement | create_dpc (cell::type celltype, int degree, element::dpc_variant variant, bool discontinuous) |
FiniteElement | create_serendipity_div (cell::type celltype, int degree, element::lagrange_variant lvariant, element::dpc_variant dvariant, bool discontinuous) |
FiniteElement | create_serendipity_curl (cell::type celltype, int degree, element::lagrange_variant lvariant, element::dpc_variant dvariant, bool discontinuous) |
std::tuple< std::array< std::vector< std::vector< double > >, 4 >, std::array< std::vector< std::array< std::size_t, 2 > >, 4 >, std::array< std::vector< std::vector< double > >, 4 >, std::array< std::vector< std::array< std::size_t, 4 > >, 4 > > | make_discontinuous (const std::array< std::vector< cmdspan2_t >, 4 > &x, const std::array< std::vector< cmdspan4_t >, 4 > &M, std::size_t tdim, std::size_t value_size) |
Interfaces for creating finite elements.
|
strong |
Variants of a DPC (discontinuous polynomial cubical) space that can be created. DPC spaces span the same set of polynomials as Lagrange spaces on simplices but are defined on tensor product cells.
FiniteElement basix::element::create_bdm | ( | cell::type | celltype, |
int | degree, | ||
lagrange_variant | lvariant, | ||
bool | discontinuous | ||
) |
Create BDM element
[in] | celltype | The cell type |
[in] | degree | The degree of the element |
[in] | lvariant | The Lagrange variant to use when defining the element to take integral moments against |
[in] | discontinuous | Controls whether the element is continuous or discontinuous |
FiniteElement basix::element::create_bubble | ( | cell::type | celltype, |
int | degree, | ||
bool | discontinuous | ||
) |
Create a bubble element on cell with given degree
[in] | celltype | The cell type |
[in] | degree | The degree of the element |
[in] | discontinuous | Controls whether the element is continuous or discontinuous |
FiniteElement basix::element::create_cr | ( | cell::type | celltype, |
int | degree, | ||
bool | discontinuous | ||
) |
Crouzeix-Raviart element
[in] | celltype | The cell type |
[in] | degree | The degree of the element |
[in] | discontinuous | Controls whether the element is continuous or discontinuous |
FiniteElement basix::element::create_dpc | ( | cell::type | celltype, |
int | degree, | ||
element::dpc_variant | variant, | ||
bool | discontinuous | ||
) |
Create a DPC (discontinuous polynomial cubical) element on cell with given degree.
[in] | celltype | The cell type |
[in] | degree | The degree of the element |
[in] | variant | The variant of the element to be created |
[in] | discontinuous | Controls whether the element is continuous or discontinuous |
FiniteElement basix::element::create_hermite | ( | cell::type | celltype, |
int | degree, | ||
bool | discontinuous | ||
) |
Create a Hermite element on cell with given degree
[in] | celltype | The cell type |
[in] | degree | The degree of the element |
[in] | discontinuous | Controls whether the element is continuous or discontinuous |
FiniteElement basix::element::create_hhj | ( | cell::type | celltype, |
int | degree, | ||
bool | discontinuous | ||
) |
Create Hellan-Herrmann-Johnson element
[in] | celltype | The cell type |
[in] | degree | The degree of the element |
[in] | discontinuous | Controls whether the element is continuous or discontinuous |
FiniteElement basix::element::create_lagrange | ( | cell::type | celltype, |
int | degree, | ||
lagrange_variant | variant, | ||
bool | discontinuous | ||
) |
Create a Lagrange(-like) element on cell with given degree.
[in] | celltype | The element cell type |
[in] | degree | The degree of the element |
[in] | variant | The variant of the element to be created |
[in] | discontinuous | True if the is discontinuous |
FiniteElement basix::element::create_nce | ( | cell::type | celltype, |
int | degree, | ||
element::lagrange_variant | lvariant, | ||
bool | discontinuous | ||
) |
Create NC H(curl) element
[in] | celltype | The cell type |
[in] | degree | The degree of the element |
[in] | lvariant | The Lagrange variant to use when defining the element to take integral moments against |
[in] | discontinuous | Controls whether the element is continuous or discontinuous |
FiniteElement basix::element::create_nedelec | ( | cell::type | celltype, |
int | degree, | ||
lagrange_variant | lvariant, | ||
bool | discontinuous | ||
) |
Create Nedelec element (first kind)
[in] | celltype | The cell type |
[in] | degree | The degree of the element |
[in] | lvariant | The Lagrange variant to use when defining the element to take integral moments against |
[in] | discontinuous | Controls whether the element is continuous or discontinuous |
FiniteElement basix::element::create_nedelec2 | ( | cell::type | celltype, |
int | degree, | ||
lagrange_variant | lvariant, | ||
bool | discontinuous | ||
) |
Create Nedelec element (second kind)
[in] | celltype | The cell type |
[in] | degree | The degree of the element |
[in] | lvariant | The Lagrange variant to use when defining the element to take integral moments against |
[in] | discontinuous | Controls whether the element is continuous or discontinuous |
FiniteElement basix::element::create_regge | ( | cell::type | celltype, |
int | degree, | ||
bool | discontinuous | ||
) |
Create Regge element
[in] | celltype | The cell type |
[in] | degree | The degree of the element |
[in] | discontinuous | Controls whether the element is continuous or discontinuous |
FiniteElement basix::element::create_rt | ( | cell::type | celltype, |
int | degree, | ||
element::lagrange_variant | lvariant, | ||
bool | discontinuous | ||
) |
Create Raviart-Thomas element
[in] | celltype | The cell type |
[in] | degree | The degree of the element |
[in] | lvariant | The Lagrange variant to use when defining the element to take integral moments against |
[in] | discontinuous | Controls whether the element is continuous or discontinuous |
FiniteElement basix::element::create_rtc | ( | cell::type | celltype, |
int | degree, | ||
element::lagrange_variant | lvariant, | ||
bool | discontinuous | ||
) |
Create RTC H(div) element
[in] | celltype | The cell type |
[in] | degree | The degree of the element |
[in] | lvariant | The Lagrange variant to use when defining the element to take integral moments against |
[in] | discontinuous | Controls whether the element is continuous or discontinuous |
FiniteElement basix::element::create_serendipity | ( | cell::type | celltype, |
int | degree, | ||
element::lagrange_variant | lvariant, | ||
element::dpc_variant | dvariant, | ||
bool | discontinuous | ||
) |
Create a serendipity element on cell with given degree
[in] | celltype | The cell type |
[in] | degree | The degree of the element |
[in] | lvariant | The variant of the Lagrange element to be used for integral moments on the edges of the cell |
[in] | dvariant | The variant of the DPC element to be used for integral moments on the interior of the cell (for quads and hexes). For elements on an interval element::dpc_variant::unset can be passed in |
[in] | discontinuous | Controls whether the element is continuous or discontinuous |
FiniteElement basix::element::create_serendipity_curl | ( | cell::type | celltype, |
int | degree, | ||
element::lagrange_variant | lvariant, | ||
element::dpc_variant | dvariant, | ||
bool | discontinuous | ||
) |
Create a serendipity H(curl) element on cell with given degree
[in] | celltype | The cell type |
[in] | degree | The degree of the element |
[in] | lvariant | The variant of the Lagrange element to be used for integral moments |
[in] | dvariant | The variant of the DPC element to be used for integral moments |
[in] | discontinuous | Controls whether the element is continuous or discontinuous |
FiniteElement basix::element::create_serendipity_div | ( | cell::type | celltype, |
int | degree, | ||
element::lagrange_variant | lvariant, | ||
element::dpc_variant | dvariant, | ||
bool | discontinuous | ||
) |
Create a serendipity H(div) element on cell with given degree
[in] | celltype | The cell type |
[in] | degree | The degree of the element |
[in] | lvariant | The variant of the Lagrange element to be used for integral moments |
[in] | dvariant | The variant of the DPC element to be used for integral moments |
[in] | discontinuous | Controls whether the element is continuous or discontinuous |
std::tuple< std::array< std::vector< std::vector< double > >, 4 >, std::array< std::vector< std::array< std::size_t, 2 > >, 4 >, std::array< std::vector< std::vector< double > >, 4 >, std::array< std::vector< std::array< std::size_t, 4 > >, 4 > > basix::element::make_discontinuous | ( | const std::array< std::vector< cmdspan2_t >, 4 > & | x, |
const std::array< std::vector< cmdspan4_t >, 4 > & | M, | ||
std::size_t | tdim, | ||
std::size_t | value_size | ||
) |
Creates a version of the interpolation points, interpolation matrices and entity transformation that represent a discontinuous version of the element. This discontinuous version will have the same DOFs but they will all be associated with the interior of the reference cell.
[in] | x | Interpolation points. Indices are (tdim, entity index, point index, dim) |
[in] | M | The interpolation matrices. Indices are (tdim, entity index, dof, vs, point_index, derivative) |
[in] | tdim | The topological dimension of the cell the element is defined on |
[in] | value_size | The value size of the element |