deal.II version GIT relicensing-6842-g793a97d2aa 2026-10-02 14:00:01+00:00
\(\newcommand{\dealvcentcolon}{\mathrel{\mathop{:}}}\) \(\newcommand{\dealcoloneq}{\dealvcentcolon\mathrel{\mkern-1.2mu}=}\) \(\newcommand{\jump}[1]{\left[\!\left[ #1 \right]\!\right]}\) \(\newcommand{\average}[1]{\left\{\!\left\{ #1 \right\}\!\right\}}\)
Loading...
Searching...
No Matches
mapping_q_cache.h
Go to the documentation of this file.
1// -----------------------------------------------------------------------------
2//
3// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception OR LGPL-2.1-or-later
4// Copyright (C) 2019 - 2025 by the deal.II authors
5//
6// This file is part of the deal.II library.
7//
8// Detailed license information governing the source code and contributions
9// can be found in LICENSE.md and CONTRIBUTING.md at the top level directory.
10//
11// -----------------------------------------------------------------------------
12
13#ifndef dealii_mapping_q_cache_h
14#define dealii_mapping_q_cache_h
15
16
17#include <deal.II/base/config.h>
18
21
23
24#include <deal.II/grid/tria.h>
25
26#include <boost/container/small_vector.hpp>
27#include <boost/signals2/connection.hpp>
28
29
31
32// Forward declarations
33#ifndef DOXYGEN
34template <int dim, int spacedim>
36class DoFHandler;
37#endif
38
39
53template <int dim, int spacedim = dim>
54class MappingQCache : public MappingQ<dim, spacedim>
55{
56public:
62 explicit MappingQCache(const unsigned int polynomial_degree);
63
67 explicit MappingQCache(const MappingQCache<dim, spacedim> &mapping);
68
73
77 virtual std::unique_ptr<Mapping<dim, spacedim>>
78 clone() const override;
79
84 virtual bool
85 preserves_vertex_locations() const override;
86
94 void
96 const Triangulation<dim, spacedim> &triangulation);
97
119 void
120 initialize(const Triangulation<dim, spacedim> &triangulation,
121 const std::function<std::vector<Point<spacedim>>(
123 &compute_points_on_cell);
124
142 void
143 initialize(const Mapping<dim, spacedim> &mapping,
145 const std::function<Point<spacedim>(
147 const Point<spacedim> &)> &transformation_function,
148 const bool function_describes_relative_displacement);
149
153 void
154 initialize(const Mapping<dim, spacedim> &mapping,
156 const Function<spacedim> &transformation_function,
157 const bool function_describes_relative_displacement);
158
170 template <typename VectorType>
171 void
172 initialize(const Mapping<dim, spacedim> &mapping,
173 const DoFHandler<dim, spacedim> &dof_handler,
174 const VectorType &vector,
175 const bool vector_describes_relative_displacement);
176
188 template <typename VectorType>
189 void
190 initialize(const Mapping<dim, spacedim> &mapping,
191 const DoFHandler<dim, spacedim> &dof_handler,
192 const MGLevelObject<VectorType> &vectors,
193 const bool vector_describes_relative_displacement);
194
198 virtual boost::container::small_vector<Point<spacedim>,
199#ifndef _MSC_VER
200 ReferenceCells::max_n_vertices<dim>()
201#else
203#endif
204 >
206 const override;
207
211 std::size_t
212 memory_consumption() const;
213
214protected:
218 virtual void
221 boost::container::small_vector<Point<spacedim>, 200> &a) const override;
222
223private:
229 std::shared_ptr<std::vector<std::vector<std::vector<Point<spacedim>>>>>
231
236 boost::signals2::connection clear_signal;
237
243};
244
248
249#endif
std::shared_ptr< std::vector< std::vector< std::vector< Point< spacedim > > > > > support_point_cache
std::size_t memory_consumption() const
virtual bool preserves_vertex_locations() const override
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 std::unique_ptr< Mapping< dim, spacedim > > clone() const override
void initialize(const Mapping< dim, spacedim > &mapping, const Triangulation< dim, spacedim > &triangulation)
boost::signals2::connection clear_signal
virtual void compute_mapping_support_points(const typename Triangulation< dim, spacedim >::cell_iterator &cell, boost::container::small_vector< Point< spacedim >, 200 > &a) const override
friend class MappingQCache
Definition mapping_q.h:664
const unsigned int polynomial_degree
Definition mapping_q.h:510
Abstract base class for mapping classes.
Definition mapping.h:318
Definition point.h:111
#define DEAL_II_NAMESPACE_OPEN
Definition config.h:38
#define DEAL_II_CXX20_REQUIRES(condition)
Definition config.h:249
#define DEAL_II_NAMESPACE_CLOSE
Definition config.h:39