SWMMVis  6.0.0-alpha.4
Qt6/C++ GIS-based graphical user interface for the SWMMVis engine (6.0.0-alpha.4)
Loading...
Searching...
No Matches
meshkit::BasicConstrainedDelaunay< Storage >::QualityOptions Struct Reference

Options for refineQuality(). More...

#include <cdt.hpp>

Collaboration diagram for meshkit::BasicConstrainedDelaunay< Storage >::QualityOptions:

Public Attributes

std::function< double(double, double)> hAt
 
std::function< double(const Point *)> maximumAreaForTriangle
 
double maximumAdjacentRatio = 0
 
std::function< double(int, int)> fixedNeighbourSize
 
int sizingRepairPasses = 0
 
int maximumSizingRepairInsertions = 200000
 
std::function< double(const Point *, const double *, Point *)> terrainError
 
std::function< double(double, double)> terrainElevationAt
 
double terrainTolerance = 0.0
 
std::function< double(const Box &)> terrainToleranceForFootprint
 Positive immutable full-footprint tolerance; invalid means unknown.
 
double terrainMinSpacing = 0.0
 
bool terrainWorstFirst = false
 
bool terrainFinalCheck = true
 
int smoothingPasses = 0
 
int coarsenPasses = 0
 Maximum attempts per free vertex; 0 = off.
 
CoarseningOrder coarseningOrder = CoarseningOrder::LegacyFlatness
 
std::function< double(const Box &)> coarseningTargetSize
 Prescribed size; zero means unbounded, never evolving geometry.
 
double coarseningReferenceSize = 10
 
double normalVerticalToXY = 1
 
std::function< bool(const Point &)> protectedLocation
 
Set< int > protectedVertices
 Additional template vertices to retain.
 
std::function< double(const Point *, const double *)> terrainErrorBound
 
bool prioritizeQuality = true
 
int maxTriangles = std::numeric_limits<int>::max()
 
double minAngleDeg = 30.0
 
int maxInsertions = std::numeric_limits<int>::max()
 
double minEdge = 0.0
 
std::function< bool()> cancelled
 
std::function< void(const GenerationProgress &)> onProgress
 

Detailed Description

template<class Storage>
struct meshkit::BasicConstrainedDelaunay< Storage >::QualityOptions

Options for refineQuality().

Member Data Documentation

◆ cancelled

template<class Storage >
std::function<bool()> meshkit::BasicConstrainedDelaunay< Storage >::QualityOptions::cancelled

Polled every 4096 insertions; returning true stops refinement.

◆ coarseningOrder

template<class Storage >
CoarseningOrder meshkit::BasicConstrainedDelaunay< Storage >::QualityOptions::coarseningOrder = CoarseningOrder::LegacyFlatness

◆ coarseningReferenceSize

template<class Storage >
double meshkit::BasicConstrainedDelaunay< Storage >::QualityOptions::coarseningReferenceSize = 10

◆ coarseningTargetSize

template<class Storage >
std::function<double(const Box &)> meshkit::BasicConstrainedDelaunay< Storage >::QualityOptions::coarseningTargetSize

Prescribed size; zero means unbounded, never evolving geometry.

◆ coarsenPasses

template<class Storage >
int meshkit::BasicConstrainedDelaunay< Storage >::QualityOptions::coarsenPasses = 0

Maximum attempts per free vertex; 0 = off.

◆ fixedNeighbourSize

template<class Storage >
std::function<double(int, int)> meshkit::BasicConstrainedDelaunay< Storage >::QualityOptions::fixedNeighbourSize

◆ hAt

template<class Storage >
std::function<double(double, double)> meshkit::BasicConstrainedDelaunay< Storage >::QualityOptions::hAt

Target edge length h at (x, y): a triangle is split when its area exceeds the equilateral triangle of side h(centroid). Null, or <= 0 at a point, = no size bound there.

◆ maximumAdjacentRatio

template<class Storage >
double meshkit::BasicConstrainedDelaunay< Storage >::QualityOptions::maximumAdjacentRatio = 0

◆ maximumAreaForTriangle

template<class Storage >
std::function<double(const Point *)> meshkit::BasicConstrainedDelaunay< Storage >::QualityOptions::maximumAreaForTriangle

◆ maximumSizingRepairInsertions

template<class Storage >
int meshkit::BasicConstrainedDelaunay< Storage >::QualityOptions::maximumSizingRepairInsertions = 200000

◆ maxInsertions

template<class Storage >
int meshkit::BasicConstrainedDelaunay< Storage >::QualityOptions::maxInsertions = std::numeric_limits<int>::max()

Safety cap on inserted vertices (segment splits included).

◆ maxTriangles

template<class Storage >
int meshkit::BasicConstrainedDelaunay< Storage >::QualityOptions::maxTriangles = std::numeric_limits<int>::max()

◆ minAngleDeg

template<class Storage >
double meshkit::BasicConstrainedDelaunay< Storage >::QualityOptions::minAngleDeg = 30.0

Smallest angle every triangle must reach (degrees); 0 = size only. High bounds can exhaust the resource/cascade limits; no termination guarantee is implied by the practical 33-degree UI limit.

◆ minEdge

template<class Storage >
double meshkit::BasicConstrainedDelaunay< Storage >::QualityOptions::minEdge = 0.0

Floor against refinement cascades (an angle bound near the limit on an awkward input can otherwise shrink edges towards rounding error): a triangle whose shortest edge is below this is not split for its angle, and a subsegment shorter than twice this is not split. 0 = none.

◆ normalVerticalToXY

template<class Storage >
double meshkit::BasicConstrainedDelaunay< Storage >::QualityOptions::normalVerticalToXY = 1

◆ onProgress

template<class Storage >
std::function<void(const GenerationProgress &)> meshkit::BasicConstrainedDelaunay< Storage >::QualityOptions::onProgress

Advisory typed counters at bounded checkpoints; no topology scans. Callback must not throw or reenter the kernel.

◆ prioritizeQuality

template<class Storage >
bool meshkit::BasicConstrainedDelaunay< Storage >::QualityOptions::prioritizeQuality = true

◆ protectedLocation

template<class Storage >
std::function<bool(const Point &)> meshkit::BasicConstrainedDelaunay< Storage >::QualityOptions::protectedLocation

◆ protectedVertices

template<class Storage >
Set<int> meshkit::BasicConstrainedDelaunay< Storage >::QualityOptions::protectedVertices

Additional template vertices to retain.

◆ sizingRepairPasses

template<class Storage >
int meshkit::BasicConstrainedDelaunay< Storage >::QualityOptions::sizingRepairPasses = 0

◆ smoothingPasses

template<class Storage >
int meshkit::BasicConstrainedDelaunay< Storage >::QualityOptions::smoothingPasses = 0

Passes of non-degrading smoothing after size and angle refinement: each free vertex (inserted after build(), on no constraint) moves to the area-weighted centroid of its star when that raises the star's worst angle, then the star is made Delaunay again. Runs before terrain points are placed (with terrainWorstFirst, or without terrain). 0 = off.

◆ terrainElevationAt

template<class Storage >
std::function<double(double, double)> meshkit::BasicConstrainedDelaunay< Storage >::QualityOptions::terrainElevationAt

◆ terrainError

template<class Storage >
std::function<double(const Point *, const double *, Point *)> meshkit::BasicConstrainedDelaunay< Storage >::QualityOptions::terrainError

Actual surface error at the reference DEM samples covered by a triangle. Return a failing residual and its source point; NaN means unverified coverage. Elevations are cached per vertex.

◆ terrainErrorBound

template<class Storage >
std::function<double(const Point *, const double *)> meshkit::BasicConstrainedDelaunay< Storage >::QualityOptions::terrainErrorBound

Certified maximum residual INCLUDING coverage, unlike terrainError's refinement witness. Return NaN for unknown coverage. Required for coarsening with terrain; absent means skip coarsening safely.

◆ terrainFinalCheck

template<class Storage >
bool meshkit::BasicConstrainedDelaunay< Storage >::QualityOptions::terrainFinalCheck = true

After refinement, measure every live triangle's terrain error for Report::terrainUnresolved / terrainUnknown / maxTerrainError. A full exact read of the DEM; false leaves those counts at zero for a caller that verifies the finished mesh itself.

◆ terrainMinSpacing

template<class Storage >
double meshkit::BasicConstrainedDelaunay< Storage >::QualityOptions::terrainMinSpacing = 0.0

◆ terrainTolerance

template<class Storage >
double meshkit::BasicConstrainedDelaunay< Storage >::QualityOptions::terrainTolerance = 0.0

◆ terrainToleranceForFootprint

template<class Storage >
std::function<double(const Box &)> meshkit::BasicConstrainedDelaunay< Storage >::QualityOptions::terrainToleranceForFootprint

Positive immutable full-footprint tolerance; invalid means unknown.

◆ terrainWorstFirst

template<class Storage >
bool meshkit::BasicConstrainedDelaunay< Storage >::QualityOptions::terrainWorstFirst = false

Refine size and angle first, then insert terrain points worst error first until the tolerance or maxTriangles is reached, so a capped run spends its budget where the surface error is largest. false = terrain is checked inline with size and angle (default).


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