Reference documentation for deal.II version 8.4.2
mapping_q_eulerian.h
1 // ---------------------------------------------------------------------
2 //
3 // Copyright (C) 2001 - 2016 by the deal.II authors
4 //
5 // This file is part of the deal.II library.
6 //
7 // The deal.II library is free software; you can use it, redistribute
8 // it, and/or modify it under the terms of the GNU Lesser General
9 // Public License as published by the Free Software Foundation; either
10 // version 2.1 of the License, or (at your option) any later version.
11 // The full text of the license can be found in the file LICENSE at
12 // the top level of the deal.II distribution.
13 //
14 // ---------------------------------------------------------------------
15 
16 
17 #ifndef dealii__mapping_q_eulerian_h
18 #define dealii__mapping_q_eulerian_h
19 
20 #include <deal.II/base/smartpointer.h>
21 #include <deal.II/base/thread_management.h>
22 #include <deal.II/grid/tria_iterator.h>
23 #include <deal.II/dofs/dof_handler.h>
24 #include <deal.II/dofs/dof_accessor.h>
25 #include <deal.II/fe/fe.h>
26 #include <deal.II/fe/fe_values.h>
27 #include <deal.II/fe/mapping_q.h>
28 
29 
30 DEAL_II_NAMESPACE_OPEN
31 
32 
35 
90 template <int dim, typename VectorType = Vector<double>, int spacedim=dim >
91 class MappingQEulerian : public MappingQ<dim, spacedim>
92 {
93 public:
107  MappingQEulerian (const unsigned int degree,
109  const VectorType &euler_vector);
110 
115  MappingQEulerian (const unsigned int degree,
116  const VectorType &euler_vector,
117  const DoFHandler<dim,spacedim> &euler_dof_handler) DEAL_II_DEPRECATED;
118 
125  virtual
126  std_cxx11::array<Point<spacedim>, GeometryInfo<dim>::vertices_per_cell>
127  get_vertices (const typename Triangulation<dim,spacedim>::cell_iterator &cell) const;
128 
133  virtual
134  Mapping<dim,spacedim> *clone () const;
135 
141  bool preserves_vertex_locations () const;
142 
146  DeclException0 (ExcInactiveCell);
147 
148 protected:
157  virtual
158  CellSimilarity::Similarity
160  const CellSimilarity::Similarity cell_similarity,
161  const Quadrature<dim> &quadrature,
162  const typename Mapping<dim,spacedim>::InternalDataBase &internal_data,
164 
169 
174 
175 
176 private:
177 
183  class MappingQEulerianGeneric : public MappingQGeneric<dim,spacedim>
184  {
185  public:
186 
190  MappingQEulerianGeneric (const unsigned int degree,
192 
199  virtual
200  std_cxx11::array<Point<spacedim>, GeometryInfo<dim>::vertices_per_cell>
201  get_vertices (const typename Triangulation<dim,spacedim>::cell_iterator &cell) const;
202 
208  virtual
209  std::vector<Point<spacedim> >
211 
212  private:
217 
218 
224  class SupportQuadrature : public Quadrature<dim>
225  {
226  public:
231  SupportQuadrature (const unsigned int map_degree);
232 
233  };
234 
239 
249 
254  };
255 
256 };
257 
261 /*----------------------------------------------------------------------*/
262 
263 #ifndef DOXYGEN
264 
265 template <int dim, typename VectorType, int spacedim>
266 inline
267 bool
269 {
270  return false;
271 }
272 
273 #endif // DOXYGEN
274 
275 
276 DEAL_II_NAMESPACE_CLOSE
277 
278 
279 #endif // dealii__mapping_q_eulerian_h
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
virtual std_cxx11::array< Point< spacedim >, GeometryInfo< dim >::vertices_per_cell > get_vertices(const typename Triangulation< dim, spacedim >::cell_iterator &cell) const
#define DEAL_II_DEPRECATED
Definition: config.h:88
virtual Mapping< dim, spacedim > * clone() const
MappingQEulerianGeneric(const unsigned int degree, const MappingQEulerian< dim, VectorType, spacedim > &mapping_q_eulerian)
Abstract base class for mapping classes.
Definition: dof_tools.h:52
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)
SmartPointer< const DoFHandler< dim, spacedim >, MappingQEulerian< dim, VectorType, spacedim > > euler_dof_handler
Definition: fe.h:31
virtual std_cxx11::array< Point< spacedim >, GeometryInfo< dim >::vertices_per_cell > get_vertices(const typename Triangulation< dim, spacedim >::cell_iterator &cell) const
DeclException0(ExcInactiveCell)
bool preserves_vertex_locations() const
const MappingQEulerian< dim, VectorType, spacedim > & mapping_q_eulerian