ViennaLS
Loading...
Searching...
No Matches
lsInternal Namespace Reference

Namespaces

namespace  advect
 

Classes

class  EnquistOsher
 Engquist osher integration scheme based on the upwind integration scheme. Offers high performance but lower accuracy for complex velocity fields. More...
 
class  FiniteDifferences
 
class  Graph
 
class  LaxFriedrichs
 Lax Friedrichs integration scheme with constant alpha value for dissipation. This alpha value should be fitted based on the results of the advection and passed to the advection Kernel. More...
 
class  LocalLaxFriedrichs
 Lax Friedrichs integration scheme, which uses a first neighbour stencil to calculate the alpha values for all neighbours. The largest alpha value is then chosen for dissipation. Slower than lsLocalLocalLaxFriedrichs or lsEngquistOsher but more reliable for complex velocity fields. More...
 
class  LocalLaxFriedrichsAnalytical
 Lax Friedrichs integration scheme, which uses alpha values provided by the user in getDissipationAlphas in lsVelocityField. If it is possible to derive analytical solutions for the velocityField and the alpha values, this integration scheme should be used and never otherwise. More...
 
class  LocalLocalLaxFriedrichs
 Lax Friedrichs integration scheme, which considers only the current point for alpha calculation. Faster than lsLocalLaxFriedrichs but not as accurate. More...
 
class  MarchingCubes
 Helper class for lsToSurfaceMesh. Should not be used directly. More...
 
class  StencilLocalLaxFriedrichsScalar
 Stencil Local Lax Friedrichs Integration Scheme. It uses a stencil of order around active points, in order to evaluate dissipation values for each point, taking into account the mathematical nature of the speed function. see Toifl et al., 2019. ISBN: 978-1-7281-0938-1; DOI: 10.1109/SISPAD.2019.8870443. More...
 

Enumerations

enum class  DifferentiationSchemeEnum : unsigned { FIRST_ORDER = 0 , SECOND_ORDER = 1 , WENO3 = 2 , WENO5 = 3 }
 

Functions

template<class It >
double squareSumSquare (It begin, It end)
 Returns the squared sum square for values in the range [start, end[.
 
template<class It >
double rootSumSquarePow3 (It begin, It end)
 Returns the root sum square to the 3rd power for values in the range [start, end[.
 
template<class T , std::size_t N>
double meanCurvature2D (std::array< T, N > funcValues)
 Mean curvature formula for implicit surfaces in 2D, the passed array should contain the function values in the following order: (F_x, F_y, F_z, F_xx, F_yy, F_zz, F_xy, F_yz, F_zx)
 
template<class T , std::size_t N>
double meanCurvature3D (std::array< T, N > funcValues)
 Mean curvature formula for implicit surfaces in 3D, the passed array should contain the function values in the following order: (F_x, F_y, F_z, F_xx, F_yy, F_zz, F_xy, F_yz, F_zx)
 
template<class T , std::size_t N>
double gaussianCurvature3D (std::array< T, N > funcValues)
 Gaussian curvature formula for implicit surfaces in 3D, the passed array should contain the function values in the following order: (F_x, F_y, F_z, F_xx, F_yy, F_zz, F_xy, F_yz, F_zx)
 
template<class It , class T = typename It::DomainType::hrleValueType>
std::array< T, 9 > smallStencilFromIterator (It &it, const double gridDelta)
 Fills an std::array with differential values calculated from neighbour values. This stencil only uses direct neighbours for fast calculation of the differentials.
 
template<class It , class T = typename It::DomainType::hrleValueType>
std::array< T, 9 > bigStencilFromIterator (It &it, const double gridDelta)
 Fills an std::array with differential values calculated from neighbour values. This stencil also uses diagonal neighbours to achieve a higher accuracy.
 
template<class It , class T = typename It::DomainType::hrleValueType>
T meanCurvature (It &it, bool bigStencil=false)
 Calculates the Mean Curvature of the level set function from a suitable hrle iterator. Requires an iterator that is big enough to calculate second order derivatives(e.g. hrleBoxIterator or hrleCartesianPlaneIterator)
 
template<class It , class T = typename It::DomainType::hrleValueType>
T gaussianCurvature (It &it, bool bigStencil=false)
 Calculates the Gaussian Curvature of the level set function from a suitable hrle iterator. Requires an iterator that is big enough to calculate second order derivatives(e.g. hrleBoxIterator or hrleCartesianPlaneIterator)
 

Enumeration Type Documentation

◆ DifferentiationSchemeEnum

enum class lsInternal::DifferentiationSchemeEnum : unsigned
strong
Enumerator
FIRST_ORDER 
SECOND_ORDER 
WENO3 
WENO5 

Function Documentation

◆ bigStencilFromIterator()

template<class It , class T = typename It::DomainType::hrleValueType>
std::array< T, 9 > lsInternal::bigStencilFromIterator ( It & it,
const double gridDelta )

Fills an std::array with differential values calculated from neighbour values. This stencil also uses diagonal neighbours to achieve a higher accuracy.

◆ gaussianCurvature()

template<class It , class T = typename It::DomainType::hrleValueType>
T lsInternal::gaussianCurvature ( It & it,
bool bigStencil = false )

Calculates the Gaussian Curvature of the level set function from a suitable hrle iterator. Requires an iterator that is big enough to calculate second order derivatives(e.g. hrleBoxIterator or hrleCartesianPlaneIterator)

◆ gaussianCurvature3D()

template<class T , std::size_t N>
double lsInternal::gaussianCurvature3D ( std::array< T, N > funcValues)

Gaussian curvature formula for implicit surfaces in 3D, the passed array should contain the function values in the following order: (F_x, F_y, F_z, F_xx, F_yy, F_zz, F_xy, F_yz, F_zx)

◆ meanCurvature()

template<class It , class T = typename It::DomainType::hrleValueType>
T lsInternal::meanCurvature ( It & it,
bool bigStencil = false )

Calculates the Mean Curvature of the level set function from a suitable hrle iterator. Requires an iterator that is big enough to calculate second order derivatives(e.g. hrleBoxIterator or hrleCartesianPlaneIterator)

◆ meanCurvature2D()

template<class T , std::size_t N>
double lsInternal::meanCurvature2D ( std::array< T, N > funcValues)

Mean curvature formula for implicit surfaces in 2D, the passed array should contain the function values in the following order: (F_x, F_y, F_z, F_xx, F_yy, F_zz, F_xy, F_yz, F_zx)

◆ meanCurvature3D()

template<class T , std::size_t N>
double lsInternal::meanCurvature3D ( std::array< T, N > funcValues)

Mean curvature formula for implicit surfaces in 3D, the passed array should contain the function values in the following order: (F_x, F_y, F_z, F_xx, F_yy, F_zz, F_xy, F_yz, F_zx)

◆ rootSumSquarePow3()

template<class It >
double lsInternal::rootSumSquarePow3 ( It begin,
It end )

Returns the root sum square to the 3rd power for values in the range [start, end[.

◆ smallStencilFromIterator()

template<class It , class T = typename It::DomainType::hrleValueType>
std::array< T, 9 > lsInternal::smallStencilFromIterator ( It & it,
const double gridDelta )

Fills an std::array with differential values calculated from neighbour values. This stencil only uses direct neighbours for fast calculation of the differentials.

◆ squareSumSquare()

template<class It >
double lsInternal::squareSumSquare ( It begin,
It end )

Returns the squared sum square for values in the range [start, end[.