ViennaLS
Loading...
Searching...
No Matches
viennals::CompareCriticalDimensions< T, D > Class Template Reference

Compares critical dimensions (surface positions) between two level sets. Critical dimensions are defined as the maximum or minimum positions where the surface (SDF = 0) exists within a specified range. More...

#include <lsCompareCriticalDimensions.hpp>

Public Member Functions

 CompareCriticalDimensions ()
 CompareCriticalDimensions (SmartPointer< Domain< T, D > > passedLevelSetTarget, SmartPointer< Domain< T, D > > passedLevelSetSample)
void setLevelSetTarget (SmartPointer< Domain< T, D > > passedLevelSet)
void setLevelSetSample (SmartPointer< Domain< T, D > > passedLevelSet)
void addRange (int measureDimension, const std::array< T, D > &minBounds, const std::array< T, D > &maxBounds, bool findMaximum=true)
 Add a generic range specification.
void addXRange (T minX, T maxX, bool findMaximum=true)
 Add an X range to find maximum or minimum Y position.
void addYRange (T minY, T maxY, bool findMaximum=true)
 Add a Y range to find maximum or minimum X position.
void clearRanges ()
 Clear all range specifications.
void setOutputMesh (SmartPointer< Mesh< T > > passedMesh)
 Set the output mesh where critical dimension locations will be stored.
void apply ()
 Apply the comparison.
size_t getNumCriticalDimensions () const
 Get the number of critical dimensions compared.
bool getCriticalDimensionResult (size_t index, T &positionTarget, T &positionSample, T &difference) const
 Get a specific critical dimension result.
T getMeanDifference () const
 Get mean absolute difference across all valid critical dimensions.
T getMaxDifference () const
 Get maximum difference across all valid critical dimensions.
T getRMSE () const
 Get RMSE across all valid critical dimensions.
std::vector< TgetAllDifferences () const
 Get all valid results.

Detailed Description

template<class T, int D = 2>
class viennals::CompareCriticalDimensions< T, D >

Compares critical dimensions (surface positions) between two level sets. Critical dimensions are defined as the maximum or minimum positions where the surface (SDF = 0) exists within a specified range.

  • If X range is specified: finds Y coordinates where surface exists, then identifies max/min Y positions
  • If Y range is specified: finds X coordinates where surface exists, then identifies max/min X positions

The surface position is interpolated from grid points where the SDF crosses zero. Multiple ranges can be specified to compare different critical dimensions.

Note for the future: lsToDiskMesh could be used instead of lsToSurfaceMesh, which is probably more efficient but slightly less accurate.

Constructor & Destructor Documentation

◆ CompareCriticalDimensions() [1/2]

template<class T, int D = 2>
viennals::CompareCriticalDimensions< T, D >::CompareCriticalDimensions ( )
inline

◆ CompareCriticalDimensions() [2/2]

template<class T, int D = 2>
viennals::CompareCriticalDimensions< T, D >::CompareCriticalDimensions ( SmartPointer< Domain< T, D > > passedLevelSetTarget,
SmartPointer< Domain< T, D > > passedLevelSetSample )
inline

Member Function Documentation

◆ addRange()

template<class T, int D = 2>
void viennals::CompareCriticalDimensions< T, D >::addRange ( int measureDimension,
const std::array< T, D > & minBounds,
const std::array< T, D > & maxBounds,
bool findMaximum = true )
inline

Add a generic range specification.

◆ addXRange()

template<class T, int D = 2>
void viennals::CompareCriticalDimensions< T, D >::addXRange ( T minX,
T maxX,
bool findMaximum = true )
inline

Add an X range to find maximum or minimum Y position.

◆ addYRange()

template<class T, int D = 2>
void viennals::CompareCriticalDimensions< T, D >::addYRange ( T minY,
T maxY,
bool findMaximum = true )
inline

Add a Y range to find maximum or minimum X position.

◆ apply()

template<class T, int D = 2>
void viennals::CompareCriticalDimensions< T, D >::apply ( )
inline

Apply the comparison.

◆ clearRanges()

template<class T, int D = 2>
void viennals::CompareCriticalDimensions< T, D >::clearRanges ( )
inline

Clear all range specifications.

◆ getAllDifferences()

template<class T, int D = 2>
std::vector< T > viennals::CompareCriticalDimensions< T, D >::getAllDifferences ( ) const
inline

Get all valid results.

◆ getCriticalDimensionResult()

template<class T, int D = 2>
bool viennals::CompareCriticalDimensions< T, D >::getCriticalDimensionResult ( size_t index,
T & positionTarget,
T & positionSample,
T & difference ) const
inline

Get a specific critical dimension result.

◆ getMaxDifference()

template<class T, int D = 2>
T viennals::CompareCriticalDimensions< T, D >::getMaxDifference ( ) const
inline

Get maximum difference across all valid critical dimensions.

◆ getMeanDifference()

template<class T, int D = 2>
T viennals::CompareCriticalDimensions< T, D >::getMeanDifference ( ) const
inline

Get mean absolute difference across all valid critical dimensions.

◆ getNumCriticalDimensions()

template<class T, int D = 2>
size_t viennals::CompareCriticalDimensions< T, D >::getNumCriticalDimensions ( ) const
inline

Get the number of critical dimensions compared.

◆ getRMSE()

template<class T, int D = 2>
T viennals::CompareCriticalDimensions< T, D >::getRMSE ( ) const
inline

Get RMSE across all valid critical dimensions.

◆ setLevelSetSample()

template<class T, int D = 2>
void viennals::CompareCriticalDimensions< T, D >::setLevelSetSample ( SmartPointer< Domain< T, D > > passedLevelSet)
inline

◆ setLevelSetTarget()

template<class T, int D = 2>
void viennals::CompareCriticalDimensions< T, D >::setLevelSetTarget ( SmartPointer< Domain< T, D > > passedLevelSet)
inline

◆ setOutputMesh()

template<class T, int D = 2>
void viennals::CompareCriticalDimensions< T, D >::setOutputMesh ( SmartPointer< Mesh< T > > passedMesh)
inline

Set the output mesh where critical dimension locations will be stored.


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