16 #ifndef dealii_function_h 17 #define dealii_function_h 20 #include <deal.II/base/config.h> 22 #include <deal.II/base/exceptions.h> 23 #include <deal.II/base/function_time.h> 24 #include <deal.II/base/point.h> 25 #include <deal.II/base/subscriptor.h> 27 #include <deal.II/base/tensor.h> 32 DEAL_II_NAMESPACE_OPEN
35 template <
typename number>
37 template <
int rank,
int dim,
typename Number>
147 template <
int dim,
typename RangeNumberType =
double>
167 Function(
const unsigned int n_components = 1,
168 const RangeNumberType initial_time = 0.0);
208 virtual RangeNumberType
232 std::vector<RangeNumberType> & values,
233 const unsigned int component = 0)
const;
247 std::vector<Vector<RangeNumberType>> &values)
const;
259 std::vector<std::vector<RangeNumberType>> &values)
const;
285 const unsigned int component = 0)
const;
317 virtual RangeNumberType
332 std::vector<RangeNumberType> & values,
333 const unsigned int component = 0)
const;
340 std::vector<Vector<RangeNumberType>> &values)
const;
364 const unsigned int component = 0)
const;
395 template <
int dim,
typename RangeNumberType =
double>
427 virtual RangeNumberType
428 value(
const Point<dim> &p,
const unsigned int component = 0)
const override;
432 Vector<RangeNumberType> &return_value)
const override;
436 std::vector<RangeNumberType> & return_values,
437 const unsigned int component = 0)
const override;
442 std::vector<Vector<RangeNumberType>> &return_values)
const override;
446 const unsigned int component = 0)
const override;
456 const unsigned int component = 0)
const override;
488 template <
int dim,
typename RangeNumberType =
double>
506 template <
int dim,
typename RangeNumberType =
double>
515 template <
int dim,
typename RangeNumberType =
double>
535 template <
int dim,
typename RangeNumberType =
double>
545 const RangeNumberType
value,
553 const unsigned int n_components);
563 const unsigned int n_components);
580 substitute_function_value_with(
588 Vector<RangeNumberType> &return_value)
const override;
599 std::vector<Vector<RangeNumberType>> &values)
const override;
701 template <
int dim,
typename RangeNumberType =
double>
711 const std::function<RangeNumberType(
const Point<dim> &)> &function_object);
717 virtual RangeNumberType
718 value(
const Point<dim> &p,
const unsigned int component = 0)
const override;
725 const std::function<RangeNumberType(const Point<dim> &)> function_object;
767 template <
int dim,
typename RangeNumberType =
double>
769 :
public Function<dim, RangeNumberType>
785 const std::function<RangeNumberType(
const Point<dim> &)> &function_object,
786 const unsigned int selected_component,
793 virtual RangeNumberType
794 value(
const Point<dim> &p,
const unsigned int component = 0)
const override;
803 Vector<RangeNumberType> &values)
const override;
810 const std::function<RangeNumberType(const Point<dim> &)> function_object;
855 template <
int dim,
typename RangeNumberType =
double>
877 const unsigned int selected_component = 0,
889 virtual RangeNumberType
890 value(
const Point<dim> &p,
const unsigned int component = 0)
const override;
899 Vector<RangeNumberType> &values)
const override;
911 std::vector<Vector<RangeNumberType>> &
value_list)
const override;
936 template <
int dim,
typename RangeNumberType>
941 DEAL_II_NAMESPACE_CLOSE
const unsigned int n_components
static const unsigned int dimension
virtual Tensor< 1, dim, RangeNumberType > gradient(const Point< dim > &p, 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 void vector_laplacian_list(const std::vector< Point< dim >> &points, std::vector< Vector< RangeNumberType >> &values) const
virtual void vector_gradient(const Point< dim > &p, std::vector< Tensor< 1, dim, RangeNumberType >> &gradients) const
virtual void vector_laplacian(const Point< dim > &p, Vector< RangeNumberType > &values) const
Function & operator=(const Function &f)
virtual RangeNumberType value(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 gradient_list(const std::vector< Point< dim >> &points, std::vector< Tensor< 1, dim, RangeNumberType >> &gradients, const unsigned int component=0) const
virtual RangeNumberType laplacian(const Point< dim > &p, const unsigned int component=0) const
virtual SymmetricTensor< 2, dim, RangeNumberType > hessian(const Point< dim > &p, const unsigned int component=0) const
std::size_t memory_consumption() 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_value(const Point< dim > &p, Vector< RangeNumberType > &values) const
const TensorFunction< 1, dim, RangeNumberType > & tensor_function
const std::pair< unsigned int, unsigned int > selected_components
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
virtual void laplacian_list(const std::vector< Point< dim >> &points, std::vector< 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
const unsigned int selected_component
virtual void vector_values(const std::vector< Point< dim >> &points, std::vector< std::vector< RangeNumberType >> &values) const
virtual void vector_value_list(const std::vector< Point< dim >> &points, std::vector< Vector< RangeNumberType >> &values) const
std::vector< RangeNumberType > function_value_vector
Function(const unsigned int n_components=1, const RangeNumberType initial_time=0.0)