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

Helper class to integrate over a cylinder domain. More...

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

Description

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

Helper class to integrate over a cylinder domain.

Note
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 creates (almost) evenly spaced area elements on a circle and extrudes this pattern into a cylinder. Each sub-cell is an integration point with constant ansatz on the sub-cell (lowest order integration formula). Hence to improve the quality of the integral, increase the sample size.
The volume integral of a constant function is exact See Beckers & Beckers (2012) doi:10.1016/j.comgeo.2012.01.011 for circle distribution and T. Koch PhD thesis (2020), Section 7.2.4.

Public Member Functions

 CylinderIntegration (const Scalar rStep)
 Constructor. More...
 
 CylinderIntegration (const Scalar rStep, const Scalar zStep)
 Constructor. More...
 
void setGeometry (const GlobalPosition &bottomCenter, const GlobalPosition &topCenter, const Scalar radius, int verbosity=0)
 Set the geometry of the cylinder. More...
 
Scalar integrationElement (std::size_t i) const
 The integration element of the ith integration point. More...
 
const GlobalPosition & integrationPoint (std::size_t i) const
 The ith integration point. More...
 
std::size_t size () const
 The number of integration points. More...
 

Constructor & Destructor Documentation

◆ CylinderIntegration() [1/2]

template<class Scalar >
Dumux::EmbeddedCoupling::CylinderIntegration< Scalar >::CylinderIntegration ( const Scalar  rStep)
inline

Constructor.

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

◆ CylinderIntegration() [2/2]

template<class Scalar >
Dumux::EmbeddedCoupling::CylinderIntegration< Scalar >::CylinderIntegration ( const Scalar  rStep,
const Scalar  zStep 
)
inline

Constructor.

Parameters
rStepcharacteristic relative integration length in r-direction (positive real number between 0 and 1)
zStepcharacteristic relative integration length in z-direction (positive real number between 0 and 1)
Note
Use this constructor to achieve a non-balanced (away from 1) aspect ratio between r and z-direction

Member Function Documentation

◆ integrationElement()

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

The integration element of the ith integration point.

◆ integrationPoint()

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

The ith integration point.

◆ setGeometry()

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

Set the geometry of the cylinder.

Parameters
bottomCenterbottom center position
topCentertop center position
radiuscylinder radius
verbositythe verbosity level (default: 0 -> no terminal output)

◆ size()

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

The number of integration points.


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