Doxygen API reference documentation for ideal.II
quadrature_lib.hh
1 // ---------------------------------------------------------------------
2 //
3 // Copyright (C) 2022 - 2023 by the ideal.II authors
4 //
5 // This file is part of the ideal.II library.
6 //
7 // The ideal.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 3.0 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 ideal.II.
13 //
14 // ---------------------------------------------------------------------
15 
16 #ifndef INCLUDE_IDEAL_II_BASE_QUADRATURE_LIB_HH_
17 #define INCLUDE_IDEAL_II_BASE_QUADRATURE_LIB_HH_
18 #include <ideal.II/base/spacetime_quadrature.hh>
19 
20 #include <deal.II/base/quadrature_lib.h>
21 
22 namespace idealii
23 {
24 
25 
26 
56  template <int dim>
57  class QGaussRadau : public dealii::Quadrature<dim>
58  {
59  public:
60  /*
61  * EndPoint is used to specify which of the two endpoints of the
62  * unit interval is used as quadrature point
63  */
64  enum EndPoint
65  {
73  right
74  };
75 
77  QGaussRadau(const unsigned int n, EndPoint end_point = QGaussRadau::left);
83  QGaussRadau(QGaussRadau<dim> &&) noexcept = default;
84 
85  private:
86  const EndPoint end_point;
87  };
88 
99  class QRightBox : public QGaussRadau<1>
100  {
101  public:
109  };
110 
120  class QLeftBox : public QGaussRadau<1>
121  {
122  public:
130  };
131 
132 
133  namespace spacetime
134  {
135 
141  template <int dim>
142  class QGauss : public Quadrature<dim>
143  {
144  public:
153  QGauss(unsigned int n_spatial, unsigned int n_temporal);
154  };
155 
162  template <int dim>
163  class QGaussRightBox : public Quadrature<dim>
164  {
165  public:
174  QGaussRightBox(unsigned int n_spatial);
175  };
182  template <int dim>
183  class QGaussLeftBox : public Quadrature<dim>
184  {
185  public:
194  QGaussLeftBox(unsigned int n_spatial);
195  };
196  } // namespace spacetime
197 } // namespace idealii
198 
199 #endif /* INCLUDE_IDEAL_II_BASE_QUADRATURE_LIB_HH_ */
Definition: quadrature_lib.hh:58
QGaussRadau(QGaussRadau< dim > &&) noexcept=default
QGaussRadau(const unsigned int n, EndPoint end_point=QGaussRadau::left)
Generate a formula wit n quadrature points.
EndPoint
Definition: quadrature_lib.hh:65
@ right
Definition: quadrature_lib.hh:73
@ left
Definition: quadrature_lib.hh:69
1D left box rule.
Definition: quadrature_lib.hh:121
QLeftBox()
Default constructor.
1D right box rule.
Definition: quadrature_lib.hh:100
QRightBox()
Default constructor.
A Gauss-Legende quadrature formula in space and left box rule in time.
Definition: quadrature_lib.hh:184
QGaussLeftBox(unsigned int n_spatial)
Generate a Gauss-Legende quadrature in space and a left box rule quadrature in time.
A Gauss-Legende quadrature formula in space and right box rule in time.
Definition: quadrature_lib.hh:164
QGaussRightBox(unsigned int n_spatial)
Generate a Gauss-Legende quadrature in space and a right box rule quadrature in time.
A Gauss-Legende quadrature formula in space and time.
Definition: quadrature_lib.hh:143
QGauss(unsigned int n_spatial, unsigned int n_temporal)
Generate a Gauss-Legendre quadrature in space and time.
The base class for quadrature formulae in space and time.
Definition: spacetime_quadrature.hh:35
The main namespace of the project.
Definition: idealii.hh:21