ffcx.analysis#

Compiler stage 1: Analysis.

This module implements the analysis/preprocessing of variational forms, including automatic selection of elements, degrees and form representation type.

Functions

analyze_ufl_objects(ufl_objects, scalar_type)

Analyze ufl object(s).

Classes

UFLData(form_data, unique_elements, ...)

UFL data.

class ffcx.analysis.UFLData(form_data: tuple[FormData, ...], unique_elements: list[basix.ufl._ElementBase], element_numbers: dict[basix.ufl._ElementBase, int], unique_coordinate_elements: list[basix.ufl._ElementBase], expressions: list[tuple[ufl.core.expr.Expr, npt.NDArray[np.floating], ufl.core.expr.Expr]])[source]#

Bases: NamedTuple

UFL data.

Create new instance of UFLData(form_data, unique_elements, element_numbers, unique_coordinate_elements, expressions)

element_numbers: dict[basix.ufl._ElementBase, int]#

Mapping to unique numbers for all elements

expressions: list[tuple[ufl.core.expr.Expr, npt.NDArray[np.floating], ufl.core.expr.Expr]]#

List of all expressions after post-processing, with evaluation points and original expression

form_data: tuple[FormData, ...]#

FormData objects

unique_coordinate_elements: list[basix.ufl._ElementBase]#

Unique coordinate elements across all forms and expressions

unique_elements: list[basix.ufl._ElementBase]#

Unique elements across all forms and expressions

ffcx.analysis.analyze_ufl_objects(ufl_objects: list[Form | _ElementBase | Mesh | tuple[Expr, ndarray[tuple[Any, ...], dtype[floating]]]], scalar_type: DTypeLike) UFLData[source]#

Analyze ufl object(s).

Parameters:
  • ufl_objects – UFL objects

  • scalar_type – Scalar type that should be used for the analysis

Returns:

A named tuple UFLData.