16 #include <deal.II/base/utilities.h> 17 #include <deal.II/base/quadrature_lib.h> 18 #include <deal.II/lac/vector.h> 19 #include <deal.II/lac/block_vector.h> 20 #include <deal.II/lac/la_vector.h> 21 #include <deal.II/lac/parallel_vector.h> 22 #include <deal.II/lac/parallel_block_vector.h> 23 #include <deal.II/lac/petsc_vector.h> 24 #include <deal.II/lac/petsc_block_vector.h> 25 #include <deal.II/lac/trilinos_vector.h> 26 #include <deal.II/lac/trilinos_block_vector.h> 27 #include <deal.II/lac/trilinos_parallel_block_vector.h> 28 #include <deal.II/grid/tria_iterator.h> 29 #include <deal.II/dofs/dof_handler.h> 30 #include <deal.II/dofs/dof_accessor.h> 31 #include <deal.II/fe/fe.h> 32 #include <deal.II/fe/fe_tools.h> 33 #include <deal.II/fe/mapping_q_eulerian.h> 34 #include <deal.II/fe/mapping_q1_eulerian.h> 36 DEAL_II_NAMESPACE_OPEN
42 template <
int dim,
class VectorType,
int spacedim>
48 mapping_q_eulerian (mapping_q_eulerian),
49 support_quadrature(degree),
50 fe_values(mapping_q_eulerian.euler_dof_handler->get_fe(),
55 template <
int dim,
class VectorType,
int spacedim>
61 MappingQ<dim,spacedim>(degree, true),
77 template <
int dim,
class VectorType,
int spacedim>
81 const VectorType &euler_vector)
83 MappingQ<dim,spacedim>(degree, true),
84 euler_vector(&euler_vector),
85 euler_dof_handler(&euler_dof_handler)
99 template <
int dim,
class VectorType,
int spacedim>
112 template <
int dim,
class VectorType,
int spacedim>
123 const unsigned int n_q_points = q_iterated.
size();
128 std::vector<unsigned int> renumber(n_q_points);
129 std::vector<unsigned int> dpo(dim+1, 1U);
130 for (
unsigned int i=1; i<dpo.size(); ++i)
131 dpo[i]=dpo[i-1]*(map_degree-1);
137 for (
unsigned int q=0; q<n_q_points; ++q)
145 template <
int dim,
class VectorType,
int spacedim>
152 const std::vector<Point<spacedim> > a
156 std::copy (a.begin(),
158 vertex_locations.begin());
160 return vertex_locations;
165 template <
int dim,
class VectorType,
int spacedim>
177 template <
int dim,
class VectorType,
int spacedim>
178 std::vector<Point<spacedim> >
211 const unsigned int n_components =
mapping_q_eulerian.euler_dof_handler->get_fe().n_components();
215 std::vector<Vector<typename VectorType::value_type> >
216 shift_vector(n_support_pts,
228 std::vector<Point<spacedim> > a(n_support_pts);
229 for (
unsigned int q=0; q<n_support_pts; ++q)
232 for (
unsigned int d=0; d<spacedim; ++d)
233 a[q](d) += shift_vector[q](d);
241 template<
int dim,
class VectorType,
int spacedim>
267 #include "mapping_q_eulerian.inst" 270 DEAL_II_NAMESPACE_CLOSE
std_cxx11::shared_ptr< const MappingQGeneric< dim, spacedim > > q1_mapping
#define AssertDimension(dim1, dim2)
FEValues< dim, spacedim > fe_values
Threads::Mutex fe_values_mutex
static ::ExceptionBase & ExcInactiveCell()
const Point< dim > & point(const unsigned int i) const
Transformed quadrature points.
virtual std::vector< Point< spacedim > > compute_mapping_support_points(const typename Triangulation< dim, spacedim >::cell_iterator &cell) const
const SupportQuadrature support_quadrature
ActiveSelector::cell_iterator cell_iterator
MappingQEulerianGeneric(const unsigned int degree, const MappingQEulerian< dim, VectorType, spacedim > &mapping_q_eulerian)
unsigned int global_dof_index
virtual std_cxx11::array< Point< spacedim >, GeometryInfo< dim >::vertices_per_cell > get_vertices(const typename Triangulation< dim, spacedim >::cell_iterator &cell) const
#define Assert(cond, exc)
static ::ExceptionBase & ExcDimensionMismatch(std::size_t arg1, std::size_t arg2)
virtual std_cxx11::array< Point< spacedim >, GeometryInfo< dim >::vertices_per_cell > get_vertices(const typename Triangulation< dim, spacedim >::cell_iterator &cell) const
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
Abstract base class for mapping classes.
SmartPointer< const VectorType, MappingQEulerian< dim, VectorType, spacedim > > euler_vector
MappingQEulerian(const unsigned int degree, const DoFHandler< dim, spacedim > &euler_dof_handler, const VectorType &euler_vector)
std::vector< Point< dim > > quadrature_points
unsigned int size() const
SmartPointer< const DoFHandler< dim, spacedim >, MappingQEulerian< dim, VectorType, spacedim > > euler_dof_handler
virtual Mapping< dim, spacedim > * clone() const
std_cxx11::shared_ptr< const MappingQGeneric< dim, spacedim > > qp_mapping
SupportQuadrature(const unsigned int map_degree)
const MappingQEulerian< dim, VectorType, spacedim > & mapping_q_eulerian