Loading [MathJax]/extensions/TeX/newcommand.js
 deal.II version GIT relicensing-3075-gc235bd4825 2025-04-15 08:10: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
qprojector.h
Go to the documentation of this file.
1// ------------------------------------------------------------------------
2//
3// SPDX-License-Identifier: LGPL-2.1-or-later
4// Copyright (C) 2005 - 2024 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_qprojector_h
16#define dealii_qprojector_h
17
18
19#include <deal.II/base/config.h>
20
23
25
27
28#ifndef DOXYGEN
29class ReferenceCell;
30#endif
31
67template <int dim>
69{
70public:
75 using SubQuadrature = Quadrature<dim - 1>;
76
85 DEAL_II_DEPRECATED_EARLY_WITH_COMMENT(
86 "Use the version of this function which takes a combined_orientation "
87 "argument instead.")
88 static void
89 project_to_face(const ReferenceCell &reference_cell,
90 const SubQuadrature &quadrature,
91 const unsigned int face_no,
92 std::vector<Point<dim>> &q_points);
93
102 DEAL_II_DEPRECATED_EARLY_WITH_COMMENT(
103 "Use the version of this function which takes a combined_orientation "
104 "argument instead.")
105 static Quadrature<dim>
106 project_to_face(const ReferenceCell &reference_cell,
107 const SubQuadrature &quadrature,
108 const unsigned int face_no);
109
119 DEAL_II_DEPRECATED_EARLY_WITH_COMMENT(
120 "Use the version of project_to_face() which takes a combined_orientation "
121 "argument instead.")
122 static Quadrature<dim>
123 project_to_oriented_face(const ReferenceCell &reference_cell,
124 const SubQuadrature &quadrature,
125 const unsigned int face_no,
126 const bool face_orientation,
127 const bool face_flip,
128 const bool face_rotation);
129
135 static Quadrature<dim>
136 project_to_face(const ReferenceCell &reference_cell,
137 const SubQuadrature &quadrature,
138 const unsigned int face_no,
139 const types::geometric_orientation orientation);
140
153 DEAL_II_DEPRECATED_EARLY_WITH_COMMENT(
154 "Use the version of project_to_subface() which takes an orientation "
155 "argument instead.")
156 static void
157 project_to_subface(const ReferenceCell &reference_cell,
158 const SubQuadrature &quadrature,
159 const unsigned int face_no,
160 const unsigned int subface_no,
161 std::vector<Point<dim>> &q_points,
162 const RefinementCase<dim - 1> &ref_case =
164
181 DEAL_II_DEPRECATED_EARLY_WITH_COMMENT(
182 "Use the version of project_to_subface() which takes an orientation "
183 "argument instead.")
184 static Quadrature<dim>
185 project_to_subface(const ReferenceCell &reference_cell,
186 const SubQuadrature &quadrature,
187 const unsigned int face_no,
188 const unsigned int subface_no,
189 const RefinementCase<dim - 1> &ref_case =
191
204 DEAL_II_DEPRECATED_EARLY_WITH_COMMENT(
205 "Use the version of project_to_subface() which takes an orientation "
206 "argument instead.")
207 static Quadrature<dim>
208 project_to_oriented_subface(const ReferenceCell &reference_cell,
209 const SubQuadrature &quadrature,
210 const unsigned int face_no,
211 const unsigned int subface_no,
212 const bool face_orientation,
213 const bool face_flip,
214 const bool face_rotation,
215 const internal::SubfaceCase<dim> ref_case);
216
229 DEAL_II_DEPRECATED_EARLY_WITH_COMMENT(
230 "Use the version of project_to_subface() which takes an orientation "
231 "argument instead.")
232 static Quadrature<dim>
233 project_to_subface(const ReferenceCell &reference_cell,
234 const SubQuadrature &quadrature,
235 const unsigned int face_no,
236 const unsigned int subface_no,
237 const types::geometric_orientation orientation,
238 const RefinementCase<dim - 1> &ref_case);
239
257 static Quadrature<dim>
258 project_to_all_faces(const ReferenceCell &reference_cell,
259 const hp::QCollection<dim - 1> &quadrature);
260
265 static Quadrature<dim>
266 project_to_all_faces(const ReferenceCell &reference_cell,
267 const Quadrature<dim - 1> &quadrature);
268
282 static Quadrature<dim>
284 const SubQuadrature &quadrature);
285
298 static Quadrature<dim>
299 project_to_child(const ReferenceCell &reference_cell,
300 const Quadrature<dim> &quadrature,
301 const unsigned int child_no);
302
314 static Quadrature<dim>
315 project_to_all_children(const ReferenceCell &reference_cell,
316 const Quadrature<dim> &quadrature);
317
322 static Quadrature<dim>
323 project_to_line(const ReferenceCell &reference_cell,
324 const Quadrature<1> &quadrature,
325 const Point<dim> &p1,
326 const Point<dim> &p2);
327
340 {
341 public:
348
355 static DataSetDescriptor
356 cell();
357
372 "Use the version of this function which takes a combined_orientation "
373 "argument instead.")
374 static DataSetDescriptor
375 face(const ReferenceCell &reference_cell,
376 const unsigned int face_no,
377 const bool face_orientation,
378 const bool face_flip,
379 const bool face_rotation,
380 const unsigned int n_quadrature_points);
381
390 static DataSetDescriptor
391 face(const ReferenceCell &reference_cell,
392 const unsigned int face_no,
393 const types::geometric_orientation combined_orientation,
394 const unsigned int n_quadrature_points);
395
405 "Use the version of this function which takes a combined_orientation "
406 "argument instead.")
407 static DataSetDescriptor
408 face(const ReferenceCell &reference_cell,
409 const unsigned int face_no,
410 const bool face_orientation,
411 const bool face_flip,
412 const bool face_rotation,
413 const hp::QCollection<dim - 1> &quadrature);
414
421 static DataSetDescriptor
422 face(const ReferenceCell &reference_cell,
423 const unsigned int face_no,
424 const types::geometric_orientation combined_orientation,
425 const hp::QCollection<dim - 1> &quadrature);
426
443 "Use the version of this function which takes a combined_orientation "
444 "argument instead.")
445 static DataSetDescriptor
446 subface(const ReferenceCell &reference_cell,
447 const unsigned int face_no,
448 const unsigned int subface_no,
449 const bool face_orientation,
450 const bool face_flip,
451 const bool face_rotation,
452 const unsigned int n_quadrature_points,
453 const internal::SubfaceCase<dim> ref_case =
455
468 static DataSetDescriptor
469 subface(const ReferenceCell &reference_cell,
470 const unsigned int face_no,
471 const unsigned int subface_no,
472 const types::geometric_orientation combined_orientation,
473 const unsigned int n_quadrature_points,
474 const internal::SubfaceCase<dim> ref_case =
476
483 operator unsigned int() const;
484
485 private:
489 const unsigned int dataset_offset;
490
495 DataSetDescriptor(const unsigned int dataset_offset);
496 };
497};
498
502// ------------------- inline and template functions ----------------
503
504
505
506template <int dim>
508 const unsigned int dataset_offset)
509 : dataset_offset(dataset_offset)
510{}
511
512
513template <int dim>
515 : dataset_offset(numbers::invalid_unsigned_int)
516{}
517
518
519
520template <int dim>
526
527
528
529template <int dim>
531{
532 return dataset_offset;
533}
534
535
536
537template <int dim>
539 const ReferenceCell &reference_cell,
540 const Quadrature<dim - 1> &quadrature)
541{
542 return project_to_all_faces(reference_cell,
543 hp::QCollection<dim - 1>(quadrature));
544}
545
546
547/* -------------- declaration of explicit specializations ------------- */
548
549#ifndef DOXYGEN
550
551
552template <>
553void
555 const Quadrature<0> &,
556 const unsigned int,
557 std::vector<Point<1>> &);
558template <>
559void
561 const Quadrature<1> &quadrature,
562 const unsigned int face_no,
563 std::vector<Point<2>> &q_points);
564template <>
565void
567 const Quadrature<2> &quadrature,
568 const unsigned int face_no,
569 std::vector<Point<3>> &q_points);
570
571template <>
574 const hp::QCollection<0> &quadrature);
575
576
577template <>
578void
580 const Quadrature<0> &,
581 const unsigned int,
582 const unsigned int,
583 std::vector<Point<1>> &,
584 const RefinementCase<0> &);
585template <>
586void
588 const Quadrature<1> &quadrature,
589 const unsigned int face_no,
590 const unsigned int subface_no,
591 std::vector<Point<2>> &q_points,
592 const RefinementCase<1> &);
593template <>
594void
596 const Quadrature<2> &quadrature,
597 const unsigned int face_no,
598 const unsigned int subface_no,
599 std::vector<Point<3>> &q_points,
600 const RefinementCase<2> &face_ref_case);
601
602template <>
605 const Quadrature<0> &quadrature);
606
607
608#endif // DOXYGEN
610
611#endif
Definition point.h:113
Class storing the offset index into a Quadrature rule created by project_to_all_faces() or project_to...
Definition qprojector.h:340
const unsigned int dataset_offset
Definition qprojector.h:489
static DataSetDescriptor cell()
Definition qprojector.h:522
static DataSetDescriptor subface(const ReferenceCell &reference_cell, const unsigned int face_no, const unsigned int subface_no, const types::geometric_orientation combined_orientation, const unsigned int n_quadrature_points, const internal::SubfaceCase< dim > ref_case=internal::SubfaceCase< dim >::case_isotropic)
Class which transforms dim - 1-dimensional quadrature rules to dim-dimensional face quadratures.
Definition qprojector.h:69
static Quadrature< dim > project_to_all_subfaces(const ReferenceCell &reference_cell, const SubQuadrature &quadrature)
static Quadrature< dim > project_to_child(const ReferenceCell &reference_cell, const Quadrature< dim > &quadrature, const unsigned int child_no)
static Quadrature< dim > project_to_oriented_subface(const ReferenceCell &reference_cell, const SubQuadrature &quadrature, const unsigned int face_no, const unsigned int subface_no, const bool face_orientation, const bool face_flip, const bool face_rotation, const internal::SubfaceCase< dim > ref_case)
static Quadrature< dim > project_to_all_faces(const ReferenceCell &reference_cell, const hp::QCollection< dim - 1 > &quadrature)
static Quadrature< dim > project_to_oriented_face(const ReferenceCell &reference_cell, const SubQuadrature &quadrature, const unsigned int face_no, const bool face_orientation, const bool face_flip, const bool face_rotation)
static Quadrature< dim > project_to_line(const ReferenceCell &reference_cell, const Quadrature< 1 > &quadrature, const Point< dim > &p1, const Point< dim > &p2)
static void project_to_subface(const ReferenceCell &reference_cell, const SubQuadrature &quadrature, const unsigned int face_no, const unsigned int subface_no, std::vector< Point< dim > > &q_points, const RefinementCase< dim - 1 > &ref_case=RefinementCase< dim - 1 >::isotropic_refinement)
static Quadrature< dim > project_to_all_children(const ReferenceCell &reference_cell, const Quadrature< dim > &quadrature)
static void project_to_face(const ReferenceCell &reference_cell, const SubQuadrature &quadrature, const unsigned int face_no, std::vector< Point< dim > > &q_points)
#define DEAL_II_NAMESPACE_OPEN
Definition config.h:35
#define DEAL_II_DEPRECATED_WITH_COMMENT(comment)
Definition config.h:281
#define DEAL_II_NAMESPACE_CLOSE
Definition config.h:36
Definition hp.h:117
STL namespace.
Definition types.h:32
unsigned char geometric_orientation
Definition types.h:40