26#include <Kokkos_Macros.hpp>
44 const unsigned int select,
118 const unsigned int select,
135 for (
unsigned int i = 0; i < dim; ++i)
147 for (
unsigned int i = 0; i < dim; ++i)
157 const unsigned int component)
const
161 for (
unsigned int i = 0; i < dim; ++i)
171 const unsigned int component)
const
175 for (
unsigned int d = 0; d < dim; ++d)
177 ret[d] =
base[d]->gradient(
Point<1>(p[d]), component)[0];
178 for (
unsigned int i = 0; i < dim; ++i)
192 const double integral_Linfty[] = {2.0,
193 3.14159265358979323846264338328,
194 4.18879020478639098461685784437};
198 const double integral_W1[] = {1.0,
199 1.04719755119659774615421446109,
200 1.04719755119659774615421446109};
204 const double integral_Cinfty[] = {1.20690032243787617533623799633,
205 1.26811216112759608094632335664,
206 1.1990039070192139033798473858};
210 const double integral_C1[] = {1.0,
211 0.93417655442731527615578663815,
212 0.821155557658032806157358815206};
221 const unsigned int select,
228 integral_Linfty[dim - 1])
235 const unsigned int component)
const
239 return ((this->
center.distance(p) < this->radius) ? this->rescaling : 0.);
247 std::vector<double> &values,
248 const unsigned int component)
const
250 Assert(values.size() == points.size(),
257 for (
unsigned int k = 0; k < values.size(); ++k)
258 values[k] = (this->
center.distance(points[k]) < this->radius) ?
262 std::fill(values.begin(), values.end(), 0.);
272 Assert(values.size() == points.size(),
275 for (
unsigned int k = 0; k < values.size(); ++k)
277 const double val = (this->
center.distance(points[k]) < this->
radius) ?
294 const unsigned int select,
301 integral_W1[dim - 1])
308 const unsigned int component)
const
313 const double d = this->
center.distance(p);
314 return ((d < this->
radius) ?
315 (this->radius - d) / this->radius * this->
rescaling :
325 std::vector<double> &values,
326 const unsigned int component)
const
328 Assert(values.size() == points.size(),
333 for (
unsigned int i = 0; i < values.size(); ++i)
335 const double d = this->
center.distance(points[i]);
336 values[i] = ((d < this->
radius) ?
341 std::fill(values.begin(), values.end(), 0.);
352 Assert(values.size() == points.size(),
355 for (
unsigned int k = 0; k < values.size(); ++k)
357 const double d = this->
center.distance(points[k]);
378 const unsigned int select,
385 integral_Cinfty[dim - 1])
392 const unsigned int component)
const
397 const double d = this->
center.distance(p);
398 const double r = this->
radius;
401 const double e = -r * r / (r * r - d * d);
411 std::vector<double> &values,
412 const unsigned int component)
const
414 Assert(values.size() == points.size(),
417 const double r = this->
radius;
421 for (
unsigned int i = 0; i < values.size(); ++i)
423 const double d = this->
center.distance(points[i]);
430 const double e = -r * r / (r * r - d * d);
436 std::fill(values.begin(), values.end(), 0.);
446 Assert(values.size() == points.size(),
449 for (
unsigned int k = 0; k < values.size(); ++k)
451 const double d = this->
center.distance(points[k]);
452 const double r = this->
radius;
456 const double e = -r * r / (r * r - d * d);
476 const unsigned int)
const
478 const double d = this->
center.distance(p);
479 const double r = this->
radius;
482 const double e = -d * d / (r - d) / (r + d);
497 const unsigned int select,
504 integral_C1[dim - 1])
511 const unsigned int component)
const
516 const double d = this->
center.distance(p);
517 const double r = this->
radius;
529 std::vector<double> &values,
530 const unsigned int component)
const
532 Assert(values.size() == points.size(),
535 const double r = this->
radius;
539 for (
unsigned int i = 0; i < values.size(); ++i)
541 const double d = this->
center.distance(points[i]);
553 std::fill(values.begin(), values.end(), 0.);
563 Assert(values.size() == points.size(),
566 for (
unsigned int k = 0; k < values.size(); ++k)
568 const double d = this->
center.distance(points[k]);
569 const double r = this->
radius;
592 const double d = this->
center.distance(p);
593 const double r = this->
radius;
const unsigned int n_components
Function(const unsigned int n_components=1, const time_type initial_time=0.0)
virtual void set_radius(const double r)
const unsigned int selected
const double unitary_integral_value
bool integrates_to_one() const
double get_radius() const
virtual void set_center(const Point< dim > &p)
const Point< dim > & get_center() const
static const unsigned int no_component
CutOffFunctionBase(const double radius=1., const Point< dim > center=Point< dim >(), const unsigned int n_components=1, const unsigned int select=CutOffFunctionBase< dim >::no_component, const bool integrate_to_one=false, const double unitary_integral_value=1.0)
virtual double value(const Point< dim > &p, const unsigned int component=0) const override
virtual void vector_value_list(const std::vector< Point< dim > > &points, std::vector< Vector< double > > &values) const override
CutOffFunctionC1(const double radius=1., const Point< dim >=Point< dim >(), const unsigned int n_components=1, const unsigned int select=CutOffFunctionBase< dim >::no_component, bool integrate_to_one=false)
virtual Tensor< 1, dim > gradient(const Point< dim > &p, const unsigned int component=0) const override
virtual void value_list(const std::vector< Point< dim > > &points, std::vector< double > &values, const unsigned int component=0) const override
virtual void value_list(const std::vector< Point< dim > > &points, std::vector< double > &values, const unsigned int component=0) const override
CutOffFunctionCinfty(const double radius=1., const Point< dim >=Point< dim >(), const unsigned int n_components=1, const unsigned int select=CutOffFunctionBase< dim >::no_component, bool integrate_to_one=false)
virtual Tensor< 1, dim > gradient(const Point< dim > &p, const unsigned int component=0) const override
virtual double value(const Point< dim > &p, const unsigned int component=0) const override
virtual void vector_value_list(const std::vector< Point< dim > > &points, std::vector< Vector< double > > &values) const override
virtual double value(const Point< dim > &p, const unsigned int component=0) const override
virtual void vector_value_list(const std::vector< Point< dim > > &points, std::vector< Vector< double > > &values) const override
CutOffFunctionLinfty(const double radius=1., const Point< dim >=Point< dim >(), const unsigned int n_components=1, const unsigned int select=CutOffFunctionBase< dim >::no_component, const bool integrate_to_one=false)
virtual void value_list(const std::vector< Point< dim > > &points, std::vector< double > &values, const unsigned int component=0) const override
std::array< std::unique_ptr< CutOffFunctionBase< 1 > >, dim > base
CutOffFunctionTensorProduct(double radius=1.0, const Point< dim > ¢er=Point< dim >(), const unsigned int n_components=1, const unsigned int select=CutOffFunctionBase< dim >::no_component, const bool integrate_to_one=false)
virtual Tensor< 1, dim > gradient(const Point< dim > &p, const unsigned int component=0) const override
virtual void set_radius(const double radius) override
virtual double value(const Point< dim > &p, const unsigned int component=0) const override
virtual void set_center(const Point< dim > ¢er) override
virtual void vector_value_list(const std::vector< Point< dim > > &points, std::vector< Vector< double > > &values) const override
virtual double value(const Point< dim > &p, const unsigned int component=0) const override
CutOffFunctionW1(const double radius=1., const Point< dim >=Point< dim >(), const unsigned int n_components=1, const unsigned int select=CutOffFunctionBase< dim >::no_component, const bool integrate_to_one=false)
virtual void value_list(const std::vector< Point< dim > > &points, std::vector< double > &values, const unsigned int component=0) const override
#define DEAL_II_NAMESPACE_OPEN
#define DEAL_II_NAMESPACE_CLOSE
#define Assert(cond, exc)
#define AssertIndexRange(index, range)
static ::ExceptionBase & ExcDimensionMismatch(std::size_t arg1, std::size_t arg2)
static ::ExceptionBase & ExcNotInitialized()
static ::ExceptionBase & ExcMessage(std::string arg1)
const bool IsBlockVector< VectorType >::value
constexpr T fixed_power(const T t)
::VectorizedArray< Number, width > exp(const ::VectorizedArray< Number, width > &)
::VectorizedArray< Number, width > cos(const ::VectorizedArray< Number, width > &)
::VectorizedArray< Number, width > sin(const ::VectorizedArray< Number, width > &)