From 9e82356213431b50f0cd0994059f128c856a51ba Mon Sep 17 00:00:00 2001 From: Jane Tournois Date: Fri, 24 Jul 2020 16:54:29 +0200 Subject: [PATCH 1/6] fix compare_subdomains compared std::vector were not made unique! always different in presence of different numbers of incident cells --- .../internal/tetrahedral_remeshing_helpers.h | 22 ++++++++++--------- 1 file changed, 12 insertions(+), 10 deletions(-) diff --git a/Tetrahedral_remeshing/include/CGAL/Tetrahedral_remeshing/internal/tetrahedral_remeshing_helpers.h b/Tetrahedral_remeshing/include/CGAL/Tetrahedral_remeshing/internal/tetrahedral_remeshing_helpers.h index 2c99833b158..f1b095d3dcc 100644 --- a/Tetrahedral_remeshing/include/CGAL/Tetrahedral_remeshing/internal/tetrahedral_remeshing_helpers.h +++ b/Tetrahedral_remeshing/include/CGAL/Tetrahedral_remeshing/internal/tetrahedral_remeshing_helpers.h @@ -25,6 +25,8 @@ #include +#include + namespace CGAL { namespace Tetrahedral_remeshing @@ -761,20 +763,20 @@ Subdomain_relation compare_subdomains(const typename C3t3::Vertex_handle v0, { typedef typename C3t3::Subdomain_index Subdomain_index; - std::vector subdomains_v0; - incident_subdomains(v0, c3t3, std::back_inserter(subdomains_v0)); - std::sort(subdomains_v0.begin(), subdomains_v0.end()); + boost::container::flat_set subdomains_v0; + incident_subdomains(v0, c3t3, + std::inserter(subdomains_v0, subdomains_v0.begin())); - std::vector subdomains_v1; - incident_subdomains(v1, c3t3, std::back_inserter(subdomains_v1)); - std::sort(subdomains_v1.begin(), subdomains_v1.end()); + boost::container::flat_set subdomains_v1; + incident_subdomains(v1, c3t3, + std::inserter(subdomains_v1, subdomains_v1.begin())); if (subdomains_v0.size() == subdomains_v1.size()) { - for (unsigned int i = 0; i < subdomains_v0.size(); i++) - if (subdomains_v0[i] != subdomains_v1[i]) - return DIFFERENT; - return EQUAL; + if(std::equal(subdomains_v0.begin(), subdomains_v0.end(), subdomains_v1.begin())) + return EQUAL; + else + return DIFFERENT; } else { From 993e4b599ae13f31e76594248043f06c993ec894 Mon Sep 17 00:00:00 2001 From: Jane Tournois Date: Tue, 28 Jul 2020 10:34:10 +0200 Subject: [PATCH 2/6] Use a small_vector as the third template arguments of the flat_set That will avoid the memory allocation at each call of the function. --- .../internal/tetrahedral_remeshing_helpers.h | 18 ++++++++++++------ 1 file changed, 12 insertions(+), 6 deletions(-) diff --git a/Tetrahedral_remeshing/include/CGAL/Tetrahedral_remeshing/internal/tetrahedral_remeshing_helpers.h b/Tetrahedral_remeshing/include/CGAL/Tetrahedral_remeshing/internal/tetrahedral_remeshing_helpers.h index f1b095d3dcc..fa58069e499 100644 --- a/Tetrahedral_remeshing/include/CGAL/Tetrahedral_remeshing/internal/tetrahedral_remeshing_helpers.h +++ b/Tetrahedral_remeshing/include/CGAL/Tetrahedral_remeshing/internal/tetrahedral_remeshing_helpers.h @@ -17,6 +17,7 @@ #include #include +#include #include #include @@ -26,6 +27,7 @@ #include #include +#include namespace CGAL { @@ -762,12 +764,15 @@ Subdomain_relation compare_subdomains(const typename C3t3::Vertex_handle v0, const C3t3& c3t3) { typedef typename C3t3::Subdomain_index Subdomain_index; + typedef boost::container::flat_set, + boost::container::small_vector > Set_of_subdomains; - boost::container::flat_set subdomains_v0; + Set_of_subdomains subdomains_v0; incident_subdomains(v0, c3t3, std::inserter(subdomains_v0, subdomains_v0.begin())); - boost::container::flat_set subdomains_v1; + Set_of_subdomains subdomains_v1; incident_subdomains(v1, c3t3, std::inserter(subdomains_v1, subdomains_v1.begin())); @@ -780,13 +785,14 @@ Subdomain_relation compare_subdomains(const typename C3t3::Vertex_handle v0, } else { - std::vector - intersection((std::min)(subdomains_v0.size(), subdomains_v1.size()), -1); - typename std::vector::iterator + boost::container::small_vector + intersection((std::min)(subdomains_v0.size(), subdomains_v1.size()), -1); + typename boost::container::small_vector::iterator end_it = std::set_intersection(subdomains_v0.begin(), subdomains_v0.end(), subdomains_v1.begin(), subdomains_v1.end(), intersection.begin()); - std::ptrdiff_t intersection_size = (end_it - intersection.begin()); + std::ptrdiff_t intersection_size = + std::distance(intersection.begin(), end_it); if (subdomains_v0.size() > subdomains_v1.size() && intersection_size == std::ptrdiff_t(subdomains_v1.size())) From 7efa1d8771ebc65add1de6083da633019a88a164 Mon Sep 17 00:00:00 2001 From: Maxime Gimeno Date: Wed, 29 Jul 2020 15:04:53 +0200 Subject: [PATCH 3/6] use a ppa to get boost-1.73 --- .travis/install.sh | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/.travis/install.sh b/.travis/install.sh index 507ecd0894e..09c436102f4 100644 --- a/.travis/install.sh +++ b/.travis/install.sh @@ -2,13 +2,15 @@ [ -n "$CGAL_DEBUG_TRAVIS" ] && set -x DONE=0 +sudo add-apt-repository ppa:mhier/libboost-latest sudo apt-get update + while [ $DONE = 0 ] do DONE=1 && sudo -E apt-get -yq --no-install-suggests --no-install-recommends --force-yes install clang zsh \ -flex bison cmake graphviz libgmp-dev libmpfr-dev libmpfi-dev zlib1g-dev libeigen3-dev libboost-dev \ -libboost-system-dev libboost-program-options-dev libboost-thread-dev libboost-iostreams-dev \ +flex bison cmake graphviz libgmp-dev libmpfr-dev libmpfi-dev zlib1g-dev libeigen3-dev \ qtbase5-dev libqt5sql5-sqlite libqt5opengl5-dev qtscript5-dev libqt5svg5-dev qttools5-dev qttools5-dev-tools qml-module-qtgraphicaleffects libopencv-dev mesa-common-dev libmetis-dev libglu1-mesa-dev \ +libboost || DONE=0 && sudo apt-get update done exit 0 From 0c35447ebc0d3e2578270e722ca70f862ef9505a Mon Sep 17 00:00:00 2001 From: Maxime Gimeno Date: Thu, 30 Jul 2020 16:26:21 +0200 Subject: [PATCH 4/6] add ppa non-interractively --- .travis/install.sh | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/.travis/install.sh b/.travis/install.sh index 09c436102f4..7eb7f9799af 100644 --- a/.travis/install.sh +++ b/.travis/install.sh @@ -2,7 +2,7 @@ [ -n "$CGAL_DEBUG_TRAVIS" ] && set -x DONE=0 -sudo add-apt-repository ppa:mhier/libboost-latest +sudo add-apt-repository ppa:mhier/libboost-latest -y sudo apt-get update while [ $DONE = 0 ] @@ -10,8 +10,7 @@ do DONE=1 && sudo -E apt-get -yq --no-install-suggests --no-install-recommends --force-yes install clang zsh \ flex bison cmake graphviz libgmp-dev libmpfr-dev libmpfi-dev zlib1g-dev libeigen3-dev \ qtbase5-dev libqt5sql5-sqlite libqt5opengl5-dev qtscript5-dev libqt5svg5-dev qttools5-dev qttools5-dev-tools qml-module-qtgraphicaleffects libopencv-dev mesa-common-dev libmetis-dev libglu1-mesa-dev \ -libboost -|| DONE=0 && sudo apt-get update +libboost1.73-dev || DONE=0 && sudo apt-get update done exit 0 From 1454dd6e245475d6b2e80ab0dc72939508210a02 Mon Sep 17 00:00:00 2001 From: Laurent Rineau Date: Mon, 3 Aug 2020 17:11:23 +0200 Subject: [PATCH 5/6] Fix typo --- .../internal/tetrahedral_remeshing_helpers.h | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Tetrahedral_remeshing/include/CGAL/Tetrahedral_remeshing/internal/tetrahedral_remeshing_helpers.h b/Tetrahedral_remeshing/include/CGAL/Tetrahedral_remeshing/internal/tetrahedral_remeshing_helpers.h index fa58069e499..c58bbd3f6ba 100644 --- a/Tetrahedral_remeshing/include/CGAL/Tetrahedral_remeshing/internal/tetrahedral_remeshing_helpers.h +++ b/Tetrahedral_remeshing/include/CGAL/Tetrahedral_remeshing/internal/tetrahedral_remeshing_helpers.h @@ -27,7 +27,7 @@ #include #include -#include +#include namespace CGAL { From dac614bd02aec1eb3cae166e504445c757805c1f Mon Sep 17 00:00:00 2001 From: Maxime Gimeno Date: Tue, 4 Aug 2020 10:12:58 +0200 Subject: [PATCH 6/6] Update to bionic and install and use clang-10 --- .travis.yml | 4 ++-- .travis/install.sh | 2 +- .travis/template.txt | 4 ++-- 3 files changed, 5 insertions(+), 5 deletions(-) diff --git a/.travis.yml b/.travis.yml index 2c2fe62d3f4..f9e0528d35d 100644 --- a/.travis.yml +++ b/.travis.yml @@ -1,5 +1,5 @@ language: cpp -dist: xenial +dist: bionic sudo: required git: depth: 3 @@ -58,7 +58,7 @@ install: - echo "$PWD" - if [ -n "$TRAVIS_PULL_REQUEST_BRANCH" ] && [ "$PACKAGE" != CHECK ]; then DO_IGNORE=FALSE; for ARG in $(echo "$PACKAGE");do if [ "$ARG" = "Maintenance" ]; then continue; fi; . $PWD/.travis/test_package.sh "$PWD" "$ARG"; echo "DO_IGNORE is $DO_IGNORE"; if [ "$DO_IGNORE" = "FALSE" ]; then break; fi; done; if [ "$DO_IGNORE" = "TRUE" ]; then travis_terminate 0; fi;fi - /usr/bin/time -f 'Spend time of %C -- %E (real)' bash .travis/install.sh - - export CXX=clang++ CC=clang; + - export CXX=clang++-10 CC=clang-10; before_script: - wget -O doxygen_exe https://cgal.geometryfactory.com/~mgimeno/doxygen_exe - sudo mv doxygen_exe /usr/bin/doxygen diff --git a/.travis/install.sh b/.travis/install.sh index 7eb7f9799af..63a9ec329eb 100644 --- a/.travis/install.sh +++ b/.travis/install.sh @@ -7,7 +7,7 @@ sudo apt-get update while [ $DONE = 0 ] do - DONE=1 && sudo -E apt-get -yq --no-install-suggests --no-install-recommends --force-yes install clang zsh \ + DONE=1 && sudo -E apt-get -yq --no-install-suggests --no-install-recommends --force-yes install clang-10 zsh \ flex bison cmake graphviz libgmp-dev libmpfr-dev libmpfi-dev zlib1g-dev libeigen3-dev \ qtbase5-dev libqt5sql5-sqlite libqt5opengl5-dev qtscript5-dev libqt5svg5-dev qttools5-dev qttools5-dev-tools qml-module-qtgraphicaleffects libopencv-dev mesa-common-dev libmetis-dev libglu1-mesa-dev \ libboost1.73-dev || DONE=0 && sudo apt-get update diff --git a/.travis/template.txt b/.travis/template.txt index 48d2facb8ce..3b99af1ff13 100644 --- a/.travis/template.txt +++ b/.travis/template.txt @@ -1,5 +1,5 @@ language: cpp -dist: xenial +dist: bionic sudo: required git: depth: 3 @@ -12,7 +12,7 @@ install: - echo "$PWD" - if [ -n "$TRAVIS_PULL_REQUEST_BRANCH" ] && [ "$PACKAGE" != CHECK ]; then DO_IGNORE=FALSE; for ARG in $(echo "$PACKAGE");do if [ "$ARG" = "Maintenance" ]; then continue; fi; . $PWD/.travis/test_package.sh "$PWD" "$ARG"; echo "DO_IGNORE is $DO_IGNORE"; if [ "$DO_IGNORE" = "FALSE" ]; then break; fi; done; if [ "$DO_IGNORE" = "TRUE" ]; then travis_terminate 0; fi;fi - /usr/bin/time -f 'Spend time of %C -- %E (real)' bash .travis/install.sh - - export CXX=clang++ CC=clang; + - export CXX=clang++-10 CC=clang-10; before_script: - wget -O doxygen_exe https://cgal.geometryfactory.com/~mgimeno/doxygen_exe - sudo mv doxygen_exe /usr/bin/doxygen