9 #include <dolfinx/common/array2d.h>
10 #include <dolfinx/fem/evaluate.h>
54 const std::function<
void(T*,
const T*,
const T*,
const double*)> fn,
69 const std::vector<std::shared_ptr<const fem::Function<T>>>&
80 std::vector<int> n{0};
81 for (
const auto& c : _coefficients)
84 throw std::runtime_error(
"Not all form coefficients have been set.");
85 n.push_back(n.back() + c->function_space()->element()->space_dimension());
95 void eval(
const tcb::span<const std::int32_t>& active_cells,
103 const std::function<void(T*,
const T*,
const T*,
const double*)>&
113 const std::vector<std::shared_ptr<const fem::Constant<T>>>&
constants()
const
120 std::shared_ptr<const mesh::Mesh>
mesh()
const {
return _mesh; }
139 std::vector<std::shared_ptr<const fem::Function<T>>> _coefficients;
142 std::vector<std::shared_ptr<const fem::Constant<T>>> _constants;
145 std::function<void(T*,
const T*,
const T*,
const double*)> _fn;
151 std::shared_ptr<const mesh::Mesh> _mesh;
154 std::size_t _value_size;
This class provides a dynamic 2-dimensional row-wise array data structure.
Definition: array2d.h:21
A constant value which can be attached to a Form. Constants may be scalar (rank 0),...
Definition: Constant.h:19
Represents a mathematical expression evaluated at a pre-defined set of points on the reference cell....
Definition: Expression.h:39
const std::size_t value_size() const
Get value size.
Definition: Expression.h:128
Expression(const std::vector< std::shared_ptr< const fem::Function< T >>> &coefficients, const std::vector< std::shared_ptr< const fem::Constant< T >>> &constants, const std::shared_ptr< const mesh::Mesh > &mesh, const array2d< double > &X, const std::function< void(T *, const T *, const T *, const double *)> fn, const std::size_t value_size)
Create Expression.
Definition: Expression.h:50
const std::vector< std::shared_ptr< const fem::Constant< T > > > & constants() const
Access constants.
Definition: Expression.h:113
Expression(Expression &&form)=default
Move constructor.
const std::vector< std::shared_ptr< const fem::Function< T > > > & coefficients() const
Access coefficients.
Definition: Expression.h:70
std::shared_ptr< const mesh::Mesh > mesh() const
Get mesh.
Definition: Expression.h:120
const array2d< double > & x() const
Get evaluation points on reference cell.
Definition: Expression.h:124
std::vector< int > coefficient_offsets() const
Offset for each coefficient expansion array on a cell. Used to pack data for multiple coefficients in...
Definition: Expression.h:78
virtual ~Expression()=default
Destructor.
const std::size_t num_points() const
Get number of points.
Definition: Expression.h:132
const std::function< void(T *, const T *, const T *, const double *)> & get_tabulate_expression() const
Get function for tabulate_expression.
Definition: Expression.h:104
T scalar_type
Scalar type (T).
Definition: Expression.h:135
void eval(const tcb::span< const std::int32_t > &active_cells, array2d< T > &values) const
Evaluate the expression on cells.
Definition: Expression.h:95
This class represents a function in a finite element function space , given by.
Definition: Function.h:46
void eval(array2d< T > &values, const fem::Expression< T > &e, const tcb::span< const std::int32_t > &active_cells)
Evaluate a UFC expression.
Definition: evaluate.h:28