21 #ifndef _aspect_compat_h 22 #define _aspect_compat_h 24 #include <deal.II/base/config.h> 25 #include <deal.II/base/mpi.h> 31 #if !DEAL_II_VERSION_GTE(9,6,0) 32 # include <deal.II/multigrid/mg_transfer_matrix_free.h> 33 # include <deal.II/grid/manifold.h> 34 # include <deal.II/grid/manifold_lib.h> 40 # include <deal.II/grid/manifold_lib.h> 43 #if !DEAL_II_VERSION_GTE(9,7,0) 44 # include <deal.II/grid/grid_generator.h> 53 using ::Utilities::MPI::broadcast;
61 #if !DEAL_II_VERSION_GTE(9,6,0) 62 template <
int dim,
class NumberType>
67 #if !DEAL_II_VERSION_GTE(9,7,0) 74 template <
typename T,
typename P =
void>
87 #if !DEAL_II_VERSION_GTE(9,6,0) 98 template <
int dim,
int spacedim = dim>
113 virtual std::unique_ptr<Manifold<dim, spacedim>>
114 clone()
const override;
123 virtual Point<spacedim>
124 get_intermediate_point(
const Point<spacedim> &p1,
125 const Point<spacedim> &p2,
126 const double w)
const override;
132 virtual Tensor<1, spacedim>
133 get_tangent_vector(
const Point<spacedim> &x1,
134 const Point<spacedim> &x2)
const override;
139 virtual Tensor<1, spacedim>
141 const typename Triangulation<dim, spacedim>::face_iterator &face,
142 const Point<spacedim> &p)
const override;
148 get_normals_at_vertices(
149 const typename Triangulation<dim, spacedim>::face_iterator &face,
150 typename Manifold<dim, spacedim>::FaceVertexNormals &face_vertex_normals)
168 get_new_points(
const ArrayView<
const Point<spacedim>> &surrounding_points,
169 const Table<2, double> &weights,
170 ArrayView<Point<spacedim>> new_points)
const override;
176 virtual Point<spacedim>
177 get_new_point(
const ArrayView<
const Point<spacedim>> &vertices,
178 const ArrayView<const double> &weights)
const override;
192 std::pair<double, Tensor<1, spacedim>>
193 guess_new_point(
const ArrayView<
const Tensor<1, spacedim>> &directions,
194 const ArrayView<const double> &distances,
195 const ArrayView<const double> &weights)
const;
215 do_get_new_points(
const ArrayView<
const Point<spacedim>> &surrounding_points,
216 const ArrayView<const double> &weights,
217 ArrayView<Point<spacedim>> new_points)
const;
234 using ::SphericalManifold;
241 #if !DEAL_II_VERSION_GTE(9,7,0) 279 template <
int dim,
typename RangeNumberType =
double>
281 :
public Function<dim, RangeNumberType>
301 const std::function<Tensor<1, dim, RangeNumberType>(
const Point<dim> &)>
302 &tensor_function_object,
303 const unsigned int selected_component = 0,
304 const unsigned int n_components = dim);
315 virtual RangeNumberType
316 value(
const Point<dim> &p,
const unsigned int component = 0)
const override;
324 vector_value(
const Point<dim> &p,
325 Vector<RangeNumberType> &values)
const override;
336 const std::vector<Point<dim>> &points,
337 std::vector<Vector<RangeNumberType>> &value_list)
const override;
344 const std::function<Tensor<1, dim, RangeNumberType>(
const Point<dim> &)>
345 tensor_function_object;
357 template <
int dim,
typename RangeNumberType>
360 const std::function<Tensor<1, dim, RangeNumberType>(
const Point<dim> &)>
361 &tensor_function_object,
362 const unsigned int selected_component,
363 const unsigned int n_components)
364 : Function<dim, RangeNumberType>(n_components)
365 , tensor_function_object(tensor_function_object)
366 , selected_component(selected_component)
370 AssertIndexRange(selected_component + dim - 1, this->n_components);
375 template <
int dim,
typename RangeNumberType>
376 inline RangeNumberType
379 const unsigned int component)
const 381 AssertIndexRange(component, this->n_components);
385 if ((component < selected_component) ||
386 (component >= selected_component + dim))
393 const Tensor<1, dim, RangeNumberType> tensor_value =
394 tensor_function_object(p);
396 return tensor_value[component - selected_component];
400 template <
int dim,
typename RangeNumberType>
404 Vector<RangeNumberType> &values)
const 406 Assert(values.size() == this->n_components,
407 ExcDimensionMismatch(values.size(), this->n_components));
413 const Tensor<1, dim, RangeNumberType> tensor_value =
414 tensor_function_object(p);
421 for (
unsigned int i = 0; i < dim; ++i)
422 values(i + selected_component) = tensor_value[i];
433 template <
int dim,
typename RangeNumberType>
436 const std::vector<Point<dim>> &points,
437 std::vector<Vector<RangeNumberType>> &value_list)
const 439 Assert(value_list.size() == points.size(),
440 ExcDimensionMismatch(value_list.size(), points.size()));
442 const unsigned int n_points = points.size();
444 for (
unsigned int p = 0; p < n_points; ++p)
446 points[p], value_list[p]);
453 #if !DEAL_II_VERSION_GTE(9,7,0) 458 const Point<dim> ¢er,
459 const double inner_radius,
460 const double outer_radius);
468 #if !DEAL_II_VERSION_GTE(9,8,0)
::SmartPointer< T, P > ObserverPointer
VectorFunctionFromTensorFunctionObject(const std::function< Tensor< 1, dim, RangeNumberType >(const Point< dim > &)> &tensor_function_object, const unsigned int selected_component=0, const unsigned int n_components=dim)
::MGTransferMatrixFree< dim, NumberType > MGTransferMF
const PolarManifold< spacedim > polar_manifold
void colorize_quarter_hyper_shell(Triangulation< dim > &tria, const Point< dim > ¢er, const double inner_radius, const double outer_radius)
const Point< spacedim > center
const unsigned int selected_component
::ReferenceCell ReferenceCell