13#ifndef dealii_manifold_lib_h
14#define dealii_manifold_lib_h
24#include <boost/signals2/connection.hpp>
32 namespace MappingQImplementation
35 class InverseQuadraticApproximation;
83template <
int dim,
int spacedim = dim>
98 virtual std::unique_ptr<Manifold<dim, spacedim>>
99 clone()
const override;
150 "Access the center with get_center() instead.")
165 static
Tensor<1, spacedim>
262template <
int dim,
int spacedim = dim>
277 virtual std::unique_ptr<Manifold<dim, spacedim>>
278 clone()
const override;
290 const double w)
const override;
356 "Access the center with get_center() instead.")
374 guess_new_point(const
ArrayView<const
Tensor<1, spacedim>> &directions,
375 const
ArrayView<const
double> &distances,
376 const
ArrayView<const
double> &weights) const;
396 do_get_new_points(const
ArrayView<const
Point<spacedim>> &surrounding_points,
419template <
int dim,
int spacedim = dim>
430 const double tolerance = 1e-10);
441 const double tolerance = 1e-10);
446 virtual std::unique_ptr<Manifold<dim, spacedim>>
447 clone()
const override;
488 get_direction()
const;
497 get_point_on_axis()
const;
503 get_tolerance()
const;
563template <
int dim,
int spacedim = dim>
580 const double eccentricity);
582 virtual std::unique_ptr<Manifold<dim, spacedim>>
583 clone()
const override;
601 push_forward_gradient(
const Point<spacedim> &chart_point)
const override;
607 get_major_axis_direction()
const;
619 get_eccentricity()
const;
668template <
int dim,
int spacedim = dim,
int chartdim = dim>
689 const double tolerance = 1e-10);
706 const double tolerance = 1e-10);
723 const std::string push_forward_expression,
724 const std::string pull_back_expression,
728 const std::string chart_vars =
730 const std::string space_vars =
732 const double tolerance = 1e-10,
733 const double h = 1e-8);
743 virtual std::unique_ptr<Manifold<dim, spacedim>>
744 clone()
const override;
775 push_forward_gradient(
const Point<chartdim> &chart_point)
const override;
865 static const int chartdim = 3;
866 static const int spacedim = 3;
873 TorusManifold(
const double centerline_radius,
const double inner_radius);
878 virtual std::unique_ptr<Manifold<dim, 3>>
879 clone()
const override;
885 pull_back(
const Point<3> &p)
const override;
891 push_forward(
const Point<3> &chart_point)
const override;
897 push_forward_gradient(
const Point<3> &chart_point)
const override;
903 get_centerline_radius()
const;
909 get_inner_radius()
const;
1056template <
int dim,
int spacedim = dim>
1073 virtual std::unique_ptr<Manifold<dim, spacedim>>
1074 clone()
const override;
1146 std::array<unsigned int, 20>
1147 get_possible_cells_around_points(
1158 compute_chart_points(
1210 push_forward_gradient(
1243 std::vector<internal::MappingQImplementation::
1244 InverseQuadraticApproximation<dim, spacedim>>
1256template <
int dim,
int spacedim>
1265template <
int dim,
int spacedim>
1274template <
int dim,
int spacedim>
1283template <
int dim,
int spacedim>
1287 return point_on_axis;
1292template <
int dim,
int spacedim>
1301template <
int dim,
int spacedim>
1310template <
int dim,
int spacedim>
1319template <
int dim,
int spacedim>
1323 return eccentricity;
1332 return centerline_radius;
1341 return inner_radius;
virtual void get_new_points(const ArrayView< const Point< spacedim > > &surrounding_points, const Table< 2, double > &weights, ArrayView< Point< spacedim > > new_points) const override
virtual Tensor< 1, spacedim > get_tangent_vector(const Point< spacedim > &x1, const Point< spacedim > &x2) const override
virtual Point< spacedim > get_intermediate_point(const Point< spacedim > &p1, const Point< spacedim > &p2, const double w) const override
virtual Point< spacedim > get_new_point(const ArrayView< const Point< spacedim > > &surrounding_points, const ArrayView< const double > &weights) const override
const Tensor< 1, spacedim > dxn
const Tensor< 1, spacedim > normal_direction
const Point< spacedim > point_on_axis
const Tensor< 1, spacedim > direction
double get_tolerance() const
const Point< spacedim > & get_point_on_axis() const
const Tensor< 1, spacedim > & get_direction() const
const Tensor< 1, spacedim > & get_major_axis_direction() const
const Point< spacedim > & get_center() const
double get_eccentricity() const
const Point< spacedim > center
const double eccentricity
const Tensor< 1, spacedim > direction
const FunctionParser< spacedim >::ConstMap const_map
const std::string chart_vars
const std::string pull_back_expression
const std::string space_vars
const double finite_difference_step
const std::string push_forward_expression
ObserverPointer< const Function< chartdim >, FunctionManifold< dim, spacedim, chartdim > > push_forward_function
ObserverPointer< const Function< spacedim >, FunctionManifold< dim, spacedim, chartdim > > pull_back_function
std::map< std::string, double > ConstMap
virtual void get_normals_at_vertices(const typename Triangulation< dim, spacedim >::face_iterator &face, FaceVertexNormals &face_vertex_normals) const
std::array< Tensor< 1, spacedim >, GeometryInfo< dim >::vertices_per_face > FaceVertexNormals
static Tensor< 1, spacedim > get_periodicity()
virtual std::unique_ptr< Manifold< dim, spacedim > > clone() const override
virtual DerivativeForm< 1, spacedim, spacedim > push_forward_gradient(const Point< spacedim > &chart_point) const override
const Point< spacedim > center
const Point< spacedim > p_center
virtual Tensor< 1, spacedim > normal_vector(const typename Triangulation< dim, spacedim >::face_iterator &face, const Point< spacedim > &p) const override
virtual Point< spacedim > push_forward(const Point< spacedim > &chart_point) const override
virtual Point< spacedim > pull_back(const Point< spacedim > &space_point) const override
const Point< spacedim > & get_center() const
const Point< spacedim > & get_center() const
double get_centerline_radius() const
double get_inner_radius() const
const Triangulation< dim, spacedim > * triangulation
boost::signals2::connection clear_signal
std::vector< internal::MappingQImplementation::InverseQuadraticApproximation< dim, spacedim > > quadratic_approximation
FlatManifold< dim > chart_manifold
std::vector< bool > coarse_cell_is_flat
#define DEAL_II_NAMESPACE_OPEN
#define DEAL_II_DEPRECATED_WITH_COMMENT(comment)
#define DEAL_II_NAMESPACE_CLOSE