Skip to content

Add support for macroelements #545

@mscroggs

Description

@mscroggs

Macroelements are defined by splitting the reference cell into smaller cells, then defining the polyset using piecewise polynomials on these subcells.

The hard assumption that basis functions are polynomial on the cell in Basix prevent these from being used currently.

There are two types of macro element that I am aware of:

1. Macro elements obtained by dividing each cell by splitting edges in half
For example: P1-iso-P2

image
tet-macro-diagram

The diagram for the tetrahedron is taken from Snoeijer, J., Numerical Reconstruction of Fundamental Solutions of the Stokes System with Finite Elements (with labels added)

2. Macro elements obtained by dividing cell by splitting angles in half
For example, Guzman-Neilan, HCT

image

I am yet to find a source that uses this type of macro element for a quad. Two possible dissections could be:
image

To do list

  • Allow for elements to have different polyset types
  • Come up with sensible naming for macro polysets #689
  • Edge macro elements (1)
    • Implement lowest degree polysets for edge macro elements
    • Implement arbitrary degree polysets for edge macro elements on intervals, quads, and hexes
    • Implement arbitrary degree polysets for edge macro elements on triangles and tets
  • Vertex macro elements (2)
    • Implement lowest degree polysets for vertex macro elements
    • Implement arbitrary degree polysets for vertex macro elements on intervals and quads
    • Implement arbitrary degree polysets for vertex macro elements on triangles
    • Implement polysets for 3D cells

Metadata

Metadata

Assignees

No one assigned

    Labels

    enhancementNew feature or request

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions