Interfaces for creating finite elements. More...
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, 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 }  | 
| 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.
      
  | 
  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, | ||
| 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 (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_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 |