deal.II version GIT relicensing-2289-g1e5549a87a 2024-12-21 21:30:00+00:00
|
#include <deal.II/non_matching/quadrature_generator.h>
Public Types | |
using | AdditionalData = AdditionalQGeneratorData |
Public Member Functions | |
FaceQuadratureGenerator (const hp::QCollection< 1 > &quadratures1D, const AdditionalData &additional_data=AdditionalData()) | |
void | clear_quadratures () |
void | generate (const Function< dim > &level_set, const BoundingBox< dim > &box, const unsigned int face_index) |
void | generate_append (const Function< dim > &level_set, const BoundingBox< dim > &box, const unsigned int face_index) |
const Quadrature< dim - 1 > & | get_inside_quadrature () const |
const Quadrature< dim - 1 > & | get_outside_quadrature () const |
const ImmersedSurfaceQuadrature< dim - 1, dim > & | get_surface_quadrature () const |
void | set_1D_quadrature (const unsigned int q_index) |
Private Attributes | |
QuadratureGenerator< dim - 1 > | quadrature_generator |
ImmersedSurfaceQuadrature< dim - 1, dim > | surface_quadrature |
This class creates immersed quadrature rules over a face, \(F\), of a BoundingBox, when the domain is described by a level set function, \(\psi\).
In the same way as in the QuadratureGenerator class, this class generates quadrature rules to integrate over 3 different regions of the face, \(F \subset \mathbb{R}^{dim}\):
\[ N = \{x \in F : \psi(x) < 0 \}, \\ P = \{x \in F : \psi(x) > 0 \}, \\ S = \{x \in F : \psi(x) = 0 \}, \]
which are again referred to as the "inside", \(N\), "outside", \(P\), and "surface" region, \(S\). These type of quadrature rules are in general needed in immersed discontinuous Galerkin methods.
Under the hood, this class uses the QuadratureGenerator class to build these rules. This is done by restricting the dim-dimensional level set function to the face, thus creating a (dim-1)-dimensional level set function, \(\phi\). It then creates the (dim-1)-dimensional quadratures by calling QuadratureGenerator with \(\phi\). This means that what holds for the QuadratureGenerator class in general also holds for this class. In particular, if the 1d-quadrature that is used as base contains \(n\) points, the number of points will be proportional to \(n^{dim-1}\) in the in the inside/outside quadratures and to \(n^{dim-2}\) in the surface quadrature.
Definition at line 302 of file quadrature_generator.h.
using NonMatching::FaceQuadratureGenerator< dim >::AdditionalData = AdditionalQGeneratorData |
Definition at line 305 of file quadrature_generator.h.
NonMatching::FaceQuadratureGenerator< dim >::FaceQuadratureGenerator | ( | const hp::QCollection< 1 > & | quadratures1D, |
const AdditionalData & | additional_data = AdditionalData() |
||
) |
Constructor. Each Quadrature<1> in quadratures1d
can be chosen as base for generating the immersed quadrature rules.
Definition at line 1903 of file quadrature_generator.cc.
void NonMatching::FaceQuadratureGenerator< dim >::clear_quadratures | ( | ) |
Clears the inside, outside and surface quadratures.
Definition at line 1913 of file quadrature_generator.cc.
void NonMatching::FaceQuadratureGenerator< dim >::generate | ( | const Function< dim > & | level_set, |
const BoundingBox< dim > & | box, | ||
const unsigned int | face_index | ||
) |
Construct immersed quadratures rules for the incoming level set function on a given face of the BoundingBox.
To get the constructed quadratures, use the functions get_inside_quadrature(), get_outside_quadrature(), get_surface_quadrature().
Definition at line 1923 of file quadrature_generator.cc.
void NonMatching::FaceQuadratureGenerator< dim >::generate_append | ( | const Function< dim > & | level_set, |
const BoundingBox< dim > & | box, | ||
const unsigned int | face_index | ||
) |
Same as above but does not clear quadratures and appends it to the existing quadrature instead.
Definition at line 1935 of file quadrature_generator.cc.
const Quadrature< dim - 1 > & NonMatching::FaceQuadratureGenerator< dim >::get_inside_quadrature | ( | ) | const |
Return the quadrature rule for the region \(\{x \in F : \psi(x) < 0 \}\) created in the previous call to generate(). Here, \(F\) is the face of the BoundingBox passed to generate().
Definition at line 1998 of file quadrature_generator.cc.
const Quadrature< dim - 1 > & NonMatching::FaceQuadratureGenerator< dim >::get_outside_quadrature | ( | ) | const |
Return the quadrature rule for the region \(\{x \in F : \psi(x) > 0 \}\) created in the previous call to generate(). Here, \(F\) is the face of the BoundingBox passed to generate().
Definition at line 2006 of file quadrature_generator.cc.
const ImmersedSurfaceQuadrature< dim - 1, dim > & NonMatching::FaceQuadratureGenerator< dim >::get_surface_quadrature | ( | ) | const |
Return the quadrature rule for the region \(\{x \in F : \psi(x) = 0 \}\) created in the previous call to generate(). Here, \(F\) is the face of the BoundingBox passed to generate().
Definition at line 2015 of file quadrature_generator.cc.
void NonMatching::FaceQuadratureGenerator< dim >::set_1D_quadrature | ( | const unsigned int | q_index | ) |
Set which 1d-quadrature in the collection passed to the constructor should be used to create the immersed quadratures.
Definition at line 1989 of file quadrature_generator.cc.
|
private |
Lower-dimensional quadrature generator used to build the quadratures over the face.
Definition at line 391 of file quadrature_generator.h.
|
private |
The same surface quadrature as created by the quadrature_generator, but having dim-dimensional normals.
Definition at line 397 of file quadrature_generator.h.