version 3.9-dev
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 >
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
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

◆ integrationPoint()

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

◆ 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
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

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