16 #ifndef dealii_manifold_lib_h 17 #define dealii_manifold_lib_h 20 #include <deal.II/base/config.h> 21 #include <deal.II/grid/manifold.h> 22 #include <deal.II/base/function.h> 23 #include <deal.II/base/function_parser.h> 25 #include <boost/container/small_vector.hpp> 27 DEAL_II_NAMESPACE_OPEN
60 template <
int dim,
int spacedim = dim>
77 virtual std::unique_ptr<Manifold<dim,spacedim> >
clone()
const override;
219 template <
int dim,
int spacedim = dim>
231 virtual std::unique_ptr<Manifold<dim,spacedim> >
clone()
const override;
244 const double w)
const override;
312 std::pair<double, Tensor<1,spacedim> >
377 template <
int dim,
int spacedim = dim>
404 virtual std::unique_ptr<Manifold<dim,spacedim> >
clone()
const override;
481 template <
int dim,
int spacedim=dim,
int chartdim=dim>
520 const double h=1e-8);
530 virtual std::unique_ptr<Manifold<dim,spacedim> >
clone()
const override;
652 static const int chartdim = 3;
653 static const int spacedim = 3;
665 virtual std::unique_ptr<Manifold<dim, 3> >
clone()
const override;
825 template <
int dim,
int spacedim=dim>
842 virtual std::unique_ptr<Manifold<dim,spacedim> >
clone()
const override;
915 std::array<unsigned int, 20>
1012 DEAL_II_NAMESPACE_CLOSE
DerivativeForm< 1, dim, spacedim > push_forward_gradient(const typename Triangulation< dim, spacedim >::cell_iterator &cell, const Point< dim > &chart_point, const Point< spacedim > &pushed_forward_chart_point) const
FlatManifold< dim > chart_manifold
Triangulation< dim, spacedim >::cell_iterator compute_chart_points(const ArrayView< const Point< spacedim >> &surrounding_points, ArrayView< Point< dim >> chart_points) const
virtual Point< spacedim > push_forward(const Point< 3 > &chart_point) const override
SmartPointer< const Function< chartdim >, FunctionManifold< dim, spacedim, chartdim > > push_forward_function
FunctionManifold(const Function< chartdim > &push_forward_function, const Function< spacedim > &pull_back_function, const Tensor< 1, chartdim > &periodicity=Tensor< 1, chartdim >(), const double tolerance=1e-10)
static Tensor< 1, spacedim > get_periodicity()
std::array< unsigned int, 20 > get_possible_cells_around_points(const ArrayView< const Point< spacedim >> &surrounding_points) const
virtual Point< spacedim > get_new_point(const ArrayView< const Point< spacedim >> &surrounding_points, const ArrayView< const double > &weights) const override
const Point< spacedim > point_on_axis
std::vector< bool > coarse_cell_is_flat
virtual std::unique_ptr< Manifold< dim, 3 > > clone() const override
virtual void get_new_points(const ArrayView< const Point< spacedim >> &surrounding_points, const Table< 2, double > &weights, ArrayView< Point< spacedim >> new_points) const override
const double finite_difference_step
const std::string pull_back_expression
virtual DerivativeForm< 1, 3, 3 > push_forward_gradient(const Point< 3 > &chart_point) const override
SmartPointer< const Function< spacedim >, FunctionManifold< dim, spacedim, chartdim > > pull_back_function
virtual Point< spacedim > get_new_point(const ArrayView< const Point< spacedim >> &vertices, const ArrayView< const double > &weights) const override
virtual Point< 3 > pull_back(const Point< 3 > &p) const override
const Tensor< 1, spacedim > direction
TorusManifold(const double R, const double r)
void initialize(const Triangulation< dim, spacedim > &triangulation)
virtual std::unique_ptr< Manifold< dim, spacedim > > clone() const override
const Point< spacedim > center
virtual Point< 3 > push_forward(const Point< 3 > &chart_point) const override
virtual DerivativeForm< 1, 3, spacedim > push_forward_gradient(const Point< 3 > &chart_point) const override
CylindricalManifold(const unsigned int axis=0, const double tolerance=1e-10)
virtual std::unique_ptr< Manifold< dim, spacedim > > clone() const override
PolarManifold(const Point< spacedim > center=Point< spacedim >())
const PolarManifold< spacedim > polar_manifold
virtual ~FunctionManifold() override
const std::string chart_vars
virtual Point< chartdim > pull_back(const Point< spacedim > &space_point) const override
virtual Point< 3 > pull_back(const Point< spacedim > &space_point) const override
virtual Tensor< 1, spacedim > get_tangent_vector(const Point< spacedim > &x1, const Point< spacedim > &x2) const override
Point< spacedim > push_forward(const typename Triangulation< dim, spacedim >::cell_iterator &cell, const Point< dim > &chart_point) const
virtual Point< spacedim > push_forward(const Point< spacedim > &chart_point) const override
virtual Point< spacedim > get_new_point(const ArrayView< const Point< spacedim >> &surrounding_points, const ArrayView< const double > &weights) const override
virtual std::unique_ptr< Manifold< dim, spacedim > > clone() const override
virtual void get_normals_at_vertices(const typename Triangulation< dim, spacedim >::face_iterator &face, typename Manifold< dim, spacedim >::FaceVertexNormals &face_vertex_normals) const override
const Point< spacedim > center
virtual void get_new_points(const ArrayView< const Point< spacedim >> &surrounding_points, const Table< 2, double > &weights, ArrayView< Point< spacedim >> new_points) const override
TransfiniteInterpolationManifold()
virtual ~TransfiniteInterpolationManifold() override
virtual Point< spacedim > push_forward(const Point< chartdim > &chart_point) const override
virtual Point< spacedim > pull_back(const Point< spacedim > &space_point) const override
virtual DerivativeForm< 1, chartdim, spacedim > push_forward_gradient(const Point< chartdim > &chart_point) const override
const Tensor< 1, spacedim > normal_direction
const std::string space_vars
Point< dim > pull_back(const typename Triangulation< dim, spacedim >::cell_iterator &cell, const Point< spacedim > &p, const Point< dim > &initial_guess) const
const Triangulation< dim, spacedim > * triangulation
const std::string push_forward_expression
std::pair< double, Tensor< 1, spacedim > > guess_new_point(const ArrayView< const Tensor< 1, spacedim >> &directions, const ArrayView< const double > &distances, const ArrayView< const double > &weights) const
const FunctionParser< spacedim >::ConstMap const_map
boost::signals2::connection clear_signal
virtual std::unique_ptr< Manifold< dim, spacedim > > clone() const override
SphericalManifold(const Point< spacedim > center=Point< spacedim >())
virtual Point< spacedim > get_intermediate_point(const Point< spacedim > &p1, const Point< spacedim > &p2, const double w) const override
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
virtual Tensor< 1, spacedim > normal_vector(const typename Triangulation< dim, spacedim >::face_iterator &face, const Point< spacedim > &p) const override