30#include <boost/ptr_container/ptr_map.hpp>
33#include <dolfin/common/types.h>
34#include <dolfin/common/Hierarchical.h>
35#include "GenericFunction.h"
36#include "FunctionAXPY.h"
53 template<
typename T>
class Array;
76 explicit Function(std::shared_ptr<const FunctionSpace> V);
88 Function(std::shared_ptr<const FunctionSpace> V,
89 std::shared_ptr<GenericVector> x);
98 Function(std::shared_ptr<const FunctionSpace> V,
99 std::string filename);
106 Function(
const Function& v);
117 Function(
const Function& v, std::size_t i);
127 const Function&
operator= (
const Function& v);
160 dolfin_assert(_function_space);
161 return _function_space;
169 std::shared_ptr<GenericVector>
vector();
176 std::shared_ptr<const GenericVector>
vector()
const;
216 const Cell& dolfin_cell,
const ufc::cell& ufc_cell)
const;
224 void eval(Eigen::Ref<Eigen::VectorXd> values,
225 Eigen::Ref<const Eigen::VectorXd> x)
const override;
238 void eval(Eigen::Ref<Eigen::VectorXd> values,
239 Eigen::Ref<const Eigen::VectorXd> x,
240 const dolfin::Cell& dolfin_cell,
const ufc::cell& ufc_cell)
const;
262 virtual std::size_t
value_rank()
const override;
280 virtual std::vector<std::size_t>
value_shape()
const override;
291 const ufc::cell& cell)
const override;
301 virtual void eval(Eigen::Ref<Eigen::VectorXd> values,
302 Eigen::Ref<const Eigen::VectorXd> x,
303 const ufc::cell& cell)
const override;
319 const Cell& dolfin_cell,
320 const double* coordinate_dofs,
321 const ufc::cell& ufc_cell)
const override;
330 const Mesh& mesh)
const override;
343 { _allow_extrapolation = allow_extrapolation; }
350 {
return _allow_extrapolation; }
359 mutable boost::ptr_map<std::size_t, Function> _sub_functions;
365 std::shared_ptr<const FunctionSpace> _function_space;
368 std::shared_ptr<GenericVector> _vector;
371 bool _allow_extrapolation;
A Cell is a MeshEntity of topological codimension 0.
Definition Cell.h:43
Definition Expression.h:50
This is a wrapper for a UFC finite element (ufc::finite_element).
Definition FiniteElement.h:36
Definition FunctionAXPY.h:36
Definition FunctionAssigner.h:41
Definition FunctionSpace.h:54
std::size_t geometric_dimension() const
Definition Function.cpp:274
virtual std::size_t value_dimension(std::size_t i) const override
Definition Function.cpp:404
void interpolate(const GenericFunction &v)
Definition Function.cpp:383
virtual void compute_vertex_values(std::vector< double > &vertex_values, const Mesh &mesh) const override
Definition Function.cpp:478
void eval(Array< double > &values, const Array< double > &x) const override
Definition Function.cpp:281
virtual ~Function()
Destructor.
Definition Function.cpp:129
virtual std::vector< std::size_t > value_shape() const override
Definition Function.cpp:411
virtual std::size_t value_rank() const override
Definition Function.cpp:397
void extrapolate(const Function &v)
Definition Function.cpp:392
void set_allow_extrapolation(bool allow_extrapolation)
Definition Function.h:342
virtual void restrict(double *w, const FiniteElement &element, const Cell &dolfin_cell, const double *coordinate_dofs, const ufc::cell &ufc_cell) const override
Definition Function.cpp:449
bool get_allow_extrapolation() const
Definition Function.h:349
std::shared_ptr< GenericVector > vector()
Definition Function.cpp:246
Function & operator[](std::size_t i) const
Definition Function.cpp:200
virtual std::shared_ptr< const FunctionSpace > function_space() const override
Definition Function.h:158
const Function & operator=(const Function &v)
Definition Function.cpp:134
bool in(const FunctionSpace &V) const
Definition Function.cpp:268
Definition GenericFunction.h:54
GenericFunction()
Constructor.
Definition GenericFunction.cpp:31
This class defines a common interface for vectors.
Definition GenericVector.h:48
Hierarchical(Function &self)
Definition Hierarchical.h:48
Definition SubDomain.h:43