symfem.polynomials

Polynomials.

Submodules

Functions

l2_dual(→ list[symfem.functions.ScalarFunction])

Compute the L2 dual of a set of polynomials.

jacobi_polynomial(→ symfem.functions.ScalarFunction)

Get a Jacobi polynomial.

monic_jacobi_polynomial(→ symfem.functions.ScalarFunction)

Get a monic Jacobi polynomial.

orthogonal_basis(→ list[symfem.functions.ScalarFunction])

Create a basis of orthogonal polynomials.

orthonormal_basis(→ list[symfem.functions.ScalarFunction])

Create a basis of orthonormal polynomials.

lobatto_basis(→ list[symfem.functions.ScalarFunction])

Get Lobatto polynomials.

lobatto_dual_basis(→ list[symfem.functions.ScalarFunction])

Get L2 dual of Lobatto polynomials.

Hcurl_polynomials(→ list[symfem.functions.VectorFunction])

Hcurl conforming polynomial set.

Hcurl_quolynomials(→ list[symfem.functions.VectorFunction])

Hcurl conforming quolynomial set.

Hcurl_serendipity(→ list[symfem.functions.VectorFunction])

Hcurl conforming serendipity set.

Hdiv_polynomials(→ list[symfem.functions.VectorFunction])

Hdiv conforming polynomial set.

Hdiv_quolynomials(→ list[symfem.functions.VectorFunction])

Hdiv conforming quolynomial set.

Hdiv_serendipity(→ list[symfem.functions.VectorFunction])

Hdiv conforming serendipity set.

polynomial_set(→ list[symfem.functions.ScalarFunction])

One dimensional polynomial set for a cell.

polynomial_set_1d(→ list[symfem.functions.ScalarFunction])

One dimensional polynomial set.

polynomial_set_vector(...)

Polynomial set.

prism_polynomial_set_1d(...)

One dimensional polynomial set.

prism_polynomial_set_vector(...)

Polynomial set for a prism.

pyramid_polynomial_set_1d(...)

One dimensional polynomial set.

pyramid_polynomial_set_vector(...)

Polynomial set for a pyramid.

quolynomial_set_1d(→ list[symfem.functions.ScalarFunction])

One dimensional quolynomial set.

quolynomial_set_vector(...)

Quolynomial set.

serendipity_indices(→ list[list[int]])

Get the set indices for a serendipity polynomial set.

serendipity_set_1d(→ list[symfem.functions.ScalarFunction])

One dimensional serendipity set.

serendipity_set_vector(...)

Serendipity set.

degree(→ int)

Get the Lagrange degree of a polynomial on a reference cell.

Package Contents

symfem.polynomials.l2_dual(cell: str, poly: list[symfem.functions.ScalarFunction]) list[symfem.functions.ScalarFunction]

Compute the L2 dual of a set of polynomials.

Parameters:
  • cell – The cell type

  • poly – The set of polynomial

Returns:

The L2 dual polynomials

symfem.polynomials.jacobi_polynomial(n: int, a: int, b: int, variable: sympy.Symbol = x[0]) symfem.functions.ScalarFunction

Get a Jacobi polynomial.

Parameters:
  • n – Polynomial degree

  • a – The parameter a

  • b – The parameter b

  • variable – Variable to use

symfem.polynomials.monic_jacobi_polynomial(n: int, a: int, b: int, variable: sympy.Symbol = x[0]) symfem.functions.ScalarFunction

Get a monic Jacobi polynomial.

Parameters:
  • n – Polynomial degree

  • a – The parameter a

  • b – The parameter b

  • variable – Variable to use

symfem.polynomials.orthogonal_basis(cell: str, order: int, variables: symfem.symbols.AxisVariablesNotSingle | None = None, ptype: str = 'Lagrange') list[symfem.functions.ScalarFunction]

Create a basis of orthogonal polynomials.

Parameters:
  • cell – The cell type

  • order – The maximum polynomial degree

  • variables – The variables to use

  • ptype – The type of the polynomial set (pyramids only)

Returns:

A set of orthogonal polynomials

symfem.polynomials.orthonormal_basis(cell: str, order: int, variables: symfem.symbols.AxisVariablesNotSingle | None = None, ptype: str = 'Lagrange') list[symfem.functions.ScalarFunction]

Create a basis of orthonormal polynomials.

Parameters:
  • cell – The cell type

  • order – The maximum polynomial degree

  • variables – The variables to use

  • ptype – The type of the polynomial set (pyramids only)

Returns:

A set of orthonormal polynomials

symfem.polynomials.lobatto_basis(cell: str, order: int, include_endpoints: bool = True) list[symfem.functions.ScalarFunction]

Get Lobatto polynomials.

Parameters:
  • cell – The cell type

  • order – The maximum polynomial degree

  • include_endpoint – should polynomials that are non-zero on the boundary be included?

Returns:

Lobatto polynomials

symfem.polynomials.lobatto_dual_basis(cell: str, order: int, include_endpoints: bool = True) list[symfem.functions.ScalarFunction]

Get L2 dual of Lobatto polynomials.

Parameters:
  • cell – The cell type

  • order – The maximum polynomial degree

  • include_endpoint – should polynomials that are non-zero on the boundary be included?

Returns:

Lobatto polynomials

symfem.polynomials.Hcurl_polynomials(domain_dim: int, range_dim: int, order: int, variables: symfem.symbols.AxisVariablesNotSingle = x) list[symfem.functions.VectorFunction]

Hcurl conforming polynomial set.

Parameters:
  • domain_dim – The number of variables

  • range_dim – The dimension of the output vector

  • order – The maximum polynomial degree

  • variables – The variables to use

Returns:

A set of polynomials

symfem.polynomials.Hcurl_quolynomials(domain_dim: int, range_dim: int, order: int, variables: symfem.symbols.AxisVariablesNotSingle = x) list[symfem.functions.VectorFunction]

Hcurl conforming quolynomial set.

Parameters:
  • domain_dim – The number of variables

  • range_dim – The dimension of the output vector

  • order – The maximum polynomial degree

  • variables – The variables to use

Returns:

A set of polynomials

symfem.polynomials.Hcurl_serendipity(domain_dim: int, range_dim: int, order: int, variables: symfem.symbols.AxisVariablesNotSingle = x) list[symfem.functions.VectorFunction]

Hcurl conforming serendipity set.

Parameters:
  • domain_dim – The number of variables

  • range_dim – The dimension of the output vector

  • order – The maximum polynomial degree

  • variables – The variables to use

Returns:

A set of polynomials

symfem.polynomials.Hdiv_polynomials(domain_dim: int, range_dim: int, order: int, variables: symfem.symbols.AxisVariablesNotSingle = x) list[symfem.functions.VectorFunction]

Hdiv conforming polynomial set.

Parameters:
  • domain_dim – The number of variables

  • range_dim – The dimension of the output vector

  • order – The maximum polynomial degree

  • variables – The variables to use

Returns:

A set of polynomials

symfem.polynomials.Hdiv_quolynomials(domain_dim: int, range_dim: int, order: int, variables: symfem.symbols.AxisVariablesNotSingle = x) list[symfem.functions.VectorFunction]

Hdiv conforming quolynomial set.

Parameters:
  • domain_dim – The number of variables

  • range_dim – The dimension of the output vector

  • order – The maximum polynomial degree

  • variables – The variables to use

Returns:

A set of polynomials

symfem.polynomials.Hdiv_serendipity(domain_dim: int, range_dim: int, order: int, variables: symfem.symbols.AxisVariablesNotSingle = x) list[symfem.functions.VectorFunction]

Hdiv conforming serendipity set.

Parameters:
  • domain_dim – The number of variables

  • range_dim – The dimension of the output vector

  • order – The maximum polynomial degree

  • variables – The variables to use

Returns:

A set of polynomials

symfem.polynomials.polynomial_set(cell: str, order: int, variables: symfem.symbols.AxisVariablesNotSingle = x) list[symfem.functions.ScalarFunction]

One dimensional polynomial set for a cell.

Parameters:
  • cell – Cell name

  • order – The maximum degree

  • variabtles – The variables to use

Returns:

A set of polynomials

symfem.polynomials.polynomial_set_1d(dim: int, order: int, variables: symfem.symbols.AxisVariablesNotSingle = x) list[symfem.functions.ScalarFunction]

One dimensional polynomial set.

Parameters:
  • dim – The number of variables

  • order – The maximum polynomial degree

  • variables – The variables to use

Returns:

A set of polynomials

symfem.polynomials.polynomial_set_vector(domain_dim: int, range_dim: int, order: int, variables: symfem.symbols.AxisVariablesNotSingle = x) list[symfem.functions.VectorFunction]

Polynomial set.

Parameters:
  • domain_dim – The number of variables

  • range_dim – The dimension of the output vector

  • order – The maximum polynomial degree

  • variables – The variables to use

Returns:

A set of polynomials

symfem.polynomials.prism_polynomial_set_1d(dim: int, order: int, variables: symfem.symbols.AxisVariablesNotSingle = x) list[symfem.functions.ScalarFunction]

One dimensional polynomial set.

Parameters:
  • dim – The number of variables

  • order – The maximum polynomial degree

  • variables – The variables to use

Returns:

A set of polynomials

symfem.polynomials.prism_polynomial_set_vector(domain_dim: int, range_dim: int, order: int, variables: symfem.symbols.AxisVariablesNotSingle = x) list[symfem.functions.VectorFunction]

Polynomial set for a prism.

Parameters:
  • domain_dim – The number of variables

  • range_dim – The dimension of the output vector

  • order – The maximum polynomial degree

  • variables – The variables to use

Returns:

A set of polynomials

symfem.polynomials.pyramid_polynomial_set_1d(dim: int, order: int, variables: symfem.symbols.AxisVariablesNotSingle = x) list[symfem.functions.ScalarFunction]

One dimensional polynomial set.

Parameters:
  • dim – The number of variables

  • order – The maximum polynomial degree

  • variables – The variables to use

Returns:

A set of polynomials

symfem.polynomials.pyramid_polynomial_set_vector(domain_dim: int, range_dim: int, order: int, variables: symfem.symbols.AxisVariablesNotSingle = x) list[symfem.functions.VectorFunction]

Polynomial set for a pyramid.

Parameters:
  • domain_dim – The number of variables

  • range_dim – The dimension of the output vector

  • order – The maximum polynomial degree

  • variables – The variables to use

Returns:

A set of polynomials

symfem.polynomials.quolynomial_set_1d(dim: int, order: int, variables: symfem.symbols.AxisVariablesNotSingle = x) list[symfem.functions.ScalarFunction]

One dimensional quolynomial set.

Parameters:
  • dim – The number of variables

  • order – The maximum polynomial degree

  • variables – The variables to use

Returns:

A set of polynomials

symfem.polynomials.quolynomial_set_vector(domain_dim: int, range_dim: int, order: int, variables: symfem.symbols.AxisVariablesNotSingle = x) list[symfem.functions.VectorFunction]

Quolynomial set.

Parameters:
  • domain_dim – The number of variables

  • range_dim – The dimension of the output vector

  • order – The maximum polynomial degree

  • variables – The variables to use

Returns:

A set of polynomials

symfem.polynomials.serendipity_indices(total: int, linear: int, dim: int, done: list[int] | None = None) list[list[int]]

Get the set indices for a serendipity polynomial set.

Parameters:
  • dim – The number of variables

  • order – The maximum polynomial degree

  • variables – The variables to use

Returns:

A set of polynomials

symfem.polynomials.serendipity_set_1d(dim: int, order: int, variables: symfem.symbols.AxisVariablesNotSingle = x) list[symfem.functions.ScalarFunction]

One dimensional serendipity set.

Parameters:
  • dim – The number of variables

  • order – The maximum polynomial degree

  • variables – The variables to use

Returns:

A set of polynomials

symfem.polynomials.serendipity_set_vector(domain_dim: int, range_dim: int, order: int, variables: symfem.symbols.AxisVariablesNotSingle = x) list[symfem.functions.VectorFunction]

Serendipity set.

Parameters:
  • domain_dim – The number of variables

  • range_dim – The dimension of the output vector

  • order – The maximum polynomial degree

  • variables – The variables to use

Returns:

A set of polynomials

symfem.polynomials.degree(reference: symfem.references.Reference, polynomial: symfem.functions.Function, vars: tuple[sympy.Symbol, Ellipsis] = x) int

Get the Lagrange degree of a polynomial on a reference cell.

Parameters:
  • reference – The reference cell

  • polynomial – The polynomial

Returns:

The degree of the polynomial on the reference cell