Reference documentation for deal.II version 9.2.0
|
#include <deal.II/base/function.h>
Public Member Functions | |
FunctionFromFunctionObjects (const unsigned int n_components=1, const double initial_time=0) | |
FunctionFromFunctionObjects (const std::vector< std::function< RangeNumberType(const Point< dim > &)>> &values, const double initial_time=0.0) | |
FunctionFromFunctionObjects (const std::vector< std::function< RangeNumberType(const Point< dim > &)>> &values, const std::vector< std::function< Tensor< 1, dim, RangeNumberType >(const Point< dim > &)>> &gradients, const double initial_time=0.0) | |
virtual RangeNumberType | value (const Point< dim > &p, const unsigned int component=0) const override |
virtual Tensor< 1, dim, RangeNumberType > | gradient (const Point< dim > &p, const unsigned int component=0) const override |
void | set_function_values (const std::vector< std::function< RangeNumberType(const Point< dim > &)>> &values) |
void | set_function_gradients (const std::vector< std::function< Tensor< 1, dim, RangeNumberType >(const Point< dim > &)>> &gradients) |
Public Member Functions inherited from Function< dim, double > | |
Function (const unsigned int n_components=1, const time_type initial_time=0.0) | |
Function (const Function &f)=default | |
virtual | ~Function () override=0 |
Function & | operator= (const Function &f) |
virtual void | vector_value (const Point< dim > &p, Vector< double > &values) const |
virtual void | value_list (const std::vector< Point< dim >> &points, std::vector< double > &values, const unsigned int component=0) const |
virtual void | vector_value_list (const std::vector< Point< dim >> &points, std::vector< Vector< double >> &values) const |
virtual void | vector_values (const std::vector< Point< dim >> &points, std::vector< std::vector< double >> &values) const |
virtual void | vector_gradient (const Point< dim > &p, std::vector< Tensor< 1, dim, double >> &gradients) const |
virtual void | gradient_list (const std::vector< Point< dim >> &points, std::vector< Tensor< 1, dim, double >> &gradients, const unsigned int component=0) const |
virtual void | vector_gradients (const std::vector< Point< dim >> &points, std::vector< std::vector< Tensor< 1, dim, double >>> &gradients) const |
virtual void | vector_gradient_list (const std::vector< Point< dim >> &points, std::vector< std::vector< Tensor< 1, dim, double >>> &gradients) const |
virtual double | laplacian (const Point< dim > &p, const unsigned int component=0) const |
virtual void | vector_laplacian (const Point< dim > &p, Vector< double > &values) const |
virtual void | laplacian_list (const std::vector< Point< dim >> &points, std::vector< double > &values, const unsigned int component=0) const |
virtual void | vector_laplacian_list (const std::vector< Point< dim >> &points, std::vector< Vector< double >> &values) const |
virtual SymmetricTensor< 2, dim, double > | hessian (const Point< dim > &p, const unsigned int component=0) const |
virtual void | vector_hessian (const Point< dim > &p, std::vector< SymmetricTensor< 2, dim, double >> &values) const |
virtual void | hessian_list (const std::vector< Point< dim >> &points, std::vector< SymmetricTensor< 2, dim, double >> &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, double >>> &values) const |
std::size_t | memory_consumption () const |
Public Member Functions inherited from FunctionTime< numbers::NumberTraits< double >::real_type > | |
FunctionTime (const numbers::NumberTraits< double >::real_type initial_time=numbers::NumberTraits< double >::real_type(0.0)) | |
virtual | ~FunctionTime ()=default |
numbers::NumberTraits< double >::real_type | get_time () const |
virtual void | set_time (const numbers::NumberTraits< double >::real_type new_time) |
virtual void | advance_time (const numbers::NumberTraits< double >::real_type delta_t) |
Public Member Functions inherited from Subscriptor | |
Subscriptor () | |
Subscriptor (const Subscriptor &) | |
Subscriptor (Subscriptor &&) noexcept | |
virtual | ~Subscriptor () |
Subscriptor & | operator= (const Subscriptor &) |
Subscriptor & | operator= (Subscriptor &&) noexcept |
void | subscribe (std::atomic< bool > *const validity, const std::string &identifier="") const |
void | unsubscribe (std::atomic< bool > *const validity, const std::string &identifier="") 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 | |
std::vector< std::function< RangeNumberType(const Point< dim > &)> > | function_values |
std::vector< std::function< Tensor< 1, dim, RangeNumberType >const Point< dim > &)> > | function_gradients |
Additional Inherited Members | |
Public Types inherited from Function< dim, double > | |
using | time_type = typename FunctionTime< typename numbers::NumberTraits< double >::real_type >::time_type |
Public Types inherited from FunctionTime< numbers::NumberTraits< double >::real_type > | |
using | time_type = numbers::NumberTraits< double >::real_type |
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, double > | |
const unsigned int | n_components |
Static Public Attributes inherited from Function< dim, double > | |
static const unsigned int | dimension |
This class is similar to the ScalarFunctionFromFunctionObject and VectorFunctionFromFunctionObject classes in that it allows for the easy conversion of a vector of function objects to something that satisfies the interface of the Function base class.
The difference is that here the Function object generated may be vector valued, and you can specify the gradients of the function. The number of vector components is deduced from the size of the vector in the constructor.
To be more concrete, let us consider the following example:
Definition at line 885 of file function.h.
|
explicit |
Default constructor.
This constructor does not initialize the internal methods. To have a usable function, you need to call at least the set_function_values() method. If you need also the gradients of the solution, then you must also call the set_function_gradients() method.
FunctionFromFunctionObjects< dim, RangeNumberType >::FunctionFromFunctionObjects | ( | const std::vector< std::function< RangeNumberType(const Point< dim > &)> | , |
& | values, | ||
const double | initial_time = 0.0 |
||
) |
Constructor for functions of which you only know the values.
The resulting function will have a number of components equal to the size of the vector values
. A call to the FunctionFromFunctionObject::gradient() method will trigger an exception, unless you first call the set_function_gradients() method.
FunctionFromFunctionObjects< dim, RangeNumberType >::FunctionFromFunctionObjects | ( | const std::vector< std::function< RangeNumberType(const Point< dim > &)> | , |
& | values, | ||
const std::vector< std::function< Tensor< 1, dim, RangeNumberType >(const Point< dim > &)> | , | ||
& | gradients, | ||
const double | initial_time = 0.0 |
||
) |
Constructor for functions of which you know both the values and the gradients.
The resulting function will have a number of components equal to the size of the vector values
. If the size of values
and gradients
does not match, an exception is triggered.
|
overridevirtual |
Return the value of the function at the given point. Unless there is only one component (i.e. the function is scalar), you should state the component you want to have evaluated; it defaults to zero, i.e. the first component.
Reimplemented from Function< dim, double >.
|
overridevirtual |
Return the gradient of the function at the given point. Unless there is only one component (i.e. the function is scalar), you should state the component you want to have evaluated; it defaults to zero, i.e. the first component.
Reimplemented from Function< dim, double >.
void FunctionFromFunctionObjects< dim, RangeNumberType >::set_function_values | ( | const std::vector< std::function< RangeNumberType(const Point< dim > &)> | , |
& | values | ||
) |
Reset the function values of this object. An assertion is thrown if the size of the values
parameter does not match the number of components of this object.
void FunctionFromFunctionObjects< dim, RangeNumberType >::set_function_gradients | ( | const std::vector< std::function< Tensor< 1, dim, RangeNumberType >(const Point< dim > &)> | , |
& | gradients | ||
) |
Reset the function gradients of this object. An assertion is thrown if the size of the gradients
parameter does not match the number of components of this object.
|
private |
The actual function values.
Definition at line 974 of file function.h.
|
private |
The actual function gradients.
Definition at line 981 of file function.h.