deal.II version GIT relicensing-3132-g78fd2c863f 2025-04-24 02: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\}}\)
Loading...
Searching...
No Matches
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 combined_orientation);
140
153 DEAL_II_DEPRECATED_EARLY_WITH_COMMENT(
154 "Use the version of project_to_subface() which takes a "
155 "combined_orientation 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 a "
183 "combined_orientation 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 a "
206 "combined_orientation 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
226 static Quadrature<dim>
227 project_to_subface(const ReferenceCell &reference_cell,
228 const SubQuadrature &quadrature,
229 const unsigned int face_no,
230 const unsigned int subface_no,
231 const types::geometric_orientation combined_orientation,
232 const RefinementCase<dim - 1> &ref_case);
233
251 static Quadrature<dim>
252 project_to_all_faces(const ReferenceCell &reference_cell,
253 const hp::QCollection<dim - 1> &quadrature);
254
259 static Quadrature<dim>
260 project_to_all_faces(const ReferenceCell &reference_cell,
261 const Quadrature<dim - 1> &quadrature);
262
276 static Quadrature<dim>
278 const SubQuadrature &quadrature);
279
292 static Quadrature<dim>
293 project_to_child(const ReferenceCell &reference_cell,
294 const Quadrature<dim> &quadrature,
295 const unsigned int child_no);
296
308 static Quadrature<dim>
309 project_to_all_children(const ReferenceCell &reference_cell,
310 const Quadrature<dim> &quadrature);
311
316 static Quadrature<dim>
317 project_to_line(const ReferenceCell &reference_cell,
318 const Quadrature<1> &quadrature,
319 const Point<dim> &p1,
320 const Point<dim> &p2);
321
334 {
335 public:
342
349 static DataSetDescriptor
350 cell();
351
366 "Use the version of this function which takes a combined_orientation "
367 "argument instead.")
368 static DataSetDescriptor
369 face(const ReferenceCell &reference_cell,
370 const unsigned int face_no,
371 const bool face_orientation,
372 const bool face_flip,
373 const bool face_rotation,
374 const unsigned int n_quadrature_points);
375
384 static DataSetDescriptor
385 face(const ReferenceCell &reference_cell,
386 const unsigned int face_no,
387 const types::geometric_orientation combined_orientation,
388 const unsigned int n_quadrature_points);
389
399 "Use the version of this function which takes a combined_orientation "
400 "argument instead.")
401 static DataSetDescriptor
402 face(const ReferenceCell &reference_cell,
403 const unsigned int face_no,
404 const bool face_orientation,
405 const bool face_flip,
406 const bool face_rotation,
407 const hp::QCollection<dim - 1> &quadrature);
408
415 static DataSetDescriptor
416 face(const ReferenceCell &reference_cell,
417 const unsigned int face_no,
418 const types::geometric_orientation combined_orientation,
419 const hp::QCollection<dim - 1> &quadrature);
420
437 "Use the version of this function which takes a combined_orientation "
438 "argument instead.")
439 static DataSetDescriptor
440 subface(const ReferenceCell &reference_cell,
441 const unsigned int face_no,
442 const unsigned int subface_no,
443 const bool face_orientation,
444 const bool face_flip,
445 const bool face_rotation,
446 const unsigned int n_quadrature_points,
447 const internal::SubfaceCase<dim> ref_case =
449
462 static DataSetDescriptor
463 subface(const ReferenceCell &reference_cell,
464 const unsigned int face_no,
465 const unsigned int subface_no,
466 const types::geometric_orientation combined_orientation,
467 const unsigned int n_quadrature_points,
468 const internal::SubfaceCase<dim> ref_case =
470
477 operator unsigned int() const;
478
479 private:
483 const unsigned int dataset_offset;
484
489 DataSetDescriptor(const unsigned int dataset_offset);
490 };
491};
492
496// ------------------- inline and template functions ----------------
497
498
499
500template <int dim>
502 const unsigned int dataset_offset)
503 : dataset_offset(dataset_offset)
504{}
505
506
507template <int dim>
509 : dataset_offset(numbers::invalid_unsigned_int)
510{}
511
512
513
514template <int dim>
520
521
522
523template <int dim>
525{
526 return dataset_offset;
527}
528
529
530
531template <int dim>
533 const ReferenceCell &reference_cell,
534 const Quadrature<dim - 1> &quadrature)
535{
536 return project_to_all_faces(reference_cell,
537 hp::QCollection<dim - 1>(quadrature));
538}
539
540
541/* -------------- declaration of explicit specializations ------------- */
542
543#ifndef DOXYGEN
544
545
546template <>
547void
549 const Quadrature<0> &,
550 const unsigned int,
551 std::vector<Point<1>> &);
552template <>
553void
555 const Quadrature<1> &quadrature,
556 const unsigned int face_no,
557 std::vector<Point<2>> &q_points);
558template <>
559void
561 const Quadrature<2> &quadrature,
562 const unsigned int face_no,
563 std::vector<Point<3>> &q_points);
564
565template <>
566void
568 const Quadrature<0> &,
569 const unsigned int,
570 const unsigned int,
571 std::vector<Point<1>> &,
572 const RefinementCase<0> &);
573template <>
574void
576 const Quadrature<1> &quadrature,
577 const unsigned int face_no,
578 const unsigned int subface_no,
579 std::vector<Point<2>> &q_points,
580 const RefinementCase<1> &);
581template <>
582void
584 const Quadrature<2> &quadrature,
585 const unsigned int face_no,
586 const unsigned int subface_no,
587 std::vector<Point<3>> &q_points,
588 const RefinementCase<2> &face_ref_case);
589
590template <>
593 const Quadrature<0> &quadrature);
594
595
596#endif // DOXYGEN
598
599#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:334
const unsigned int dataset_offset
Definition qprojector.h:483
static DataSetDescriptor cell()
Definition qprojector.h:516
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_all_faces(const ReferenceCell &reference_cell, const hp::QCollection< dim - 1 > &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_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:282
#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