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/petsc_vector.h> 20 #include <deal.II/lac/trilinos_vector.h> 21 #include <deal.II/lac/trilinos_block_vector.h> 22 #include <deal.II/lac/trilinos_parallel_block_vector.h> 23 #include <deal.II/grid/tria_iterator.h> 24 #include <deal.II/dofs/dof_handler.h> 25 #include <deal.II/dofs/dof_accessor.h> 26 #include <deal.II/fe/fe.h> 27 #include <deal.II/fe/fe_tools.h> 28 #include <deal.II/fe/mapping_q_eulerian.h> 29 #include <deal.II/fe/mapping_q1_eulerian.h> 31 DEAL_II_NAMESPACE_OPEN
37 template <
int dim,
class EulerVectorType,
int spacedim>
43 mapping_q_eulerian (mapping_q_eulerian),
44 support_quadrature(degree),
45 fe_values(mapping_q_eulerian.euler_dof_handler->get_fe(),
50 template <
int dim,
class EulerVectorType,
int spacedim>
72 template <
int dim,
class EulerVectorType,
int spacedim>
94 template <
int dim,
class EulerVectorType,
int spacedim>
107 template <
int dim,
class EulerVectorType,
int spacedim>
118 const unsigned int n_q_points = q_iterated.
size();
123 std::vector<unsigned int> renumber(n_q_points);
124 std::vector<unsigned int> dpo(dim+1, 1U);
125 for (
unsigned int i=1; i<dpo.size(); ++i)
126 dpo[i]=dpo[i-1]*(map_degree-1);
132 for (
unsigned int q=0; q<n_q_points; ++q)
140 template <
int dim,
class EulerVectorType,
int spacedim>
147 const std::vector<Point<spacedim> > a
151 std::copy (a.begin(),
153 vertex_locations.begin());
155 return vertex_locations;
160 template <
int dim,
class EulerVectorType,
int spacedim>
172 template <
int dim,
class EulerVectorType,
int spacedim>
173 std::vector<Point<spacedim> >
191 Assert (dof_cell->active() ==
true, ExcInactiveCell());
206 const unsigned int n_components =
mapping_q_eulerian.euler_dof_handler->get_fe().n_components();
208 Assert (n_components >= spacedim, ExcDimensionMismatch(n_components, spacedim) );
210 std::vector<Vector<typename EulerVectorType::value_type> >
211 shift_vector(n_support_pts,
223 std::vector<Point<spacedim> > a(n_support_pts);
224 for (
unsigned int q=0; q<n_support_pts; ++q)
227 for (
unsigned int d=0; d<spacedim; ++d)
228 a[q](d) += shift_vector[q](d);
236 template<
int dim,
class EulerVectorType,
int spacedim>
237 CellSimilarity::Similarity
240 const CellSimilarity::Similarity ,
249 CellSimilarity::invalid_next_cell,
256 return CellSimilarity::invalid_next_cell;
262 #include "mapping_q_eulerian.inst" 265 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
std_cxx11::shared_ptr< const MappingQGeneric< dim, spacedim > > q1_mapping
#define AssertDimension(dim1, dim2)
virtual std_cxx11::array< Point< spacedim >, GeometryInfo< dim >::vertices_per_cell > get_vertices(const typename Triangulation< dim, spacedim >::cell_iterator &cell) const
FEValues< dim, spacedim > fe_values
Threads::Mutex fe_values_mutex
const Point< dim > & point(const unsigned int i) const
const SupportQuadrature support_quadrature
ActiveSelector::cell_iterator cell_iterator
virtual Mapping< dim, spacedim > * clone() const
SupportQuadrature(const unsigned int map_degree)
unsigned int global_dof_index
#define Assert(cond, exc)
MappingQEulerianGeneric(const unsigned int degree, const MappingQEulerian< dim, VectorType, spacedim > &mapping_q_eulerian)
Abstract base class for mapping classes.
virtual std::vector< Point< spacedim > > compute_mapping_support_points(const typename Triangulation< dim, spacedim >::cell_iterator &cell) const
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
unsigned int get_degree() const
SmartPointer< const DoFHandler< dim, spacedim >, MappingQEulerian< dim, VectorType, spacedim > > euler_dof_handler
std_cxx11::shared_ptr< const MappingQGeneric< dim, spacedim > > qp_mapping
virtual std_cxx11::array< Point< spacedim >, GeometryInfo< dim >::vertices_per_cell > get_vertices(const typename Triangulation< dim, spacedim >::cell_iterator &cell) const
const MappingQEulerian< dim, VectorType, spacedim > & mapping_q_eulerian