getfem-commits
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[Getfem-commits] (no subject)


From: Yves Renard
Subject: [Getfem-commits] (no subject)
Date: Tue, 4 Jun 2019 08:56:48 -0400 (EDT)

branch: mb-Use_rtree_in_poly_composite
commit 9692f9124c89babb655a7ce0f96d42b30089e5f6
Author: Yves Renard <address@hidden>
Date:   Tue Jun 4 14:56:18 2019 +0200

    transfer rtree EPS to box comparator
---
 src/bgeot_rtree.cc       | 4 ++--
 src/getfem/bgeot_rtree.h | 9 ++++++---
 2 files changed, 8 insertions(+), 5 deletions(-)

diff --git a/src/bgeot_rtree.cc b/src/bgeot_rtree.cc
index 257bcfa..8696c1f 100644
--- a/src/bgeot_rtree.cc
+++ b/src/bgeot_rtree.cc
@@ -193,8 +193,8 @@ namespace bgeot {
     return boxes.emplace(std::move(bi)).first->id;
   }
   
-  
-  rtree::rtree(scalar_type EPS_) : EPS(EPS_), tree_built(false)
+  rtree::rtree(scalar_type EPS_)
+    : EPS(EPS_), boxes(box_index_topology_compare(EPS_)), tree_built(false)
   {}
 
   void rtree::clear() {
diff --git a/src/getfem/bgeot_rtree.h b/src/getfem/bgeot_rtree.h
index 5c3c993..8010ec9 100644
--- a/src/getfem/bgeot_rtree.h
+++ b/src/getfem/bgeot_rtree.h
@@ -56,16 +56,18 @@ namespace bgeot {
   };
 
   struct box_index_topology_compare {
+    const scalar_type EPS;
     bool is_less(const base_node &lhs, const base_node &rhs) const {
       GMM_ASSERT2(lhs.size() == rhs.size(), "size mismatch");
-      const scalar_type EPS = 1e-13;
       for (size_type i = 0; i < lhs.size(); ++i)
         if (gmm::abs(lhs[i] - rhs[i]) > EPS) {
           return lhs[i] < rhs[i];
         }
       return false;
     }
-
+    
+    box_index_topology_compare(scalar_type EPS_) : EPS{EPS_} {}
+ 
     bool operator()(const box_index &lhs, const box_index &rhs) const {
       return is_less(*lhs.min, *rhs.min) ||
              (!is_less(*rhs.min, *lhs.min) && is_less(*lhs.max, *rhs.max));
@@ -137,7 +139,8 @@ namespace bgeot {
       find_contained_boxes(bmin, bmax, bs);
       pbox_set_to_idvec(bs, idvec);
     }
-    void find_boxes_at_point(const base_node& P, std::vector<size_type>& 
idvec) const
+    void find_boxes_at_point(const base_node& P,
+                             std::vector<size_type>& idvec) const
     { pbox_set bs; find_boxes_at_point(P, bs);  pbox_set_to_idvec(bs, idvec); }
     void find_line_intersecting_boxes(const base_node& org,
                                       const base_small_vector& dirv,



reply via email to

[Prev in Thread] Current Thread [Next in Thread]