3.4
DUNE for Multi-{Phase, Component, Scale, Physics, ...} flow and transport in porous media
Public Member Functions | List of all members
Dumux::EmbeddedCoupling::EllipticCylinderIntegration< Scalar > Class Template Reference

Helper class to integrate over an elliptic cylinder domain. More...

#include <dumux/multidomain/embedded/cylinderintegration.hh>

Description

template<class Scalar>
class Dumux::EmbeddedCoupling::EllipticCylinderIntegration< Scalar >

Helper class to integrate over an elliptic cylinder domain.

Note
The cylinder caps do not have to be orthogonal to the centerline axis but top and bottom cap are parallel planes
This is mostly useful if the integral is known and the integral mass has to be locally distributed to some non-matching domain
The algorithm is based on evenly spaced area elements with rejection sampling. To improve the quality of the integral, increase the sample size.
The volume integral of a constant function is exact See Koch et al. (2020) https://doi.org/10.1016/j.jcp.2020.109369

Public Member Functions

 EllipticCylinderIntegration (const Scalar relCharLength)
 Constructor. More...
 
void setGeometry (const GlobalPosition &bottomCenter, const GlobalPosition &topCenter, const GlobalPosition &firstAxis, const GlobalPosition &secondAxis, int verbosity=0)
 Set the geometry of elliptic cylinder. More...
 
Scalar integrationElement (std::size_t i) const
 obtain ith integration element More...
 
const GlobalPosition & integrationPoint (std::size_t i) const
 obtain ith integration point More...
 
std::size_t size () const
 number of samples points More...
 

Constructor & Destructor Documentation

◆ EllipticCylinderIntegration()

template<class Scalar >
Dumux::EmbeddedCoupling::EllipticCylinderIntegration< Scalar >::EllipticCylinderIntegration ( const Scalar  relCharLength)
inlineexplicit

Constructor.

Parameters
relCharLengthcharacteristic relative integration length (real number between 0 and 1)
Note
half the characteristic length means 2*2*2=8 times more integration points

Member Function Documentation

◆ integrationElement()

template<class Scalar >
Scalar Dumux::EmbeddedCoupling::EllipticCylinderIntegration< Scalar >::integrationElement ( std::size_t  i) const
inline

obtain ith integration element

◆ integrationPoint()

template<class Scalar >
const GlobalPosition & Dumux::EmbeddedCoupling::EllipticCylinderIntegration< Scalar >::integrationPoint ( std::size_t  i) const
inline

obtain ith integration point

◆ setGeometry()

template<class Scalar >
void Dumux::EmbeddedCoupling::EllipticCylinderIntegration< Scalar >::setGeometry ( const GlobalPosition &  bottomCenter,
const GlobalPosition &  topCenter,
const GlobalPosition &  firstAxis,
const GlobalPosition &  secondAxis,
int  verbosity = 0 
)
inline

Set the geometry of elliptic cylinder.

Parameters
bottomCenterbottom center position
topCentertop center position
firstAxisfirst ellipse axis (length corresponding to axis length)
secondAxissecond ellipse axis (length corresponding to axis length)
verbositythe verbosity level (default: 0 -> no terminal output)

◆ size()

template<class Scalar >
std::size_t Dumux::EmbeddedCoupling::EllipticCylinderIntegration< Scalar >::size ( ) const
inline

number of samples points


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