Inherits Function< dim, RangeNumberType >.
template<int dim, typename RangeNumberType = double>
class aspect::VectorFunctionFromTensorFunctionObject< dim, RangeNumberType >
This class is built as a means of translating the Tensor<1,dim, RangeNumberType>
values produced by function objects that for a given point return a tensor, and returning them as a multiple component version of the same thing as a Vector for use in, for example, the VectorTools::interpolate or the many other functions taking Function objects. It allows the user to place the desired components into an n_components
long vector starting at the selected_component
location in that vector and have all other components be 0.
For example: Say you created a function object that returns the gravity (here, a radially inward pointing vector of magnitude 9.81):
const auto gravity
= [](const Point<dim> &p) -> Tensor<1,dim> { return -9.81 * (p /
p.norm()); }
and you want to interpolate this onto your mesh using the VectorTools::interpolate function, with a finite element for the DoFHandler object has 3 copies of a finite element with dim
components, for a total of 3*dim components. To interpolate onto that DoFHandler, you need an object of type Function that has 3*dim vector components. Creating such an object from the existing gravity
object is done using this piece of code:
VectorFunctionFromTensorFunctionObject<dim, RangeNumberType>
gravity_vector_function(gravity, 0, 3*dim);
where the dim
components of the gravity
function are placed into the first dim
components of the function object.
Definition at line 265 of file compat.h.
template<int dim, typename RangeNumberType>
Given a function object that takes a Point
and returns a Tensor<1,dim, RangeNumberType>
value, convert this into an object that matches the Function<dim> interface.
By default, create a Vector object of the same size as tensor_function
returns, i.e., with dim
components.
- Parameters
-
tensor_function_object | The TensorFunction that will form dim components of the resulting Vector Function object. |
n_components | The total number of vector components of the resulting TensorFunction object. This clearly has to be at least dim . |
selected_component | The first component that should be filled by the first argument. This should be such that the entire tensor_function fits inside the n_component length return vector. |
Definition at line 344 of file compat.h.
template<int dim, typename RangeNumberType>
Return all components of a vector-valued function at a list of points.
value_list
shall be the same size as points
and each element of the vector will be passed to vector_value() to evaluate the function
Member function vector_value_list
is the interface for giving a list of points (vector<Point<dim>>
) of which to evaluate using the vector_value
member function. Again, this function is written so as to not replicate the function definition but passes each point on to vector_value
to be evaluated.
Definition at line 420 of file compat.h.