|
template<int num_cells> |
std::array< std::int32_t, 2 *num_cells > | get_cell_facet_pairs (std::int32_t f, const std::span< const std::int32_t > &cells, const graph::AdjacencyList< std::int32_t > &c_to_f) |
| Helper function to get an array of of (cell, local_facet) pairs corresponding to a given facet index.
|
|
std::vector< std::pair< int, std::vector< std::int32_t > > > | compute_integration_domains (IntegralType integral_type, const mesh::Topology &topology, std::span< const std::int32_t > entities, int dim, std::span< const int > values) |
| Given an integral type and mesh tag data, compute the entities that should be integrated over.
|
|
template<dolfinx::scalar T, std::floating_point U> |
std::vector< std::vector< std::array< std::shared_ptr< const FunctionSpace< U > >, 2 > > > | extract_function_spaces (const std::vector< std::vector< const Form< T, U > * > > &a) |
| Extract test (0) and trial (1) function spaces pairs for each bilinear form for a rectangular array of forms.
|
|
template<dolfinx::scalar T, std::floating_point U> |
la::SparsityPattern | create_sparsity_pattern (const Form< T, U > &a) |
| Create a sparsity pattern for a given form.
|
|
ElementDofLayout | create_element_dof_layout (const ufcx_dofmap &dofmap, const mesh::CellType cell_type, const std::vector< int > &parent_map={}) |
| Create an ElementDofLayout from a ufcx_dofmap.
|
|
DofMap | create_dofmap (MPI_Comm comm, const ElementDofLayout &layout, mesh::Topology &topology, std::function< void(const std::span< std::int32_t > &, std::uint32_t)> unpermute_dofs, std::function< std::vector< int >(const graph::AdjacencyList< std::int32_t > &)> reorder_fn) |
| Create a dof map on mesh.
|
|
std::vector< std::string > | get_coefficient_names (const ufcx_form &ufcx_form) |
| Get the name of each coefficient in a UFC form.
|
|
std::vector< std::string > | get_constant_names (const ufcx_form &ufcx_form) |
| Get the name of each constant in a UFC form.
|
|
template<dolfinx::scalar T, typename U = dolfinx::scalar_value_type_t<T>> |
Form< T, U > | create_form (const ufcx_form &ufcx_form, const std::vector< std::shared_ptr< const FunctionSpace< U > > > &spaces, const std::vector< std::shared_ptr< const Function< T, U > > > &coefficients, const std::vector< std::shared_ptr< const Constant< T > > > &constants, const std::map< IntegralType, std::vector< std::pair< std::int32_t, std::vector< std::int32_t > > > > &subdomains, std::shared_ptr< const mesh::Mesh< U > > mesh=nullptr) |
| Create a Form from UFC input.
|
|
template<dolfinx::scalar T, typename U = dolfinx::scalar_value_type_t<T>> |
Form< T, U > | create_form (const ufcx_form &ufcx_form, const std::vector< std::shared_ptr< const FunctionSpace< U > > > &spaces, const std::map< std::string, std::shared_ptr< const Function< T, U > > > &coefficients, const std::map< std::string, std::shared_ptr< const Constant< T > > > &constants, const std::map< IntegralType, std::vector< std::pair< std::int32_t, std::vector< std::int32_t > > > > &subdomains, std::shared_ptr< const mesh::Mesh< U > > mesh=nullptr) |
| Create a Form from UFC input.
|
|
template<dolfinx::scalar T, typename U = dolfinx::scalar_value_type_t<T>> |
Form< T, U > | create_form (ufcx_form *(*fptr)(), const std::vector< std::shared_ptr< const FunctionSpace< U > > > &spaces, const std::map< std::string, std::shared_ptr< const Function< T, U > > > &coefficients, const std::map< std::string, std::shared_ptr< const Constant< T > > > &constants, const std::map< IntegralType, std::vector< std::pair< std::int32_t, std::vector< std::int32_t > > > > &subdomains, std::shared_ptr< const mesh::Mesh< U > > mesh=nullptr) |
| Create a Form using a factory function that returns a pointer to a ufcx_form.
|
|
template<std::floating_point T> |
FunctionSpace< T > | create_functionspace (std::shared_ptr< mesh::Mesh< T > > mesh, const basix::FiniteElement< T > &e, const std::vector< std::size_t > &value_shape={}, std::function< std::vector< int >(const graph::AdjacencyList< std::int32_t > &)> reorder_fn=nullptr) |
| Create a function space from a Basix element.
|
|
template<std::floating_point T> |
FunctionSpace< T > | create_functionspace (ufcx_function_space *(*fptr)(const char *), const std::string &function_name, std::shared_ptr< mesh::Mesh< T > > mesh, std::function< std::vector< int >(const graph::AdjacencyList< std::int32_t > &)> reorder_fn=nullptr) |
| Create a FunctionSpace from UFC data.
|
|
template<dolfinx::scalar T, int _bs> |
void | pack (std::span< T > coeffs, std::int32_t cell, int bs, std::span< const T > v, std::span< const std::uint32_t > cell_info, const DofMap &dofmap, auto transform) |
| Pack a single coefficient for a single cell.
|
|
template<dolfinx::scalar T, std::floating_point U> |
void | pack_coefficient_entity (std::span< T > c, int cstride, const Function< T, U > &u, std::span< const std::uint32_t > cell_info, std::span< const std::int32_t > entities, std::size_t estride, FetchCells auto &&fetch_cells, std::int32_t offset) |
| Pack a single coefficient for a set of active entities.
|
|
template<dolfinx::scalar T, std::floating_point U> |
std::pair< std::vector< T >, int > | allocate_coefficient_storage (const Form< T, U > &form, IntegralType integral_type, int id) |
| Allocate storage for coefficients of a pair (integral_type, id) from a Form.
|
|
template<dolfinx::scalar T, std::floating_point U> |
std::map< std::pair< IntegralType, int >, std::pair< std::vector< T >, int > > | allocate_coefficient_storage (const Form< T, U > &form) |
| Allocate memory for packed coefficients of a Form.
|
|
template<dolfinx::scalar T, std::floating_point U> |
void | pack_coefficients (const Form< T, U > &form, IntegralType integral_type, int id, std::span< T > c, int cstride) |
| Pack coefficients of a Form for a given integral type and domain id.
|
|
template<dolfinx::scalar T, typename U = dolfinx::scalar_value_type_t<T>> |
Expression< T, U > | create_expression (const ufcx_expression &e, const std::vector< std::shared_ptr< const Function< T, U > > > &coefficients, const std::vector< std::shared_ptr< const Constant< T > > > &constants, std::shared_ptr< const FunctionSpace< U > > argument_function_space=nullptr) |
| Create Expression from UFC.
|
|
template<dolfinx::scalar T, typename U = dolfinx::scalar_value_type_t<T>> |
Expression< T, U > | create_expression (const ufcx_expression &e, const std::map< std::string, std::shared_ptr< const Function< T, U > > > &coefficients, const std::map< std::string, std::shared_ptr< const Constant< T > > > &constants, std::shared_ptr< const FunctionSpace< U > > argument_function_space=nullptr) |
| Create Expression from UFC input (with named coefficients and constants).
|
|
template<dolfinx::scalar T, std::floating_point U> |
void | pack_coefficients (const Form< T, U > &form, std::map< std::pair< IntegralType, int >, std::pair< std::vector< T >, int > > &coeffs) |
| Pack coefficients of a Form.
|
|
template<dolfinx::scalar T, std::floating_point U> |
std::pair< std::vector< T >, int > | pack_coefficients (const Expression< T, U > &e, std::span< const std::int32_t > cells) |
| Pack coefficients of a Expression u for a give list of active cells.
|
|
template<typename U > |
std::vector< typename U::scalar_type > | pack_constants (const U &u) |
| Pack constants of u of generic type U ready for assembly.
|
|
Functions supporting finite element method operations.