16 #ifndef dealii_function_h 17 #define dealii_function_h 36 template <
typename number>
38 template <
int rank,
int dim,
typename Number>
149 template <
int dim,
typename RangeNumberType =
double>
151 typename numbers::NumberTraits<RangeNumberType>::real_type>,
177 explicit Function(
const unsigned int n_components = 1,
223 virtual RangeNumberType
247 std::vector<RangeNumberType> &
values,
248 const unsigned int component = 0)
const;
274 std::vector<std::vector<RangeNumberType>> &
values)
const;
300 const unsigned int component = 0)
const;
332 virtual RangeNumberType
347 std::vector<RangeNumberType> &
values,
348 const unsigned int component = 0)
const;
379 const unsigned int component = 0)
const;
409 template <
int dim,
typename RangeNumberType =
double>
441 virtual RangeNumberType
442 value(
const Point<dim> &p,
const unsigned int component = 0)
const override;
450 std::vector<RangeNumberType> & return_values,
451 const unsigned int component = 0)
const override;
460 const unsigned int component = 0)
const override;
470 const unsigned int component = 0)
const override;
480 const unsigned int component = 0)
const override;
482 virtual RangeNumberType
484 const unsigned int component = 0)
const override;
509 template <
int dim,
typename RangeNumberType =
double>
529 template <
int dim,
typename RangeNumberType =
double>
541 virtual RangeNumberType
542 value(
const Point<dim> &p,
const unsigned int component = 0)
const override;
549 const unsigned int component = 0)
const override;
554 virtual RangeNumberType
556 const unsigned int component = 0)
const override;
563 const unsigned int component = 0)
const override;
582 template <
int dim,
typename RangeNumberType =
double>
593 const RangeNumberType
value,
601 const unsigned int n_components);
611 const unsigned int n_components);
628 substitute_function_value_with(
747 template <
int dim,
typename RangeNumberType =
double>
757 const std::function<RangeNumberType(
const Point<dim> &)> &function_object);
763 virtual RangeNumberType
764 value(
const Point<dim> &p,
const unsigned int component = 0)
const override;
771 const std::function<RangeNumberType(const Point<dim> &)> function_object;
814 template <
int dim,
typename RangeNumberType =
double>
816 :
public Function<dim, RangeNumberType>
832 const std::function<RangeNumberType(
const Point<dim> &)> &function_object,
833 const unsigned int selected_component,
840 virtual RangeNumberType
841 value(
const Point<dim> &p,
const unsigned int component = 0)
const override;
857 const std::function<RangeNumberType(const Point<dim> &)> function_object;
902 template <
int dim,
typename RangeNumberType =
double>
915 const double initial_time = 0);
926 const std::vector<std::function<RangeNumberType(
const Point<dim> &)>>
928 const double initial_time = 0.0);
939 const std::vector<std::function<RangeNumberType(
const Point<dim> &)>>
944 const double initial_time = 0.0);
953 virtual RangeNumberType
954 value(
const Point<dim> &p,
const unsigned int component = 0)
const override;
964 const unsigned int component = 0)
const override;
973 const std::vector<std::function<RangeNumberType(
const Point<dim> &)>>
982 set_function_gradients(
991 std::vector<std::function<RangeNumberType(const Point<dim> &)>>
998 std::function<Tensor<1, dim, RangeNumberType>(
const Point<dim> &)>>
1038 template <
int dim,
typename RangeNumberType =
double>
1060 const unsigned int selected_component = 0,
1072 virtual RangeNumberType
1073 value(
const Point<dim> &p,
const unsigned int component = 0)
const override;
1119 template <
int dim,
typename RangeNumberType>
Function(const unsigned int n_components=1, const time_type initial_time=0.0)
const unsigned int n_components
virtual void vector_hessian_list(const std::vector< Point< dim >> &points, std::vector< std::vector< SymmetricTensor< 2, dim, RangeNumberType >>> &values) const
virtual void vector_gradient_list(const std::vector< Point< dim >> &points, std::vector< std::vector< Tensor< 1, dim, RangeNumberType >>> &gradients) const
static const unsigned int dimension
virtual void vector_laplacian(const Point< dim > &p, Vector< RangeNumberType > &values) const
virtual void vector_hessian(const Point< dim > &p, std::vector< SymmetricTensor< 2, dim, RangeNumberType >> &values) const
virtual void vector_gradients(const std::vector< Point< dim >> &points, std::vector< std::vector< Tensor< 1, dim, RangeNumberType >>> &gradients) const
Function & operator=(const Function &f)
typename FunctionTime< typename numbers::NumberTraits< RangeNumberType >::real_type >::time_type time_type
virtual void vector_value_list(const std::vector< Point< dim >> &points, std::vector< Vector< RangeNumberType >> &values) const
virtual void vector_values(const std::vector< Point< dim >> &points, std::vector< std::vector< RangeNumberType >> &values) const
virtual SymmetricTensor< 2, dim, RangeNumberType > hessian(const Point< dim > &p, const unsigned int component=0) const
virtual std::size_t memory_consumption() const
#define DEAL_II_NAMESPACE_CLOSE
virtual void vector_value(const Point< dim > &p, Vector< RangeNumberType > &values) const
Point< spacedim > point(const gp_Pnt &p, const double tolerance=1e-10)
virtual void hessian_list(const std::vector< Point< dim >> &points, std::vector< SymmetricTensor< 2, dim, RangeNumberType >> &values, const unsigned int component=0) const
const TensorFunction< 1, dim, RangeNumberType > & tensor_function
virtual void vector_laplacian_list(const std::vector< Point< dim >> &points, std::vector< Vector< RangeNumberType >> &values) const
virtual Tensor< 1, dim, RangeNumberType > gradient(const Point< dim > &p, const unsigned int component=0) const
const std::pair< unsigned int, unsigned int > selected_components
virtual RangeNumberType laplacian(const Point< dim > &p, const unsigned int component=0) const
#define DEAL_II_NAMESPACE_OPEN
virtual void value_list(const std::vector< Point< dim >> &points, std::vector< RangeNumberType > &values, const unsigned int component=0) const
virtual ~Function() override=0
const unsigned int selected_component
const unsigned int selected_component
virtual RangeNumberType value(const Point< dim > &p, const unsigned int component=0) 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_gradient(const Point< dim > &p, std::vector< Tensor< 1, dim, RangeNumberType >> &gradients) const
std::vector< RangeNumberType > function_value_vector
virtual void laplacian_list(const std::vector< Point< dim >> &points, std::vector< RangeNumberType > &values, const unsigned int component=0) const