symfem.elements.dual
¶
Dual elements.
These elements’ definitions appear in https://doi.org/10.1016/j.crma.2004.12.022 (Buffa, Christiansen, 2005)
Module Contents¶
Classes¶
Abstract barycentric finite element. |
|
Barycentric dual finite element. |
|
Buffa-Christiansen barycentric dual finite element. |
|
RotatedBuffa-Christiansen barycentric dual finite element. |
- class symfem.elements.dual.DualCiarletElement(dual_coefficients: List[List[List[int | sympy.core.expr.Expr]]], fine_space: str, reference: symfem.references.DualPolygon, order: int, dof_entities: List[Tuple[int, int]], domain_dim: int, range_dim: int, range_shape: Tuple[int, Ellipsis] | None = None, dof_directions: symfem.geometry.SetOfPoints | None = None)¶
Bases:
symfem.finite_element.FiniteElement
Abstract barycentric finite element.
- abstract property maximum_degree: int¶
Get the maximum degree of this polynomial set for the element.
- get_polynomial_basis(reshape: bool = True) List[symfem.functions.AnyFunction] ¶
Get the symbolic polynomial basis for the element.
- Returns:
The polynomial basis
- get_dual_matrix() sympy.matrices.dense.MutableDenseMatrix ¶
Get the dual matrix.
- Returns:
The dual matrix
- get_basis_functions(use_tensor_factorisation: bool = False) List[symfem.functions.AnyFunction] ¶
Get the basis functions of the element.
- Parameters:
use_tensor_factorisation – Should a tensor factorisation be used?
- Returns:
The basis functions
- entity_dofs(entity_dim: int, entity_number: int) List[int] ¶
Get the numbers of the DOFs associated with the given entity.
- Parameters:
entity_dim – The dimension of the entity
entity_number – The number of the entity
- Returns:
The numbers of the DOFs associated with the entity
- dof_plot_positions() List[symfem.geometry.PointType] ¶
Get the points to plot each DOF at on a DOF diagram.
- Returns:
The DOF positions
- dof_directions() List[symfem.geometry.PointType | None] ¶
Get the direction associated with each DOF.
- Returns:
The DOF directions
- dof_entities() List[Tuple[int, int]] ¶
Get the entities that each DOF is associated with.
- Returns:
The entities
- abstract map_to_cell(vertices_in: symfem.geometry.SetOfPointsInput, basis: List[symfem.functions.AnyFunction] | None = None, forward_map: symfem.geometry.PointType | None = None, inverse_map: symfem.geometry.PointType | None = None) List[symfem.functions.AnyFunction] ¶
Map the basis onto a cell using the appropriate mapping for the element.
- Parameters:
vertices_in – The vertices of the cell
basis – The basis functions
forward_map – The map from the reference to the cell
inverse_map – The map to the reference from the cell
- Returns:
The basis functions mapped to the cell
- class symfem.elements.dual.Dual(reference: symfem.references.DualPolygon, order: int)¶
Bases:
DualCiarletElement
Barycentric dual finite element.
- names = ['dual polynomial', 'dual P', 'dual']¶
- references = ['dual polygon']¶
- min_order = 0¶
- max_order = 1¶
- continuity = 'C0'¶
- last_updated = '2023.05'¶
- class symfem.elements.dual.BuffaChristiansen(reference: symfem.references.DualPolygon, order: int)¶
Bases:
DualCiarletElement
Buffa-Christiansen barycentric dual finite element.
- names = ['Buffa-Christiansen', 'BC']¶
- references = ['dual polygon']¶
- min_order = 1¶
- max_order = 1¶
- continuity = 'H(div)'¶
- last_updated = '2023.05'¶
- class symfem.elements.dual.RotatedBuffaChristiansen(reference: symfem.references.DualPolygon, order: int)¶
Bases:
DualCiarletElement
RotatedBuffa-Christiansen barycentric dual finite element.
- names = ['rotated Buffa-Christiansen', 'RBC']¶
- references = ['dual polygon']¶
- min_order = 1¶
- max_order = 1¶
- continuity = 'H(div)'¶
- last_updated = '2023.05'¶