diff --git a/MeshGeoToolsLib/HeuristicSearchLength.cpp b/MeshGeoToolsLib/HeuristicSearchLength.cpp index d023236747cd6cd6d826f25439d87daebb6450f7..7913057c9514c291b86846d0985712193a363daf 100644 --- a/MeshGeoToolsLib/HeuristicSearchLength.cpp +++ b/MeshGeoToolsLib/HeuristicSearchLength.cpp @@ -48,15 +48,11 @@ HeuristicSearchLength::HeuristicSearchLength(MeshLib::Mesh const& mesh) // happen due to numerics). _search_length = mean/2; - if (variance > 0.0) { - const double std_deviation (sqrt(variance)); - // heuristic to prevent negative search lengths - // in the case of a big standard deviation - double c(2.0); - while (mean < c * std_deviation) { - c *= 0.9; - } - _search_length = (mean - c * std_deviation)/2; + if (variance > 0) { + if (variance < mean*mean/4) + _search_length -= std::sqrt(variance); + else + _search_length = std::numeric_limits<double>::epsilon(); } DBUG("[MeshNodeSearcher::MeshNodeSearcher] Calculated search length for mesh \"%s\" is %f.",