20#ifdef DEAL_II_BOOST_HAS_BROKEN_HEADER_DEPRECATIONS
21# define BOOST_ALLOW_DEPRECATED_HEADERS
23#include <boost/geometry.hpp>
24#ifdef DEAL_II_BOOST_HAS_BROKEN_HEADER_DEPRECATIONS
25# undef BOOST_ALLOW_DEPRECATED_HEADERS
33template <
int dim,
int spacedim>
34boost::container::small_vector<Point<spacedim>,
36 ReferenceCells::max_n_vertices<dim>()
44 boost::container::small_vector<Point<spacedim>,
46 ReferenceCells::max_n_vertices<dim>()
60template <
int dim,
int spacedim>
61boost::container::small_vector<Point<spacedim>,
70 const unsigned int face_no)
const
72 boost::container::small_vector<Point<spacedim>,
81 const auto &cell_vertices = get_vertices(cell);
83 const auto face_orientation = cell->combined_face_orientation(face_no);
85 for (
const unsigned int v :
88 face_vertices.push_back(
90 face_no, v, face_orientation)]);
98template <
int dim,
int spacedim>
102 const bool map_barycenter_of_reference_cell)
const
104 if (map_barycenter_of_reference_cell)
106 return transform_unit_to_real_cell(cell,
107 cell->reference_cell().barycenter());
111 const auto vertices = get_vertices(cell);
113 for (
const auto &v : vertices)
115 return center / cell->n_vertices();
121template <
int dim,
int spacedim>
126 if (preserves_vertex_locations())
127 return cell->bounding_box();
134template <
int dim,
int spacedim>
147template <
int dim,
int spacedim>
155 for (
unsigned int i = 0; i < real_points.size(); ++i)
166 unit_points[i][0] = std::numeric_limits<double>::lowest();
173template <
int dim,
int spacedim>
177 const unsigned int face_no,
187 const unsigned int unit_normal_direction =
192 if (unit_normal_direction == 0)
193 return Point<dim - 1>{unit_cell_pt[1]};
194 else if (unit_normal_direction == 1)
195 return Point<dim - 1>{unit_cell_pt[0]};
199 if (unit_normal_direction == 0)
200 return Point<dim - 1>{unit_cell_pt[1], unit_cell_pt[2]};
201 else if (unit_normal_direction == 1)
202 return Point<dim - 1>{unit_cell_pt[0], unit_cell_pt[2]};
203 else if (unit_normal_direction == 2)
204 return Point<dim - 1>{unit_cell_pt[0], unit_cell_pt[1]};
215template <
int dim,
int spacedim>
219 const unsigned int face_no,
227 fill_fe_face_values(cell, face_no, quadrature[0], internal_data, output_data);
232template <
int dim,
int spacedim>
236 const unsigned int face_no,
243 ExcMessage(
"Use of a deprecated interface, please implement "
244 "fill_fe_face_values taking a hp::QCollection argument"));
254template <
int dim,
int spacedim>
255std::unique_ptr<typename Mapping<dim, spacedim>::InternalDataBase>
261 return get_face_data(update_flags, quadrature[0]);
266template <
int dim,
int spacedim>
267std::unique_ptr<typename Mapping<dim, spacedim>::InternalDataBase>
273 ExcMessage(
"Use of a deprecated interface, please implement "
274 "fill_fe_face_values taking a hp::QCollection argument"));
278 return std::unique_ptr<typename Mapping<dim, spacedim>::InternalDataBase>();
285template <
int dim,
int spacedim>
292template <
int dim,
int spacedim>
302template <
int dim,
int spacedim>
306 return sizeof(*this);
312template <
int dim,
int spacedim>
317 Assert(reference_cells.size() == 1,
319 "This function can only work for triangulations that "
320 "use only a single cell type -- for example, only triangles "
321 "or only quadrilaterals. For mixed meshes, there is no "
322 "single linear mapping object that can be used for all "
323 "cells of the triangulation. The triangulation you are "
324 "passing to this function uses multiple cell types."));
326 return reference_cells.front()
327 .template get_default_linear_mapping<spacedim>();
333#include "fe/mapping.inst"
***mech_lbc_system increment_interpolation_handlers push_back(scale_z_handler)
virtual std::size_t memory_consumption() const
virtual void reinit(const UpdateFlags update_flags, const Quadrature< dim > &quadrature)
Abstract base class for mapping classes.
Point< dim - 1 > project_real_point_to_unit_point_on_face(const typename Triangulation< dim, spacedim >::cell_iterator &cell, const unsigned int face_no, const Point< spacedim > &p) const
virtual BoundingBox< spacedim > get_bounding_box(const typename Triangulation< dim, spacedim >::cell_iterator &cell) const
virtual void fill_fe_immersed_surface_values(const typename Triangulation< dim, spacedim >::cell_iterator &cell, const NonMatching::ImmersedSurfaceQuadrature< dim > &quadrature, const typename Mapping< dim, spacedim >::InternalDataBase &internal_data, internal::FEValuesImplementation::MappingRelatedData< dim, spacedim > &output_data) const
virtual void fill_fe_face_values(const typename Triangulation< dim, spacedim >::cell_iterator &cell, const unsigned int face_no, const hp::QCollection< dim - 1 > &quadrature, const typename Mapping< dim, spacedim >::InternalDataBase &internal_data, internal::FEValuesImplementation::MappingRelatedData< dim, spacedim > &output_data) const
virtual void transform_points_real_to_unit_cell(const typename Triangulation< dim, spacedim >::cell_iterator &cell, const ArrayView< const Point< spacedim > > &real_points, const ArrayView< Point< dim > > &unit_points) const
virtual boost::container::small_vector< Point< spacedim >, ReferenceCells::max_n_vertices< dim >() > get_vertices(const typename Triangulation< dim, spacedim >::cell_iterator &cell) const
virtual Point< spacedim > get_center(const typename Triangulation< dim, spacedim >::cell_iterator &cell, const bool map_barycenter_of_reference_cell=true) const
virtual std::unique_ptr< InternalDataBase > get_face_data(const UpdateFlags update_flags, const hp::QCollection< dim - 1 > &quadrature) const
const std::vector< ReferenceCell< dim > > & get_reference_cells() const
unsigned int size() const
#define DEAL_II_NAMESPACE_OPEN
#define DEAL_II_NAMESPACE_CLOSE
#define DEAL_II_ASSERT_UNREACHABLE()
static ::ExceptionBase & ExcNotImplemented()
#define Assert(cond, exc)
#define AssertDimension(dim1, dim2)
static ::ExceptionBase & ExcMessage(std::string arg1)
#define AssertThrow(cond, exc)
@ update_default
No update.
const Mapping< dim, spacedim > & get_default_linear_mapping(const Triangulation< dim, spacedim > &triangulation)
void reference_cell(Triangulation< dim, spacedim > &tria, const ReferenceCell< dim > &reference_cell)
constexpr unsigned int max_n_vertices()
Point< 1 > transform_real_to_unit_cell(const std::array< Point< spacedim >, GeometryInfo< 1 >::vertices_per_cell > &vertices, const Point< spacedim > &p)