:py:mod:`symfem.elements.dual` ============================== .. py:module:: symfem.elements.dual .. autoapi-nested-parse:: Dual elements. These elements' definitions appear in https://doi.org/10.1016/j.crma.2004.12.022 (Buffa, Christiansen, 2005) Module Contents --------------- Classes ~~~~~~~ .. autoapisummary:: symfem.elements.dual.DualCiarletElement symfem.elements.dual.Dual symfem.elements.dual.BuffaChristiansen symfem.elements.dual.RotatedBuffaChristiansen .. py:class:: DualCiarletElement(dual_coefficients: List[List[List[Union[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: Optional[Tuple[int, Ellipsis]] = None, dof_directions: Optional[symfem.geometry.SetOfPoints] = None) Bases: :py:obj:`symfem.finite_element.FiniteElement` Abstract barycentric finite element. .. py:property:: maximum_degree :type: int :abstractmethod: Get the maximum degree of this polynomial set for the element. .. py:method:: get_polynomial_basis(reshape: bool = True) -> List[symfem.functions.AnyFunction] Get the symbolic polynomial basis for the element. :returns: The polynomial basis .. py:method:: get_dual_matrix() -> sympy.matrices.dense.MutableDenseMatrix Get the dual matrix. :returns: The dual matrix .. py:method:: get_basis_functions(use_tensor_factorisation: bool = False) -> List[symfem.functions.AnyFunction] Get the basis functions of the element. :param use_tensor_factorisation: Should a tensor factorisation be used? :returns: The basis functions .. py:method:: entity_dofs(entity_dim: int, entity_number: int) -> List[int] Get the numbers of the DOFs associated with the given entity. :param entity_dim: The dimension of the entity :param entity_number: The number of the entity :returns: The numbers of the DOFs associated with the entity .. py:method:: dof_plot_positions() -> List[symfem.geometry.PointType] Get the points to plot each DOF at on a DOF diagram. :returns: The DOF positions .. py:method:: dof_directions() -> List[Union[symfem.geometry.PointType, None]] Get the direction associated with each DOF. :returns: The DOF directions .. py:method:: dof_entities() -> List[Tuple[int, int]] Get the entities that each DOF is associated with. :returns: The entities .. py:method:: map_to_cell(vertices_in: symfem.geometry.SetOfPointsInput, basis: Optional[List[symfem.functions.AnyFunction]] = None, forward_map: Optional[symfem.geometry.PointType] = None, inverse_map: Optional[symfem.geometry.PointType] = None) -> List[symfem.functions.AnyFunction] :abstractmethod: Map the basis onto a cell using the appropriate mapping for the element. :param vertices_in: The vertices of the cell :param basis: The basis functions :param forward_map: The map from the reference to the cell :param inverse_map: The map to the reference from the cell :returns: The basis functions mapped to the cell .. py:class:: Dual(reference: symfem.references.DualPolygon, order: int) Bases: :py:obj:`DualCiarletElement` Barycentric dual finite element. .. py:attribute:: names :value: ['dual polynomial', 'dual P', 'dual'] .. py:attribute:: references :value: ['dual polygon'] .. py:attribute:: min_order :value: 0 .. py:attribute:: max_order :value: 1 .. py:attribute:: continuity :value: 'C0' .. py:attribute:: last_updated :value: '2023.05' .. py:class:: BuffaChristiansen(reference: symfem.references.DualPolygon, order: int) Bases: :py:obj:`DualCiarletElement` Buffa-Christiansen barycentric dual finite element. .. py:attribute:: names :value: ['Buffa-Christiansen', 'BC'] .. py:attribute:: references :value: ['dual polygon'] .. py:attribute:: min_order :value: 1 .. py:attribute:: max_order :value: 1 .. py:attribute:: continuity :value: 'H(div)' .. py:attribute:: last_updated :value: '2023.05' .. py:class:: RotatedBuffaChristiansen(reference: symfem.references.DualPolygon, order: int) Bases: :py:obj:`DualCiarletElement` RotatedBuffa-Christiansen barycentric dual finite element. .. py:attribute:: names :value: ['rotated Buffa-Christiansen', 'RBC'] .. py:attribute:: references :value: ['dual polygon'] .. py:attribute:: min_order :value: 1 .. py:attribute:: max_order :value: 1 .. py:attribute:: continuity :value: 'H(div)' .. py:attribute:: last_updated :value: '2023.05'