Basix Python interface documentation¶
basix¶
Basix is a finite element definition and tabulation runtime library.
The core of the library is written in C++, but the majority of Basix’s functionality can be used via this Python interface.
-
class
basix.
CellType
(self: basix._basixcpp.CellType, value: int) → None¶ Bases:
pybind11_builtins.pybind11_object
Members:
point
interval
triangle
tetrahedron
quadrilateral
hexahedron
prism
pyramid
-
hexahedron
= <CellType.hexahedron: 5>¶
-
interval
= <CellType.interval: 1>¶
-
property
name
¶
-
point
= <CellType.point: 0>¶
-
prism
= <CellType.prism: 6>¶
-
pyramid
= <CellType.pyramid: 7>¶
-
quadrilateral
= <CellType.quadrilateral: 4>¶
-
tetrahedron
= <CellType.tetrahedron: 3>¶
-
triangle
= <CellType.triangle: 2>¶
-
property
value
¶
-
-
class
basix.
ElementFamily
(self: basix._basixcpp.ElementFamily, value: int) → None¶ Bases:
pybind11_builtins.pybind11_object
Members:
custom
P
DP
BDM
RT
N1E
N2E
Regge
Bubble
Serendipity
DPC
CR
-
BDM
= <ElementFamily.BDM: 4>¶
-
Bubble
= <ElementFamily.Bubble: 10>¶
-
CR
= <ElementFamily.CR: 6>¶
-
DP
= <ElementFamily.DP: 8>¶
-
DPC
= <ElementFamily.DPC: 9>¶
-
N1E
= <ElementFamily.N1E: 3>¶
-
N2E
= <ElementFamily.N2E: 5>¶
-
P
= <ElementFamily.P: 1>¶
-
RT
= <ElementFamily.RT: 2>¶
-
Regge
= <ElementFamily.Regge: 7>¶
-
Serendipity
= <ElementFamily.Serendipity: 11>¶
-
custom
= <ElementFamily.custom: 0>¶
-
property
name
¶
-
property
value
¶
-
-
class
basix.
LatticeType
(self: basix._basixcpp.LatticeType, value: int) → None¶ Bases:
pybind11_builtins.pybind11_object
Members:
equispaced
gll
-
equispaced
= <LatticeType.equispaced: 0>¶
-
gll
= <LatticeType.gll: 1>¶
-
property
name
¶
-
property
value
¶
-
-
basix.
compute_jacobi_deriv
(arg0: float, arg1: int, arg2: int, arg3: numpy.ndarray[numpy.float64]) → numpy.ndarray[numpy.float64]¶ Compute jacobi polynomial and derivatives at points
-
basix.
create_element
(*args, **kwargs)¶ Overloaded function.
create_element(arg0: basix._basixcpp.ElementFamily, arg1: basix._basixcpp.CellType, arg2: int) -> basix._basixcpp.FiniteElement
Create a FiniteElement of a given family, celltype and degree
create_element(arg0: basix._basixcpp.ElementFamily, arg1: basix._basixcpp.CellType, arg2: int, arg3: basix._basixcpp.LatticeType) -> basix._basixcpp.FiniteElement
Create a FiniteElement of a given family, celltype, degree and lattice type
-
basix.
create_lattice
(arg0: basix::cell::type, arg1: int, arg2: basix._basixcpp.LatticeType, arg3: bool) → numpy.ndarray[numpy.float64]¶ Create a uniform lattice of points on a reference cell
-
basix.
geometry
(arg0: basix::cell::type) → numpy.ndarray[numpy.float64]¶ Geometric points of a reference cell
-
basix.
index
(*args, **kwargs)¶ Overloaded function.
index(arg0: int) -> int
Indexing for 1D arrays
index(arg0: int, arg1: int) -> int
Indexing for triangular arrays
index(arg0: int, arg1: int, arg2: int) -> int
Indexing for tetrahedral arrays
-
basix.
make_quadrature
(arg0: str, arg1: basix._basixcpp.CellType, arg2: int) → Tuple[numpy.ndarray[numpy.float64], numpy.ndarray[numpy.float64]]¶ Compute quadrature points and weights on a reference cell
-
basix.
tabulate_polynomial_set
(arg0: basix._basixcpp.CellType, arg1: int, arg2: int, arg3: numpy.ndarray[numpy.float64]) → numpy.ndarray[numpy.float64]¶ Tabulate orthonormal polynomial expansion set
-
basix.
topology
(arg0: basix::cell::type) → List[List[List[int]]]¶ Topological description of a reference cell
basix.cell¶
Functions to get cell geometry information and manipulate cell types.
-
basix.cell.
facet_jacobians
()¶ cell_facet_jacobians(arg0: basix._basixcpp.CellType) -> numpy.ndarray[numpy.float64]
Get the jacobians of the facets of a cell
-
basix.cell.
facet_normals
()¶ cell_facet_normals(arg0: basix._basixcpp.CellType) -> numpy.ndarray[numpy.float64]
Get the normals to the facets of a cell
-
basix.cell.
facet_orientations
()¶ cell_facet_orientations(arg0: basix._basixcpp.CellType) -> List[bool]
Get the orientations of the facets of a cell
-
basix.cell.
facet_outward_normals
()¶ cell_facet_outward_normals(arg0: basix._basixcpp.CellType) -> numpy.ndarray[numpy.float64]
Get the outward normals to the facets of a cell
-
basix.cell.
facet_reference_volumes
()¶ cell_facet_reference_volumes(arg0: basix._basixcpp.CellType) -> numpy.ndarray[numpy.float64]
Get the reference volumes of the facets of a cell
-
basix.cell.
string_to_type
(cell: str)¶ Convert a string to a Basix CellType.
-
basix.cell.
sub_entity_connectivity
(arg0: basix::cell::type) → List[List[List[List[int]]]]¶ Connectivity between subentities of a reference cell
-
basix.cell.
type_to_string
(celltype: basix._basixcpp.CellType)¶ Convert a Basix CellType to a string.
-
basix.cell.
volume
()¶ cell_volume(arg0: basix._basixcpp.CellType) -> float
Get the volume of a cell
basix.finite_element¶
Functions for creating finite elements.
-
basix.finite_element.
string_to_family
(family: str, cell: str)¶ Get a Basix ElementFamily enum representing the family type on the given cell.
basix.lattice¶
Functions to create lattices and manipulate lattice types.
-
basix.lattice.
string_to_type
(lattice: str)¶ Convert a string to a Basix LatticeType enum.
-
basix.lattice.
type_to_string
(latticetype: basix._basixcpp.LatticeType)¶ Convert a Basix LatticeType enum to a string.
basix.numba_helpers¶
Helper functions for writing DOLFINx custom kernels using Numba.
-
class
basix.numba_helpers.
List
(lsttype=None, meminfo=None, allocated=0, **kwargs)¶ Bases:
collections.abc.MutableSequence
A typed-list usable in Numba compiled functions.
Implements the MutableSequence interface.
For users, the constructor does not take any parameters. The keyword arguments are for internal use only.
- Parameters
args (iterable) – The iterable to intialize the list from
lsttype (numba.core.types.ListType; keyword-only) – Used internally for the list type.
meminfo (MemInfo; keyword-only) – Used internally to pass the MemInfo object when boxing.
allocated (int; keyword-only) – Used internally to pre-allocate space for items
-
append
(item)¶ S.append(value) – append value to the end of the sequence
-
clear
() → None – remove all items from S¶
-
copy
()¶
-
count
(value) → integer – return number of occurrences of value¶
-
classmethod
empty_list
(item_type, allocated=0)¶ Create a new empty List.
- Parameters
item_type (Numba type) – type of the list item.
allocated (int) – number of items to pre-allocate
-
extend
(iterable)¶ S.extend(iterable) – extend sequence by appending elements from the iterable
-
index
(value[, start[, stop]]) → integer – return first index of value.¶ Raises ValueError if the value is not present.
Supporting start and stop arguments is optional, but recommended.
-
insert
(i, item)¶ S.insert(index, value) – insert value before index
-
pop
([index]) → item – remove and return item at index (default last).¶ Raise IndexError if list is empty or index is out of range.
-
remove
(item)¶ S.remove(value) – remove first occurrence of value. Raise ValueError if the value is not present.
-
reverse
()¶ S.reverse() – reverse IN PLACE
-
sort
(key=None, reverse=False)¶ Sort the list inplace.
See also
list.sort()
-
basix.numba_helpers.
apply_dof_transformation
(tdim, edge_count, face_count, entity_transformations, entity_dofs, data, cell_info, face_types)¶ Apply dof transformations to some data.
- Parameters
tdim (int) – The topological dimension of the cell.
edge_cout (int) – The number of edges the cell has.
face_count (int) – The number of faces the cell has.
entity_transformations (list) – The DOF transformations for each entity.
entity_dofs (list) – The number of DOFs on each entity.
data (np.array) – The data. This will be changed by this function.
cell_info (int) – An integer representing the orientations of the subentities of the cell.
face_types (list) – A list of strings giving the shapes of the faces of the cell.
-
basix.numba_helpers.
apply_dof_transformation_hexahedron
(entity_transformations, entity_dofs, data, cell_info)¶ Apply dof transformations to some data on a hexahedron.
- Parameters
entity_transformations (Dict(ndarray(float64))) – The DOF transformations for each entity.
entity_dofs (Dict(ndarray(int32))) – The number of DOFs on each entity.
data (np.array) – The data. This will be changed by this function.
cell_info (int) – An integer representing the orientations of the subentities of the cell.
-
basix.numba_helpers.
apply_dof_transformation_interval
(entity_transformations, entity_dofs, data, cell_info)¶ Apply dof transformations to some data on an interval.
- Parameters
entity_transformations (Dict(ndarray(float64))) – The DOF transformations for each entity.
entity_dofs (Dict(ndarray(int32))) – The number of DOFs on each entity.
data (np.array) – The data. This will be changed by this function.
cell_info (int) – An integer representing the orientations of the subentities of the cell.
-
basix.numba_helpers.
apply_dof_transformation_prism
(entity_transformations, entity_dofs, data, cell_info)¶ Apply dof transformations to some data on an prism.
- Parameters
entity_transformations (Dict(ndarray(float64))) – The DOF transformations for each entity.
entity_dofs (Dict(ndarray(int32))) – The number of DOFs on each entity.
data (np.array) – The data. This will be changed by this function.
cell_info (int) – An integer representing the orientations of the subentities of the cell.
-
basix.numba_helpers.
apply_dof_transformation_pyramid
(entity_transformations, entity_dofs, data, cell_info)¶ Apply dof transformations to some data on an prism.
- Parameters
entity_transformations (Dict(ndarray(float64))) – The DOF transformations for each entity.
entity_dofs (Dict(ndarray(int32))) – The number of DOFs on each entity.
data (np.array) – The data. This will be changed by this function.
cell_info (int) – An integer representing the orientations of the subentities of the cell.
-
basix.numba_helpers.
apply_dof_transformation_quadrilateral
(entity_transformations, entity_dofs, data, cell_info)¶ Apply dof transformations to some data on an quadrilateral.
- Parameters
entity_transformations (Dict(ndarray(float64))) – The DOF transformations for each entity.
entity_dofs (Dict(ndarray(int32))) – The number of DOFs on each entity.
data (np.array) – The data. This will be changed by this function.
cell_info (int) – An integer representing the orientations of the subentities of the cell.
-
basix.numba_helpers.
apply_dof_transformation_tetrahedron
(entity_transformations, entity_dofs, data, cell_info)¶ Apply dof transformations to some data on a tetrahedron.
- Parameters
entity_transformations (Dict(ndarray(float64))) – The DOF transformations for each entity.
entity_dofs (Dict(ndarray(int32))) – The number of DOFs on each entity.
data (np.array) – The data. This will be changed by this function.
cell_info (int) – An integer representing the orientations of the subentities of the cell.
-
basix.numba_helpers.
apply_dof_transformation_to_transpose
(tdim, edge_count, face_count, entity_transformations, entity_dofs, data, cell_info, face_types)¶ Apply dof transformations to some transposed data.
- Parameters
tdim (int) – The topological dimension of the cell.
edge_cout (int) – The number of edges the cell has.
face_count (int) – The number of faces the cell has.
entity_transformations (list) – The DOF transformations for each entity.
entity_dofs (list) – The number of DOFs on each entity.
data (np.array) – The data. This will be changed by this function.
cell_info (int) – An integer representing the orientations of the subentities of the cell.
face_types (list) – A list of strings giving the shapes of the faces of the cell.
-
basix.numba_helpers.
apply_dof_transformation_to_transpose_hexahedron
(entity_transformations, entity_dofs, data, cell_info)¶ Apply dof transformations to some transposed data on a hexahedron.
- Parameters
entity_transformations (Dict(ndarray(float64))) – The DOF transformations for each entity.
entity_dofs (Dict(ndarray(int32))) – The number of DOFs on each entity.
data (np.array) – The data. This will be changed by this function.
cell_info (int) – An integer representing the orientations of the subentities of the cell.
-
basix.numba_helpers.
apply_dof_transformation_to_transpose_interval
(entity_transformations, entity_dofs, data, cell_info)¶ Apply dof transformations to some transposed data on an interval.
- Parameters
entity_transformations (Dict(ndarray(float64))) – The DOF transformations for each entity.
entity_dofs (Dict(ndarray(int32))) – The number of DOFs on each entity.
data (np.array) – The data. This will be changed by this function.
cell_info (int) – An integer representing the orientations of the subentities of the cell.
-
basix.numba_helpers.
apply_dof_transformation_to_transpose_prism
(entity_transformations, entity_dofs, data, cell_info)¶ Apply dof transformations to some transposed data on an prism.
- Parameters
entity_transformations (Dict(ndarray(float64))) – The DOF transformations for each entity.
entity_dofs (Dict(ndarray(int32))) – The number of DOFs on each entity.
data (np.array) – The data. This will be changed by this function.
cell_info (int) – An integer representing the orientations of the subentities of the cell.
-
basix.numba_helpers.
apply_dof_transformation_to_transpose_pyramid
(entity_transformations, entity_dofs, data, cell_info)¶ Apply dof transformations to some transposed data on an prism.
- Parameters
entity_transformations (Dict(ndarray(float64))) – The DOF transformations for each entity.
entity_dofs (Dict(ndarray(int32))) – The number of DOFs on each entity.
data (np.array) – The data. This will be changed by this function.
cell_info (int) – An integer representing the orientations of the subentities of the cell.
-
basix.numba_helpers.
apply_dof_transformation_to_transpose_quadrilateral
(entity_transformations, entity_dofs, data, cell_info)¶ Apply dof transformations to some transposed data on an quadrilateral.
- Parameters
entity_transformations (Dict(ndarray(float64))) – The DOF transformations for each entity.
entity_dofs (Dict(ndarray(int32))) – The number of DOFs on each entity.
data (np.array) – The data. This will be changed by this function.
cell_info (int) – An integer representing the orientations of the subentities of the cell.
-
basix.numba_helpers.
apply_dof_transformation_to_transpose_tetrahedron
(entity_transformations, entity_dofs, data, cell_info)¶ Apply dof transformations to some transposed data on a tetrahedron.
- Parameters
entity_transformations (Dict(ndarray(float64))) – The DOF transformations for each entity.
entity_dofs (Dict(ndarray(int32))) – The number of DOFs on each entity.
data (np.array) – The data. This will be changed by this function.
cell_info (int) – An integer representing the orientations of the subentities of the cell.
-
basix.numba_helpers.
apply_dof_transformation_to_transpose_triangle
(entity_transformations, entity_dofs, data, cell_info)¶ Apply dof transformations to some transposed data on a triangle.
- Parameters
entity_transformations (Dict(ndarray(float64))) – The DOF transformations for each entity.
entity_dofs (Dict(ndarray(int32))) – The number of DOFs on each entity.
data (np.array) – The data. This will be changed by this function.
cell_info (int) – An integer representing the orientations of the subentities of the cell.
-
basix.numba_helpers.
apply_dof_transformation_triangle
(entity_transformations, entity_dofs, data, cell_info)¶ Apply dof transformations to some data on a triangle.
- Parameters
entity_transformations (Dict(ndarray(float64))) – The DOF transformations for each entity.
entity_dofs (Dict(ndarray(int32))) – The number of DOFs on each entity.
data (np.array) – The data. This will be changed by this function.
cell_info (int) – An integer representing the orientations of the subentities of the cell.