24 #ifndef DOPE_FUNCTION_H_
25 #define DOPE_FUNCTION_H_
27 #include <deal.II/base/exceptions.h>
28 #include <deal.II/base/function.h>
29 #include <deal.II/lac/vector.h>
48 const double initial_time = 0.0)
49 : dealii::
Function<dim>(n_components, initial_time)
51 init_time_ = initial_time;
57 dealii::Vector<double> &return_value)
const
59 Assert(return_value.size() == this->n_components,
60 dealii::ExcDimensionMismatch(return_value.size(), this->n_components));
61 for (
unsigned int comp = 0; comp < this->n_components; comp++)
63 return_value(comp) = this->value(p, comp);
117 const unsigned int )
const
124 dealii::Vector<double> &return_value)
const
126 Assert(return_value.size() == this->n_components,
127 ExcDimensionMismatch (return_value.size(), this->n_components));
129 std::fill(return_value.begin(), return_value.end(), 0.0);
134 std::vector<double> &values,
135 const unsigned int = 0)
const
140 std::fill(values.begin(), values.end(), 0.);
145 std::vector<dealii::Vector<double> > &values)
const
147 Assert(values.size() == points.size(),
148 ExcDimensionMismatch(values.size(), points.size()));
150 for (
unsigned int i = 0; i < points.size(); ++i)
152 Assert(values[i].size() == this->n_components,
153 ExcDimensionMismatch(values[i].size(), this->n_components));
154 std::fill(values[i].begin(), values[i].end(), 0.);
158 virtual dealii::Tensor<1, dim>
160 const unsigned int = 0)
const
162 return dealii::Tensor<1, dim>();
167 std::vector<dealii::Tensor<1, dim> > &gradients)
const
169 Assert(gradients.size() == this->n_components,
170 ExcDimensionMismatch(gradients.size(), this->n_components));
172 for (
unsigned int c = 0; c < this->n_components; ++c)
173 gradients[c].clear();
178 std::vector<dealii::Tensor<1, dim> > &gradients,
179 const unsigned int = 0)
const
181 Assert(gradients.size() == points.size(),
182 ExcDimensionMismatch(gradients.size(), points.size()));
184 for (
unsigned int i = 0; i < points.size(); ++i)
185 gradients[i].clear();
190 std::vector<std::vector<dealii::Tensor<1, dim> > > &gradients)
const
192 Assert(gradients.size() == points.size(),
193 ExcDimensionMismatch(gradients.size(), points.size()));
194 for (
unsigned int i = 0; i < points.size(); ++i)
196 Assert(gradients[i].size() == this->n_components,
197 ExcDimensionMismatch(gradients[i].size(), this->n_components));
198 for (
unsigned int c = 0; c < this->n_components; ++c)
199 gradients[i][c].clear();
217 const unsigned int n_components = 1)
218 :
ZeroFunction<dim>(n_components), function_value_(value)
231 const unsigned int )
const
233 return function_value_;
238 dealii::Vector<double> &return_value)
const
240 Assert(return_value.size() == this->n_components,
241 ExcDimensionMismatch (return_value.size(), this->n_components));
243 std::fill(return_value.begin(), return_value.end(), function_value_);
248 std::vector<double> &values,
249 const unsigned int = 0)
const
254 std::fill(values.begin(), values.end(), function_value_);
259 std::vector<dealii::Vector<double> > &values)
const
261 Assert(values.size() == points.size(),
262 ExcDimensionMismatch(values.size(), points.size()));
264 for (
unsigned int i = 0; i < points.size(); ++i)
266 Assert(values[i].size() == this->n_components,
267 ExcDimensionMismatch(values[i].size(), this->n_components));
268 std::fill(values[i].begin(), values[i].end(), function_value_);
273 const double function_value_;
virtual void vector_value(const dealii::Point< dim > &, dealii::Vector< double > &return_value) const
Definition: function_wrapper.h:123
virtual void value_list(const std::vector< dealii::Point< dim > > &, std::vector< double > &values, const unsigned int=0) const
Definition: function_wrapper.h:133
virtual void vector_gradient_list(const std::vector< dealii::Point< dim > > &points, std::vector< std::vector< dealii::Tensor< 1, dim > > > &gradients) const
Definition: function_wrapper.h:189
virtual void SetTime(double) const
Definition: function_wrapper.h:74
double InitialTime() const
Definition: function_wrapper.h:83
virtual void value_list(const std::vector< dealii::Point< dim > > &, std::vector< double > &values, const unsigned int=0) const
Definition: function_wrapper.h:247
ZeroFunction(const unsigned int n_components=1)
Definition: function_wrapper.h:105
virtual void vector_value_list(const std::vector< dealii::Point< dim > > &points, std::vector< dealii::Vector< double > > &values) const
Definition: function_wrapper.h:258
ConstantFunction(const double value, const unsigned int n_components=1)
Definition: function_wrapper.h:216
virtual void gradient_list(const std::vector< dealii::Point< dim > > &points, std::vector< dealii::Tensor< 1, dim > > &gradients, const unsigned int=0) const
Definition: function_wrapper.h:177
virtual dealii::Tensor< 1, dim > gradient(const dealii::Point< dim > &, const unsigned int=0) const
Definition: function_wrapper.h:159
virtual double value(const dealii::Point< dim > &, const unsigned int) const
Definition: function_wrapper.h:230
virtual ~ConstantFunction()
Definition: function_wrapper.h:224
virtual double value(const dealii::Point< dim > &, const unsigned int) const
Definition: function_wrapper.h:116
Definition: function_wrapper.h:101
virtual void vector_value(const dealii::Point< dim > &, dealii::Vector< double > &return_value) const
Definition: function_wrapper.h:237
virtual void vector_value_list(const std::vector< dealii::Point< dim > > &points, std::vector< dealii::Vector< double > > &values) const
Definition: function_wrapper.h:144
Definition: function_wrapper.h:213
void vector_value(const dealii::Point< dim > &p, dealii::Vector< double > &return_value) const
Definition: function_wrapper.h:56
Function(const unsigned int n_components=1, const double initial_time=0.0)
Definition: function_wrapper.h:47
virtual ~ZeroFunction()
Definition: function_wrapper.h:111
Definition: function_wrapper.h:44
virtual void vector_gradient(const dealii::Point< dim > &, std::vector< dealii::Tensor< 1, dim > > &gradients) const
Definition: function_wrapper.h:166