34#include <boost/container/small_vector.hpp>
43template <
int dim,
typename VectorType,
int spacedim>
45 const unsigned int degree,
48 const unsigned int level)
63template <
int dim,
typename VectorType,
int spacedim>
64std::unique_ptr<Mapping<dim, spacedim>>
67 return std::make_unique<MappingQEulerian<dim, VectorType, spacedim>>(
73template <
int dim,
typename VectorType,
int spacedim>
82 const unsigned int n_q_points = q_iterated.size();
86 const std::vector<unsigned int> renumber =
91 this->quadrature_points[renumber[q]] = q_iterated.point(q);
96template <
int dim,
typename VectorType,
int spacedim>
97boost::container::small_vector<Point<spacedim>,
107 boost::container::small_vector<Point<spacedim>, 200> points;
110 boost::container::small_vector<Point<spacedim>,
117 vertex_locations(points.begin(), points.begin() + cell->
n_vertices());
119 return vertex_locations;
124template <
int dim,
typename VectorType,
int spacedim>
158 Assert(n_components >= spacedim,
161 std::vector<Vector<typename VectorType::value_type>> shift_vector(
164 std::vector<types::global_dof_index> dof_indices(
173 dof_cell->get_mg_dof_indices(dof_indices);
181 points.resize(n_support_pts);
182 for (
unsigned int q = 0; q < n_support_pts; ++q)
184 points[q] =
fe_values.quadrature_point(q);
185 for (
unsigned int d = 0; d < spacedim; ++d)
186 points[q][d] += shift_vector[q][d];
192template <
int dim,
typename VectorType,
int spacedim>
218#include "fe/mapping_q_eulerian.inst"
SupportQuadrature(const unsigned int map_degree)
FEValues< dim, spacedim > fe_values
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::FEValuesImplementation::MappingRelatedData< dim, spacedim > &output_data) const override
virtual std::unique_ptr< Mapping< dim, spacedim > > clone() const override
MappingQEulerian(const unsigned int degree, const DoFHandler< dim, spacedim > &euler_dof_handler, const VectorType &euler_vector, const unsigned int level=numbers::invalid_unsigned_int)
ObserverPointer< const VectorType, MappingQEulerian< dim, VectorType, spacedim > > euler_vector
ObserverPointer< const DoFHandler< dim, spacedim >, MappingQEulerian< dim, VectorType, spacedim > > euler_dof_handler
Threads::Mutex fe_values_mutex
virtual void compute_mapping_support_points(const typename Triangulation< dim, spacedim >::cell_iterator &cell, boost::container::small_vector< Point< spacedim >, 200 > &a) const override
const MappingQ< dim, spacedim > mapping_q
const SupportQuadrature support_quadrature
virtual boost::container::small_vector< Point< spacedim >, ReferenceCells::max_n_vertices< dim >() > get_vertices(const typename Triangulation< dim, spacedim >::cell_iterator &cell) const override
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::FEValuesImplementation::MappingRelatedData< dim, spacedim > &output_data) const override
MappingQ(const unsigned int polynomial_degree)
unsigned int get_degree() const
unsigned int n_vertices() const
#define DEAL_II_NAMESPACE_OPEN
#define DEAL_II_NAMESPACE_CLOSE
#define Assert(cond, exc)
#define AssertDimension(dim1, dim2)
static ::ExceptionBase & ExcInactiveCell()
static ::ExceptionBase & ExcDimensionMismatch(std::size_t arg1, std::size_t arg2)
typename ActiveSelector::cell_iterator cell_iterator
TriaIterator< CellAccessor< dim, spacedim > > cell_iterator
@ update_values
Shape function values.
@ update_quadrature_points
Transformed quadrature points.
constexpr unsigned int max_n_vertices()
constexpr unsigned int invalid_unsigned_int
unsigned int global_dof_index
* const unsigned int n_q_points
static constexpr unsigned int vertices_per_cell