Basix
|
Interfaces for creating finite elements. More...
Enumerations | |
enum class | 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 , vtk = 20 } |
Variants of a Lagrange space that can be created. | |
enum class | dpc_variant { unset = -1 , simplex_equispaced = 0 , simplex_gll = 1 , horizontal_equispaced = 2 , horizontal_gll = 3 , diagonal_equispaced = 4 , diagonal_gll = 5 , legendre = 6 } |
Variants of a DPC space that can be created. | |
enum class | 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 } |
Available element families. | |
Functions | |
FiniteElement | create_bdm (cell::type celltype, int degree, element::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_hhj (cell::type celltype, int degree, bool discontinuous) |
FiniteElement | create_lagrange (cell::type celltype, int degree, element::lagrange_variant variant, bool discontinuous) |
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, element::lagrange_variant lvariant, bool discontinuous) |
FiniteElement | create_nedelec2 (cell::type celltype, int degree, element::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< xt::xtensor< double, 2 > >, 4 >, std::array< std::vector< xt::xtensor< double, 3 > >, 4 > > | make_discontinuous (const std::array< std::vector< xt::xtensor< double, 2 >>, 4 > &x, const std::array< std::vector< xt::xtensor< double, 3 >>, 4 > &M, int tdim, int value_size) |
Interfaces for creating finite elements.
FiniteElement basix::element::create_bdm | ( | cell::type | celltype, |
int | degree, | ||
element::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 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_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, | ||
element::lagrange_variant | variant, | ||
bool | discontinuous | ||
) |
Create a Lagrange 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_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, | ||
element::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, | ||
element::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< xt::xtensor< double, 2 > >, 4 >, std::array< std::vector< xt::xtensor< double, 3 > >, 4 > > basix::element::make_discontinuous | ( | const std::array< std::vector< xt::xtensor< double, 2 >>, 4 > & | x, |
const std::array< std::vector< xt::xtensor< double, 3 >>, 4 > & | M, | ||
int | tdim, | ||
int | 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. Shape is (tdim, entity index, point index, dim) |
[in] | M | The interpolation matrices. Indices are (tdim, entity index, dof, vs, point_index) |
[in] | tdim | The topological dimension of the cell the element is defined on |
[in] | value_size | The value size of the element |