Loading [MathJax]/extensions/TeX/AMSsymbols.js
 Reference documentation for deal.II version 9.2.0
\(\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
vector_tools_project.h
Go to the documentation of this file.
1 // ---------------------------------------------------------------------
2 //
3 // Copyright (C) 1998 - 2020 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.md at
12 // the top level directory of deal.II.
13 //
14 // ---------------------------------------------------------------------
15 
16 #ifndef dealii_vector_tools_project_h
17 #define dealii_vector_tools_project_h
18 
19 
20 #include <deal.II/base/config.h>
21 
22 #include <functional>
23 #include <memory>
24 
26 
27 template <typename number>
28 class AffineConstraints;
29 template <int dim, int spacedim>
30 class DoFHandler;
31 template <int dim, typename Number>
32 class Function;
33 template <int dim, int spacedim>
34 class Mapping;
35 template <int dim, typename number, typename VectorizedArrayType>
36 class MatrixFree;
37 template <int dim>
38 class Quadrature;
39 template <int dim>
40 class QGauss;
41 template <typename Number, std::size_t width>
42 class VectorizedArray;
43 namespace hp
44 {
45  template <int dim, int spacedim>
46  class DoFHandler;
47  template <int dim, int spacedim>
48  class MappingCollection;
49  template <int dim>
50  class QCollection;
51 } // namespace hp
52 
53 
54 namespace VectorTools
55 {
60 
141  template <int dim, typename VectorType, int spacedim>
142  void
143  project(const Mapping<dim, spacedim> & mapping,
144  const DoFHandler<dim, spacedim> & dof,
146  const Quadrature<dim> & quadrature,
148  VectorType & vec,
149  const bool enforce_zero_boundary = false,
150  const Quadrature<dim - 1> &q_boundary = (dim > 1 ?
151  QGauss<dim - 1>(2) :
153  const bool project_to_boundary_first = false);
154 
159  template <int dim, typename VectorType, int spacedim>
160  void
163  const Quadrature<dim> & quadrature,
165  VectorType & vec,
166  const bool enforce_zero_boundary = false,
167  const Quadrature<dim - 1> &q_boundary = (dim > 1 ?
168  QGauss<dim - 1>(2) :
170  const bool project_to_boundary_first = false);
171 
176  template <int dim, typename VectorType, int spacedim>
177  void
179  const hp::DoFHandler<dim, spacedim> & dof,
181  const hp::QCollection<dim> & quadrature,
183  VectorType & vec,
184  const bool enforce_zero_boundary = false,
186  dim > 1 ? QGauss<dim - 1>(2) : Quadrature<dim - 1>(0)),
187  const bool project_to_boundary_first = false);
188 
193  template <int dim, typename VectorType, int spacedim>
194  void
197  const hp::QCollection<dim> & quadrature,
199  VectorType & vec,
200  const bool enforce_zero_boundary = false,
202  dim > 1 ? QGauss<dim - 1>(2) : Quadrature<dim - 1>(0)),
203  const bool project_to_boundary_first = false);
204 
229  template <int dim, typename VectorType, int spacedim>
230  void
231  project(const Mapping<dim, spacedim> & mapping,
232  const DoFHandler<dim, spacedim> & dof,
234  const Quadrature<dim> & quadrature,
235  const std::function<typename VectorType::value_type(
237  const unsigned int)> & func,
238  VectorType & vec_result);
239 
268  template <int dim, typename VectorType>
269  void
270  project(
271  std::shared_ptr<
272  const MatrixFree<dim,
273  typename VectorType::value_type,
276  const unsigned int n_q_points_1d,
278  const unsigned int,
279  const unsigned int)> & func,
280  VectorType & vec_result,
281  const unsigned int fe_component = 0);
282 
287  template <int dim, typename VectorType>
288  void
289  project(
290  std::shared_ptr<
291  const MatrixFree<dim,
292  typename VectorType::value_type,
296  const unsigned int,
297  const unsigned int)> & func,
298  VectorType & vec_result,
299  const unsigned int fe_component = 0);
300 
301  // @}
302 
303 } // namespace VectorTools
304 
306 
307 #endif // dealii_vector_tools_project_h
DoFHandler::active_cell_iterator
typename ActiveSelector::active_cell_iterator active_cell_iterator
Definition: dof_handler.h:329
VectorType
VectorizedArray
Definition: vectorization.h:395
hp::QCollection
Definition: q_collection.h:48
VectorTools::project
void project(const Mapping< dim, spacedim > &mapping, const DoFHandler< dim, spacedim > &dof, const AffineConstraints< typename VectorType::value_type > &constraints, const Quadrature< dim > &quadrature, const Function< spacedim, typename VectorType::value_type > &function, VectorType &vec, const bool enforce_zero_boundary=false, const Quadrature< dim - 1 > &q_boundary=(dim > 1 ? QGauss< dim - 1 >(2) :Quadrature< dim - 1 >(0)), const bool project_to_boundary_first=false)
MatrixFree
Definition: matrix_free.h:117
hp::DoFHandler
Definition: dof_handler.h:203
DoFHandler
Definition: dof_handler.h:205
VectorTools
Definition: vector_tools.h:303
Mapping
Abstract base class for mapping classes.
Definition: mapping.h:302
DEAL_II_NAMESPACE_OPEN
#define DEAL_II_NAMESPACE_OPEN
Definition: config.h:358
hp::MappingCollection
Definition: mapping_collection.h:56
QGauss
Definition: quadrature_lib.h:40
AffineConstraints
Definition: affine_constraints.h:180
hp
Definition: hp.h:117
config.h
Function
Definition: function.h:151
DEAL_II_NAMESPACE_CLOSE
#define DEAL_II_NAMESPACE_CLOSE
Definition: config.h:359
Quadrature
Definition: quadrature.h:85