deal.II version GIT relicensing-2167-g9622207b8f 2024-11-21 12:40: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
Public Types | Public Member Functions | Private Attributes | List of all members
NonMatching::FaceQuadratureGenerator< dim > Class Template Reference

#include <deal.II/non_matching/quadrature_generator.h>

Inheritance diagram for NonMatching::FaceQuadratureGenerator< dim >:
Inheritance graph
[legend]

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
 

Detailed Description

template<int dim>
class NonMatching::FaceQuadratureGenerator< dim >

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.

Member Typedef Documentation

◆ AdditionalData

template<int dim>
using NonMatching::FaceQuadratureGenerator< dim >::AdditionalData = AdditionalQGeneratorData

Definition at line 305 of file quadrature_generator.h.

Constructor & Destructor Documentation

◆ FaceQuadratureGenerator()

template<int dim>
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.

Note
It is important that each 1d-quadrature rule in the hp::QCollection does not contain the points 0 and 1.

Definition at line 1903 of file quadrature_generator.cc.

Member Function Documentation

◆ clear_quadratures()

template<int dim>
void NonMatching::FaceQuadratureGenerator< dim >::clear_quadratures ( )

Clears the inside, outside and surface quadratures.

Definition at line 1913 of file quadrature_generator.cc.

◆ generate()

template<int dim>
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().

Note
Both value, gradient and hessian need to be implemented on the incoming function.

Definition at line 1923 of file quadrature_generator.cc.

◆ generate_append()

template<int dim>
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.

◆ get_inside_quadrature()

template<int dim>
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.

◆ get_outside_quadrature()

template<int dim>
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.

◆ get_surface_quadrature()

template<int dim>
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().

Note
The normal at the quadrature points will be parallel to \(\nabla \psi\).

Definition at line 2015 of file quadrature_generator.cc.

◆ set_1D_quadrature()

template<int dim>
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.

Member Data Documentation

◆ quadrature_generator

template<int dim>
QuadratureGenerator<dim - 1> NonMatching::FaceQuadratureGenerator< dim >::quadrature_generator
private

Lower-dimensional quadrature generator used to build the quadratures over the face.

Definition at line 391 of file quadrature_generator.h.

◆ surface_quadrature

template<int dim>
ImmersedSurfaceQuadrature<dim - 1, dim> NonMatching::FaceQuadratureGenerator< dim >::surface_quadrature
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.


The documentation for this class was generated from the following files: