16 #ifndef dealii__mapping_h 17 #define dealii__mapping_h 20 #include <deal.II/base/config.h> 21 #include <deal.II/base/derivative_form.h> 22 #include <deal.II/base/std_cxx11/array.h> 23 #include <deal.II/base/array_view.h> 24 #include <deal.II/grid/tria.h> 25 #include <deal.II/fe/fe_update_flags.h> 29 DEAL_II_NAMESPACE_OPEN
32 template <
int dim,
int spacedim>
class FEValues;
34 template <
int dim,
int spacedim>
class FEValues;
286 template <
int dim,
int spacedim=dim>
405 const unsigned int &face_no,
432 "Computing the mapping between a real space point and a point in reference " 433 "space failed, typically because the given point lies outside the cell " 434 "where the inverse mapping is not unique.");
445 <<
"The image of the mapping applied to cell with center [" 446 << arg1 <<
"] is distorted. The cell geometry or the " 447 <<
"mapping are invalid, giving a non-positive volume " 448 <<
"fraction of " << arg2 <<
" in quadrature point " 799 CellSimilarity::Similarity
801 const CellSimilarity::Similarity cell_similarity,
832 const unsigned int face_no,
865 const unsigned int face_no,
866 const unsigned int subface_no,
1173 friend class FEValues<dim,spacedim>;
1179 DEAL_II_NAMESPACE_CLOSE
virtual CellSimilarity::Similarity fill_fe_values(const typename Triangulation< dim, spacedim >::cell_iterator &cell, const CellSimilarity::Similarity cell_similarity, const Quadrature< dim > &quadrature, const typename Mapping< dim, spacedim >::InternalDataBase &internal_data, ::internal::FEValues::MappingRelatedData< dim, spacedim > &output_data) const =0
virtual void transform(const ArrayView< const Tensor< 1, dim > > &input, const MappingType type, const typename Mapping< dim, spacedim >::InternalDataBase &internal, const ArrayView< Tensor< 1, spacedim > > &output) const =0
DeclExceptionMsg(ExcTransformationFailed, "Computing the mapping between a real space point and a point in reference " "space failed, typically because the given point lies outside the cell " "where the inverse mapping is not unique.")
virtual std::size_t memory_consumption() const
virtual Point< dim > transform_real_to_unit_cell(const typename Triangulation< dim, spacedim >::cell_iterator &cell, const Point< spacedim > &p) const =0
virtual std_cxx11::array< Point< spacedim >, GeometryInfo< dim >::vertices_per_cell > get_vertices(const typename Triangulation< dim, spacedim >::cell_iterator &cell) const
virtual void fill_fe_face_values(const typename Triangulation< dim, spacedim >::cell_iterator &cell, const unsigned int face_no, const Quadrature< dim-1 > &quadrature, const typename Mapping< dim, spacedim >::InternalDataBase &internal_data, ::internal::FEValues::MappingRelatedData< dim, spacedim > &output_data) const =0
virtual ~InternalDataBase()
Abstract base class for mapping classes.
DeclException3(ExcDistortedMappedCell, Point< spacedim >, double, int,<< "The image of the mapping applied to cell with center ["<< arg1<< "] is distorted. The cell geometry or the "<< "mapping are invalid, giving a non-positive volume "<< "fraction of "<< arg2<< " in quadrature point "<< arg3<< ".")
DeclException0(ExcInvalidData)
virtual InternalDataBase * get_data(const UpdateFlags update_flags, const Quadrature< dim > &quadrature) const =0
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 InternalDataBase * get_subface_data(const UpdateFlags update_flags, const Quadrature< dim-1 > &quadrature) const =0
virtual UpdateFlags requires_update_flags(const UpdateFlags update_flags) const =0
virtual bool preserves_vertex_locations() const =0
virtual Mapping< dim, spacedim > * clone() const =0
virtual void fill_fe_subface_values(const typename Triangulation< dim, spacedim >::cell_iterator &cell, const unsigned int face_no, const unsigned int subface_no, const Quadrature< dim-1 > &quadrature, const typename Mapping< dim, spacedim >::InternalDataBase &internal_data, ::internal::FEValues::MappingRelatedData< dim, spacedim > &output_data) const =0
virtual Point< spacedim > transform_unit_to_real_cell(const typename Triangulation< dim, spacedim >::cell_iterator &cell, const Point< dim > &p) const =0
virtual InternalDataBase * get_face_data(const UpdateFlags update_flags, const Quadrature< dim-1 > &quadrature) const =0