Loading [MathJax]/extensions/TeX/newcommand.js
 deal.II version GIT relicensing-2684-gc61376a70f 2025-02-22 15:30:00+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\}}
All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Modules Pages Concepts
mapping_q_cache.h
Go to the documentation of this file.
1// ------------------------------------------------------------------------
2//
3// SPDX-License-Identifier: LGPL-2.1-or-later
4// Copyright (C) 2019 - 2023 by the deal.II authors
5//
6// This file is part of the deal.II library.
7//
8// Part of the source code is dual licensed under Apache-2.0 WITH
9// LLVM-exception OR LGPL-2.1-or-later. Detailed license information
10// governing the source code and code contributions can be found in
11// LICENSE.md and CONTRIBUTING.md at the top level directory of deal.II.
12//
13// ------------------------------------------------------------------------
14
15#ifndef dealii_mapping_q_cache_h
16#define dealii_mapping_q_cache_h
17
18
19#include <deal.II/base/config.h>
20
23
25
26#include <deal.II/grid/tria.h>
27
28#include <boost/container/small_vector.hpp>
29#include <boost/signals2/connection.hpp>
30
31
33
34// Forward declarations
35#ifndef DOXYGEN
36template <int dim, int spacedim>
38class DoFHandler;
39#endif
40
41
55template <int dim, int spacedim = dim>
56class MappingQCache : public MappingQ<dim, spacedim>
57{
58public:
64 explicit MappingQCache(const unsigned int polynomial_degree);
65
69 explicit MappingQCache(const MappingQCache<dim, spacedim> &mapping);
70
75
79 virtual std::unique_ptr<Mapping<dim, spacedim>>
80 clone() const override;
81
86 virtual bool
87 preserves_vertex_locations() const override;
88
96 void
99
121 void
123 const std::function<std::vector<Point<spacedim>>(
125 &compute_points_on_cell);
126
144 void
145 initialize(const Mapping<dim, spacedim> &mapping,
147 const std::function<Point<spacedim>(
149 const Point<spacedim> &)> &transformation_function,
150 const bool function_describes_relative_displacement);
151
155 void
156 initialize(const Mapping<dim, spacedim> &mapping,
158 const Function<spacedim> &transformation_function,
159 const bool function_describes_relative_displacement);
160
172 template <typename VectorType>
173 void
174 initialize(const Mapping<dim, spacedim> &mapping,
175 const DoFHandler<dim, spacedim> &dof_handler,
176 const VectorType &vector,
177 const bool vector_describes_relative_displacement);
178
190 template <typename VectorType>
191 void
192 initialize(const Mapping<dim, spacedim> &mapping,
193 const DoFHandler<dim, spacedim> &dof_handler,
194 const MGLevelObject<VectorType> &vectors,
195 const bool vector_describes_relative_displacement);
196
200 virtual boost::container::small_vector<Point<spacedim>,
201#ifndef _MSC_VER
202 ReferenceCells::max_n_vertices<dim>()
203#else
205#endif
206 >
208 const override;
209
213 std::size_t
214 memory_consumption() const;
215
216protected:
220 virtual std::vector<Point<spacedim>>
223 const override;
224
225private:
231 std::shared_ptr<std::vector<std::vector<std::vector<Point<spacedim>>>>>
233
238 boost::signals2::connection clear_signal;
239
245};
246
250
251#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 std::vector< Point< spacedim > > compute_mapping_support_points(const typename Triangulation< dim, spacedim >::cell_iterator &cell) 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
friend class MappingQCache
Definition mapping_q.h:672
const unsigned int polynomial_degree
Definition mapping_q.h:515
Abstract base class for mapping classes.
Definition mapping.h:320
Definition point.h:113
#define DEAL_II_NAMESPACE_OPEN
Definition config.h:522
#define DEAL_II_CXX20_REQUIRES(condition)
Definition config.h:194
#define DEAL_II_NAMESPACE_CLOSE
Definition config.h:523
const ::parallel::distributed::Triangulation< dim, spacedim > * triangulation