Reference documentation for deal.II version 9.1.0-pre
Public Member Functions | Private Attributes | List of all members
VectorFunctionFromTensorFunction< dim, RangeNumberType > Class Template Reference

#include <deal.II/base/function.h>

Inheritance diagram for VectorFunctionFromTensorFunction< dim, RangeNumberType >:
[legend]

Public Member Functions

 VectorFunctionFromTensorFunction (const TensorFunction< 1, dim, RangeNumberType > &tensor_function, const unsigned int selected_component=0, const unsigned int n_components=dim)
 
virtual ~VectorFunctionFromTensorFunction () override=default
 
virtual RangeNumberType value (const Point< dim > &p, const unsigned int component=0) const override
 
virtual void vector_value (const Point< dim > &p, Vector< RangeNumberType > &values) const override
 
virtual void vector_value_list (const std::vector< Point< dim >> &points, std::vector< Vector< RangeNumberType >> &value_list) const override
 
- Public Member Functions inherited from Function< dim, RangeNumberType >
 Function (const unsigned int n_components=1, const RangeNumberType initial_time=0.0)
 
virtual ~Function () override=0
 
Functionoperator= (const Function &f)
 
virtual void value_list (const std::vector< Point< dim >> &points, std::vector< RangeNumberType > &values, const unsigned int component=0) const
 
virtual void vector_values (const std::vector< Point< dim >> &points, std::vector< std::vector< RangeNumberType >> &values) const
 
virtual Tensor< 1, dim, RangeNumberType > gradient (const Point< dim > &p, const unsigned int component=0) const
 
virtual void vector_gradient (const Point< dim > &p, std::vector< Tensor< 1, dim, RangeNumberType >> &gradients) const
 
virtual void gradient_list (const std::vector< Point< dim >> &points, std::vector< Tensor< 1, dim, RangeNumberType >> &gradients, const unsigned int component=0) const
 
virtual void vector_gradients (const std::vector< Point< dim >> &points, std::vector< std::vector< Tensor< 1, dim, RangeNumberType >>> &gradients) const
 
virtual void vector_gradient_list (const std::vector< Point< dim >> &points, std::vector< std::vector< Tensor< 1, dim, RangeNumberType >>> &gradients) const
 
virtual RangeNumberType laplacian (const Point< dim > &p, const unsigned int component=0) const
 
virtual void vector_laplacian (const Point< dim > &p, Vector< RangeNumberType > &values) const
 
virtual void laplacian_list (const std::vector< Point< dim >> &points, std::vector< RangeNumberType > &values, const unsigned int component=0) const
 
virtual void vector_laplacian_list (const std::vector< Point< dim >> &points, std::vector< Vector< RangeNumberType >> &values) const
 
virtual SymmetricTensor< 2, dim, RangeNumberType > hessian (const Point< dim > &p, const unsigned int component=0) const
 
virtual void vector_hessian (const Point< dim > &p, std::vector< SymmetricTensor< 2, dim, RangeNumberType >> &values) const
 
virtual void hessian_list (const std::vector< Point< dim >> &points, std::vector< SymmetricTensor< 2, dim, RangeNumberType >> &values, const unsigned int component=0) const
 
virtual void vector_hessian_list (const std::vector< Point< dim >> &points, std::vector< std::vector< SymmetricTensor< 2, dim, RangeNumberType >>> &values) const
 
std::size_t memory_consumption () const
 
- Public Member Functions inherited from FunctionTime< RangeNumberType >
 FunctionTime (const RangeNumberTypeinitial_time=RangeNumberType(0.0))
 
virtual ~FunctionTime ()=default
 
RangeNumberType get_time () const
 
virtual void set_time (const RangeNumberTypenew_time)
 
virtual void advance_time (const RangeNumberTypedelta_t)
 
- Public Member Functions inherited from Subscriptor
 Subscriptor ()
 
 Subscriptor (const Subscriptor &)
 
 Subscriptor (Subscriptor &&) noexcept
 
virtual ~Subscriptor ()
 
Subscriptoroperator= (const Subscriptor &)
 
Subscriptoroperator= (Subscriptor &&) noexcept
 
void subscribe (const char *identifier=nullptr) const
 
void unsubscribe (const char *identifier=nullptr) const
 
unsigned int n_subscriptions () const
 
template<typename StreamType >
void list_subscribers (StreamType &stream) const
 
void list_subscribers () const
 
template<class Archive >
void serialize (Archive &ar, const unsigned int version)
 

Private Attributes

const TensorFunction< 1, dim, RangeNumberType > & tensor_function
 
const unsigned int selected_component
 

Additional Inherited Members

- Static Public Member Functions inherited from Subscriptor
static::ExceptionBase & ExcInUse (int arg1, std::string arg2, std::string arg3)
 
static::ExceptionBase & ExcNoSubscriber (std::string arg1, std::string arg2)
 
- Public Attributes inherited from Function< dim, RangeNumberType >
const unsigned int n_components
 
- Static Public Attributes inherited from Function< dim, RangeNumberType >
static const unsigned int dimension = dim
 

Detailed Description

template<int dim, typename RangeNumberType = double>
class VectorFunctionFromTensorFunction< dim, RangeNumberType >

This class is built as a means of translating the Tensor<1,dim, RangeNumberType> values produced by objects of type TensorFunction 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 class called

class RightHandSide : public TensorFunction<rank,dim, RangeNumberType>

which extends the TensorFunction class and you have an object

RightHandSide<1,dim, RangeNumberType> rhs;

of that class which you want to interpolate onto your mesh using the VectorTools::interpolate function, but the finite element you use 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 rhs object is done using this piece of code:

RightHandSide<1,dim, RangeNumberType> rhs;
rhs, 0, 3*dim);

where the dim components of the tensor function are placed into the first dim components of the function object.

Author
Spencer Patty, 2013

Definition at line 856 of file function.h.

Constructor & Destructor Documentation

template<int dim, typename RangeNumberType = double>
VectorFunctionFromTensorFunction< dim, RangeNumberType >::VectorFunctionFromTensorFunction ( const TensorFunction< 1, dim, RangeNumberType > &  tensor_function,
const unsigned int  selected_component = 0,
const unsigned int  n_components = dim 
)

Given a TensorFunction 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_functionThe TensorFunction that will form one component of the resulting Vector Function object.
n_componentsThe total number of vector components of the resulting TensorFunction object.
selected_componentThe 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.
template<int dim, typename RangeNumberType = double>
virtual VectorFunctionFromTensorFunction< dim, RangeNumberType >::~VectorFunctionFromTensorFunction ( )
overridevirtualdefault

This destructor is defined as virtual so as to coincide with all other aspects of class.

Member Function Documentation

template<int dim, typename RangeNumberType = double>
virtual RangeNumberType VectorFunctionFromTensorFunction< dim, RangeNumberType >::value ( const Point< dim > &  p,
const unsigned int  component = 0 
) const
overridevirtual

Return a single component of a vector-valued function at a given point.

Reimplemented from Function< dim, RangeNumberType >.

template<int dim, typename RangeNumberType = double>
virtual void VectorFunctionFromTensorFunction< dim, RangeNumberType >::vector_value ( const Point< dim > &  p,
Vector< RangeNumberType > &  values 
) const
overridevirtual

Return all components of a vector-valued function at a given point.

values shall have the right size beforehand, i.e. n_components.

Reimplemented from Function< dim, RangeNumberType >.

template<int dim, typename RangeNumberType = double>
virtual void VectorFunctionFromTensorFunction< dim, RangeNumberType >::vector_value_list ( const std::vector< Point< dim >> &  points,
std::vector< Vector< RangeNumberType >> &  value_list 
) const
overridevirtual

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

Reimplemented from Function< dim, RangeNumberType >.

Member Data Documentation

template<int dim, typename RangeNumberType = double>
const TensorFunction<1, dim, RangeNumberType>& VectorFunctionFromTensorFunction< dim, RangeNumberType >::tensor_function
private

The TensorFunction object which we call when this class's vector_value() or vector_value_list() functions are called.

Definition at line 918 of file function.h.

template<int dim, typename RangeNumberType = double>
const unsigned int VectorFunctionFromTensorFunction< dim, RangeNumberType >::selected_component
private

The first vector component whose value is to be filled by the given TensorFunction. The values will be placed in components selected_component to selected_component+dim-1 for a TensorFunction<1,dim, RangeNumberType> object.

Definition at line 926 of file function.h.


The documentation for this class was generated from the following file: