[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Getfem-commits] (no subject)
From: |
Markus Bürg |
Subject: |
[Getfem-commits] (no subject) |
Date: |
Thu, 23 May 2019 10:24:01 -0400 (EDT) |
branch: mb-Use_rtree_in_poly_composite
commit 180e774202fa78a21f26e225217f41f8f4404c98
Author: mb <address@hidden>
Date: Thu May 23 16:20:56 2019 +0200
Make functions const such that they can be called in parallel.
---
src/bgeot_rtree.cc | 42 ++++++++++++++-----------
src/getfem/bgeot_rtree.h | 16 +++++-----
src/getfem_generic_assembly_interpolation.cc | 1 +
src/getfem_interpolation_on_deformed_domains.cc | 1 +
4 files changed, 33 insertions(+), 27 deletions(-)
diff --git a/src/bgeot_rtree.cc b/src/bgeot_rtree.cc
index 8d57e30..747ed30 100644
--- a/src/bgeot_rtree.cc
+++ b/src/bgeot_rtree.cc
@@ -196,45 +196,49 @@ namespace bgeot {
void rtree::find_intersecting_boxes(const base_node& bmin,
const base_node& bmax,
- pbox_set& boxlst) {
- boxlst.clear(); if (!root) build_tree();
- if (root)
find_matching_boxes_(root.get(),boxlst,intersection_p(bmin,bmax));
+ pbox_set& boxlst) const {
+ boxlst.clear();
+ GMM_ASSERT1(root, "Boxtree not initialised.");
+ find_matching_boxes_(root.get(),boxlst,intersection_p(bmin,bmax));
}
void rtree::find_containing_boxes(const base_node& bmin,
- const base_node& bmax, pbox_set& boxlst) {
- boxlst.clear(); if (!root) build_tree();
- if (root) find_matching_boxes_(root.get(), boxlst, contains_p(bmin,bmax));
+ const base_node& bmax, pbox_set& boxlst)
const {
+ boxlst.clear();
+ GMM_ASSERT1(root, "Boxtree not initialised.");
+ find_matching_boxes_(root.get(), boxlst, contains_p(bmin,bmax));
}
void rtree::find_contained_boxes(const base_node& bmin,
- const base_node& bmax, pbox_set& boxlst) {
- boxlst.clear(); if (!root) build_tree();
- if (root) find_matching_boxes_(root.get(), boxlst, contained_p(bmin,bmax));
+ const base_node& bmax, pbox_set& boxlst)
const {
+ boxlst.clear();
+ GMM_ASSERT1(root, "Boxtree not initialised.");
+ find_matching_boxes_(root.get(), boxlst, contained_p(bmin,bmax));
}
- void rtree::find_boxes_at_point(const base_node& P, pbox_set& boxlst) {
- boxlst.clear(); if (!root) build_tree();
+ void rtree::find_boxes_at_point(const base_node& P, pbox_set& boxlst) const {
+ boxlst.clear();
GMM_ASSERT1(root, "Boxtree not initialised.");
find_matching_boxes_(root.get(), boxlst, has_point_p(P, EPS));
}
void rtree::find_line_intersecting_boxes(const base_node& org,
const base_small_vector& dirv,
- pbox_set& boxlst) {
- boxlst.clear(); if (!root) build_tree();
- if (root) find_matching_boxes_(root.get(),boxlst,intersect_line(org,
dirv));
+ pbox_set& boxlst) const {
+ boxlst.clear();
+ GMM_ASSERT1(root, "Boxtree not initialised.");
+ find_matching_boxes_(root.get(),boxlst,intersect_line(org, dirv));
}
void rtree::find_line_intersecting_boxes(const base_node& org,
const base_small_vector& dirv,
const base_node& bmin,
const base_node& bmax,
- pbox_set& boxlst) {
- boxlst.clear(); if (!root) build_tree();
- if (root)
- find_matching_boxes_(root.get(), boxlst,
- intersect_line_and_box(org, dirv, bmin, bmax));
+ pbox_set& boxlst) const {
+ boxlst.clear();
+ GMM_ASSERT1(root, "Boxtree not initialised.");
+ find_matching_boxes_(root.get(), boxlst,
+ intersect_line_and_box(org, dirv, bmin, bmax));
}
/*
diff --git a/src/getfem/bgeot_rtree.h b/src/getfem/bgeot_rtree.h
index 48a5b5e..eac890a 100644
--- a/src/getfem/bgeot_rtree.h
+++ b/src/getfem/bgeot_rtree.h
@@ -88,20 +88,20 @@ namespace bgeot {
void clear() { root = std::unique_ptr<rtree_elt_base>(); boxes.clear(); }
void find_intersecting_boxes(const base_node& bmin, const base_node& bmax,
- pbox_set& boxlst);
+ pbox_set& boxlst) const;
void find_containing_boxes(const base_node& bmin, const base_node& bmax,
- pbox_set& boxlst);
+ pbox_set& boxlst) const;
void find_contained_boxes(const base_node& bmin, const base_node& bmax,
- pbox_set& boxlst);
- void find_boxes_at_point(const base_node& P, pbox_set& boxlst);
+ pbox_set& boxlst) const;
+ void find_boxes_at_point(const base_node& P, pbox_set& boxlst) const;
void find_line_intersecting_boxes(const base_node& org,
const base_small_vector& dirv,
- pbox_set& boxlst);
+ pbox_set& boxlst) const;
void find_line_intersecting_boxes(const base_node& org,
const base_small_vector& dirv,
const base_node& bmin,
const base_node& bmax,
- pbox_set& boxlst);
+ pbox_set& boxlst) const;
void find_intersecting_boxes(const base_node& bmin, const base_node& bmax,
std::vector<size_type>& idvec) {
@@ -122,7 +122,7 @@ 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)
+ 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,
@@ -144,7 +144,7 @@ namespace bgeot {
void dump();
void build_tree();
private:
- static void pbox_set_to_idvec(pbox_set bs, std::vector<size_type>& idvec) {
+ void pbox_set_to_idvec(pbox_set bs, std::vector<size_type>& idvec) const {
idvec.reserve(bs.size()); idvec.resize(0);
for (pbox_set::const_iterator it=bs.begin(); it != bs.end(); ++it)
idvec.push_back((*it)->id);
diff --git a/src/getfem_generic_assembly_interpolation.cc
b/src/getfem_generic_assembly_interpolation.cc
index 3a4ce15..dedaa01 100644
--- a/src/getfem_generic_assembly_interpolation.cc
+++ b/src/getfem_generic_assembly_interpolation.cc
@@ -613,6 +613,7 @@ namespace getfem {
element_boxes.add_box(bmin, bmax, cv);
}
+ element_boxes.build_tree();
recompute_elt_boxes = false;
}
}
diff --git a/src/getfem_interpolation_on_deformed_domains.cc
b/src/getfem_interpolation_on_deformed_domains.cc
index 2224184..c6f8610 100644
--- a/src/getfem_interpolation_on_deformed_domains.cc
+++ b/src/getfem_interpolation_on_deformed_domains.cc
@@ -157,6 +157,7 @@ class interpolate_transformation_on_deformed_domains
element_boxes.add_box(bmin, bmax, box_to_convex.size());
box_to_convex.push_back(cv);
}
+ element_boxes.build_tree();
}
fem_interpolation_context deformed_master_context(size_type cv) const
- [Getfem-commits] [getfem-commits] branch mb-Use_rtree_in_poly_composite created (now 22cd69d), Markus Bürg, 2019/05/23
- [Getfem-commits] (no subject), Markus Bürg, 2019/05/23
- [Getfem-commits] (no subject), Markus Bürg, 2019/05/23
- [Getfem-commits] (no subject), Markus Bürg, 2019/05/23
- [Getfem-commits] (no subject), Markus Bürg, 2019/05/23
- [Getfem-commits] (no subject), Markus Bürg, 2019/05/23
- [Getfem-commits] (no subject), Markus Bürg, 2019/05/23
- [Getfem-commits] (no subject), Markus Bürg, 2019/05/23
- [Getfem-commits] (no subject),
Markus Bürg <=
- [Getfem-commits] (no subject), Markus Bürg, 2019/05/23
- [Getfem-commits] (no subject), Markus Bürg, 2019/05/23