.. Documentation for the header file dolfin/function/Function.h .. _programmers_reference_cpp_function_function: Function.h ========== .. note:: The documentation on this page was automatically extracted from the DOLFIN C++ code and may need to be edited or expanded. .. cpp:class:: Function *Parent class(es)* * :cpp:class:`GenericFunction` * :cpp:class:`Hierarchical` This class represents a function :math:`u_h` in a finite element function space :math:`V_h`, given by .. math:: u_h = \sum_{i=1}^{n} U_i \phi_i where :math:`\{\phi_i\}_{i=1}^{n}` is a basis for :math:`V_h`, and :math:`U` is a vector of expansion coefficients for :math:`u_h`. .. cpp:function:: explicit Function(std::shared_ptr V) Create function on given function space (shared data) *Arguments* V (:cpp:class:`FunctionSpace`) The function space. .. cpp:function:: Function(std::shared_ptr V, std::shared_ptr x) Create function on given function space with a given vector (shared data) *Warning: This constructor is intended for internal library use only* *Arguments* V (:cpp:class:`FunctionSpace`) The function space. x (:cpp:class:`GenericVector`) The vector. .. cpp:function:: Function(std::shared_ptr V, std::string filename) Create function from vector of dofs stored to file (shared data) *Arguments* V (:cpp:class:`FunctionSpace`) The function space. filename_dofdata (std::string) The name of the file containing the dofmap data. .. cpp:function:: Function(const Function& v) Copy constructor *Arguments* v (:cpp:class:`Function`) The object to be copied. .. cpp:function:: Function(const Function& v, std::size_t i) Sub-function constructor with shallow copy of vector (used in Python interface) *Arguments* v (:cpp:class:`Function`) The function to be copied. i (std::size_t) Index of subfunction. .. cpp:function:: const Function& operator= (const Function& v) Assignment from function *Arguments* v (:cpp:class:`Function`) Another function. .. cpp:function:: const Function& operator= (const Expression& v) Assignment from expression using interpolation *Arguments* v (:cpp:class:`Expression`) The expression. .. cpp:function:: void operator=(const FunctionAXPY& axpy) Assignment from linear combination of function *Arguments* v (:cpp:class:`FunctionAXPY`) A linear combination of other Functions .. cpp:function:: Function& operator[] (std::size_t i) const Extract subfunction *Arguments* i (std::size_t) Index of subfunction. *Returns* :cpp:class:`Function` The subfunction. .. cpp:function:: FunctionAXPY operator+(const Function& other) const Add operator with other function *Returns* :cpp:class:`FunctionAXPY` Return a linear combination of Functions .. cpp:function:: FunctionAXPY operator+(const FunctionAXPY& axpy) const Add operator with other linear combination of functions *Returns* :cpp:class:`FunctionAXPY` Return a linear combination of Functions .. cpp:function:: FunctionAXPY operator-(const Function& other) const Subtraction operator with other function *Returns* :cpp:class:`FunctionAXPY` Return a linear combination of Functions .. cpp:function:: FunctionAXPY operator-(const FunctionAXPY& axpy) const Subtraction operator with other linear combination of functions *Returns* :cpp:class:`FunctionAXPY` Return a linear combination of Functions .. cpp:function:: FunctionAXPY operator*(double scalar) const Scale operator *Returns* :cpp:class:`FunctionAXPY` Return a linear combination of Functions .. cpp:function:: FunctionAXPY operator/(double scalar) const Scale operator *Returns* :cpp:class:`FunctionAXPY` Return a linear combination of Functions .. cpp:function:: std::shared_ptr function_space() const Return shared pointer to function space *Returns* :cpp:class:`FunctionSpace` Return the shared pointer. .. cpp:function:: std::shared_ptr vector() Return vector of expansion coefficients (non-const version) *Returns* :cpp:class:`GenericVector` The vector of expansion coefficients. .. cpp:function:: std::shared_ptr vector() const Return vector of expansion coefficients (const version) *Returns* :cpp:class:`GenericVector` The vector of expansion coefficients (const). .. cpp:function:: bool in(const FunctionSpace& V) const Check if function is a member of the given function space *Arguments* V (:cpp:class:`FunctionSpace`) The function space. *Returns* bool True if the function is in the function space. .. cpp:function:: std::size_t geometric_dimension() const Return geometric dimension *Returns* std::size_t The geometric dimension. .. cpp:function:: void eval(Array& values, const Array& x) const Evaluate function at given coordinates *Arguments* values (:cpp:class:`Array` ) The values. x (:cpp:class:`Array` ) The coordinates. .. cpp:function:: void eval(Array& values, const Array& x, const Cell& dolfin_cell, const ufc::cell& ufc_cell) const Evaluate function at given coordinates in given cell *Arguments* values (:cpp:class:`Array` ) The values. x (:cpp:class:`Array` ) The coordinates. dolfin_cell (:cpp:class:`Cell`) The cell. ufc_cell (ufc::cell) The ufc::cell. .. cpp:function:: void interpolate(const GenericFunction& v) Interpolate function (on possibly non-matching meshes) *Arguments* v (:cpp:class:`GenericFunction`) The function to be interpolated. .. cpp:function:: void extrapolate(const Function& v) Extrapolate function (from a possibly lower-degree function space) *Arguments* v (:cpp:class:`Function`) The function to be extrapolated. .. cpp:function:: std::size_t value_rank() const Return value rank *Returns* std::size_t The value rank. .. cpp:function:: std::size_t value_dimension(std::size_t i) const Return value dimension for given axis *Arguments* i (std::size_t) The index of the axis. *Returns* std::size_t The value dimension. .. cpp:function:: void eval(Array& values, const Array& x, const ufc::cell& cell) const Evaluate at given point in given cell *Arguments* values (:cpp:class:`Array` ) The values at the point. x (:cpp:class:`Array` ) The coordinates of the point. cell (ufc::cell) The cell which contains the given point. .. cpp:function:: void restrict(double* w, const FiniteElement& element, const Cell& dolfin_cell, const double* coordinate_dofs, const ufc::cell& ufc_cell) const Restrict function to local cell (compute expansion coefficients w) *Arguments* w (list of doubles) Expansion coefficients. element (:cpp:class:`FiniteElement`) The element. dolfin_cell (:cpp:class:`Cell`) The cell. ufc_cell (ufc::cell). The ufc::cell. .. cpp:function:: void compute_vertex_values(std::vector& vertex_values, const Mesh& mesh) const Compute values at all mesh vertices *Arguments* vertex_values (:cpp:class:`Array` ) The values at all vertices. mesh (:cpp:class:`Mesh`) The mesh. .. cpp:function:: void compute_vertex_values(std::vector& vertex_values) Compute values at all mesh vertices *Arguments* vertex_values (:cpp:class:`Array` ) The values at all vertices. .. cpp:function:: void set_allow_extrapolation(bool allow_extrapolation) Allow extrapolation when evaluating the Function *Arguments* allow_extrapolation (bool) Whether or not permit extrapolation. .. cpp:function:: bool get_allow_extrapolation() const Check if extrapolation is permitted when evaluating the Function *Returns* bool True if extrapolation is permitted, otherwise false