DOLFINx 0.10.0.0
DOLFINx C++ interface
Loading...
Searching...
No Matches
pack.h File Reference

Functions supporting the packing of coefficient data. More...

#include "Constant.h"
#include "DofMap.h"
#include "FiniteElement.h"
#include "Form.h"
#include "Function.h"
#include "FunctionSpace.h"
#include "traits.h"
#include <array>
#include <basix/mdspan.hpp>
#include <concepts>
#include <dolfinx/mesh/Topology.h>
#include <span>
#include <stdexcept>
#include <type_traits>
#include <vector>
Include dependency graph for pack.h:
This graph shows which files directly or indirectly include this file:

Go to the source code of this file.

Namespaces

namespace  dolfinx
 Top-level namespace.
 
namespace  dolfinx::fem
 Finite element method functionality.
 

Functions

template<int _bs, dolfinx::scalar T>
void pack_impl (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, auto 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, 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>
void pack_coefficients (std::vector< std::reference_wrapper< const Function< T, U > > > coeffs, std::span< const int > offsets, fem::MDSpan2 auto entities, std::span< T > c)
 Pack coefficient data over a list of cells or facets.
 
template<typename T>
std::vector< T > pack_constants (std::vector< std::reference_wrapper< const fem::Constant< T > > > c)
 Pack constants of an Expression or Form into a single array ready for assembly.
 
template<typename U>
requires std::convertible_to< U, fem::Expression<typename std::decay_t<U>::scalar_type, typename std::decay_t<U>::geometry_type>> or std::convertible_to< U, fem::Form<typename std::decay_t<U>::scalar_type, typename std::decay_t<U>::geometry_type>>
std::vector< typename U::scalar_type > pack_constants (const U &u)
 Pack constants of an Expression or Form into a single array ready for assembly.
 

Detailed Description

Functions supporting the packing of coefficient data.

Function Documentation

◆ pack_coefficient_entity()

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,
auto cells,
std::int32_t offset )

Pack a single coefficient for a set of active entities.

Parameters
[out]cCoefficient to be packed.
[in]cstrideTotal number of coefficient values to pack for each entity.
[in]uFunction to extract coefficient data from.
[in]cell_infoArray of bytes describing which transformation has to be applied on the cell to map it to the reference element.
[in]cellsSet of active cells.
[in]offsetThe offset for c.