Commit Graph
247 Commits
Author SHA1 Message Date
Clément Jamin 23ff0b1012 Oops, bugfix on my previous bugfix 2012-08-31 08:41:47 +00:00
Clément Jamin e401dd9175 Bugfix (see comment in Mesher_level.h) 2012-08-31 08:30:14 +00:00
Laurent Rineau db194534c7 First big patch to fix -Wunused-local-typedefs
-Wunused-local-typedefs is a new warning flag of gcc-4.7, and it will enabled
 by -Wall since gcc-4.8 (not yet released).

The fix is a big set of removals of unused typedefs (or comments, or moves,
depending on the context).
2012-08-01 13:29:16 +00:00
Laurent Rineau fcd8565b46 Revert a buggy revision
Bug reported by a user against CGAL-4.0.2
A single triangle cannot be meshed!

The fault was a buggy assertion added in the following revision:
  |-----------------------------------------------------------------------
  |r66359 | lrineau | 2011-11-16 18:58:22 +0100 (Wed, 16 Nov 2011) | 3 lines
  |
  |Add an assertion that checks that a point constructed as the midpoint of an
  |edge is located either on the edge or inside one of the two incident faces.
  |
  |-----------------------------------------------------------------------
And the assertion message was:
  terminate called after throwing an instance of 'CGAL::Assertion_exception'
    what():  CGAL ERROR: assertion violation!
  Expr: zone.locate_type != Tr::FACE || zone.fh == f || zone.fh == n
  File: /home/lrineau/wc/Mesh_2/test/Mesh_2/../../include/CGAL/Mesh_2/Refine_edges.h
  Line: 430
  Explanation: Your data set contains at least a vertex that is very close to 
    a constrained edge! Mesh_2 cannot mesh that sort of data set.
2012-07-26 14:02:13 +00:00
Clément Jamin fc40c96c3d For GCC 2012-07-11 10:11:31 +00:00
Clément Jamin 1c664776c9 The parallel version can now be built with GCC 2012-07-10 16:53:34 +00:00
Clément Jamin 41f9cbe411 Sequential Mesh_3 can now be compiled by GCC. 2012-07-09 15:44:58 +00:00
Clément Jamin 40f602fea9 Minor changes (comments, etc.) 2012-06-21 12:03:03 +00:00
Clément Jamin d42a0fc71d Improved tag dispatching 2012-06-20 13:04:40 +00:00
Clément Jamin 3725168185 Backup commit (I need to roll back to an older version) 2012-06-15 11:28:09 +00:00
Clément Jamin 78cddbe55b bugfix 2012-06-13 10:04:23 +00:00
Clément Jamin b268598665 Replace LINKED_WITH_TBB by CGAL_LINKED_WITH_TBB. 2012-06-13 09:33:08 +00:00
Clément Jamin b948543cc6 Use of a Tag (template parameter) to activate/deactivate concurrency in Mesh_3, instead of #ifdef macros. 2012-06-09 08:52:37 +00:00
Clément Jamin dfbddff185 Bugfixes + some clean-up 2012-05-30 14:49:02 +00:00
Laurent Rineau fd77f801dc Bug fix: g++-4.7 (and C++03/11) requires to qualify the call. 2012-05-21 06:53:58 +00:00
Clément Jamin d2792dff8d - Added the ability to add points on a sphere outside the domain in the sequential case => better performance for the fandisk model (x2). I'm still wondering why...
- Code refactoring/clean-up
2012-05-04 15:20:28 +00:00
Clément Jamin 9da17676e9 Clean-up / formatting 2012-05-03 16:37:48 +00:00
Clément Jamin 5a628edd4e - New worksharing technique: we use a coarse version of the mesh to split the space.
- Some clean-up (removed g_global_mutex)
2012-05-03 16:05:36 +00:00
Clément Jamin 107a428fb5 - Added the ability to sort work batches according to quality, in order to reduce the number of inserted vertices
- Modified config parameters manager (Concurrent_mesher_config class)
2012-05-02 15:21:31 +00:00
Clément Jamin 0eee3dc040 Fixed a deadlock introduced recently.
Added some assertions in the way...
2012-04-25 13:00:12 +00:00
Clément Jamin fb7d171271 Oops. Forgot to remove a line. 2012-04-24 16:01:54 +00:00
Clément Jamin 107b268756 - Now, we first start by a little bit of sequential refinement, in order to get a better approximation of the bounding box
- New worksharing strategy, which groups tasks by batches and let TBB manage the load balancing => the results are slightly improved, compared to parallel_do
- New params in config file
2012-04-24 15:06:10 +00:00
Clément Jamin fc121a451d - Some clean-up
- Function get_number_of_bad_elements in the mesher levels (for debugging)
- option CGAL_MESH_3_ADD_OUTSIDE_POINTS_ON_A_FAR_SPHERE to reduce contention on the infinite vertex
2012-04-24 07:59:29 +00:00
Clément Jamin 9492b2eb84 Added the option to sort the refinement queue after the initial scans (facets and cells), when the queue is an unsorted container. 2012-04-20 09:45:58 +00:00
Clément Jamin 8002220aed Clean-up and bugfixes 2012-04-13 13:57:54 +00:00
Clément Jamin ce132eb34a The concurrency parameters are now stored in a config file which is handled via boost::program_options. 2012-04-12 13:37:15 +00:00
Clément Jamin 9933dd83a4 - Some clean-up: moved global variables (locking/worksharing data structures) to member variables of Mesher_3.
- Some tests on the worksharing strategies
2012-04-12 08:33:43 +00:00
Clément Jamin 69272e4d9a Test with a worksharing strategy (based on TBB task scheduler) + test with parallel_do. 2012-04-10 13:23:51 +00:00
Clément Jamin a0a92cdf64 The problem "A facet is not in conflict with its refinement point" (can occur in sequential version too) is now solved => we switch to exact computation (for the dual) when it happens.
Note: don't try to #define CGAL_MESH_3_DO_NOT_LOCK_INFINITE_VERTEX, it doesn't work yet.
2012-04-04 07:05:46 +00:00
Clément Jamin a520f3cbf0 Corrected a rare race condition.
The few bad facets that are created during the "cell refinement" step are treated immediately inside the thread which created them.
2012-03-29 15:05:28 +00:00
Clément Jamin a3f27eff3c Finally, a fully parallel version of the refinement. Not very efficient, though, but the idea was to identify all data races and to protect it using locks, atomics, TLS... Needs some tests now, to check if we didn't miss any rare data race. 2012-03-26 07:39:58 +00:00
Clément Jamin da923ba811 Forget about yesterday. There was a studid mutex making the whole thing nearly sequential.
Anyway, now the refinement of the facets is parallel. The speedup is around 2-3 on a 12-core CPU. Can do better, but at least it shows it's not sequential.
The refinement of the cells is not parallel, yet.
One last thing: the program needs to be restarted between two refinements (should be fixed soon).
2012-03-23 18:05:24 +00:00
Clément Jamin 4ccf8e0447 First working parallel version. It's not faster than the sequential one, but not slower neither (depends if you're optimistic or not). The good news is that we found all (?) the sections to protect or to make thread-local. 2012-03-22 17:07:03 +00:00
Clément Jamin 7137347f95 Added::process_a_batch_of_elements(...) which use parallel_for to insert batch of facets/cells. For now, the body is protected by a scoped_lock to avoid races => no speedup! 2012-03-07 13:57:16 +00:00
Laurent Rineau 8f59fd9592 Turn QPL into LGPLv3+ 2012-01-13 16:33:35 +00:00
Laurent Rineau 9024d5bc04 Fix the text of the assertion msg. Thanks to Sebastien L. 2011-11-16 18:25:18 +00:00
Laurent Rineau 3d1dc999a0 Add an assertion that checks that a point constructed as the midpoint of an
edge is located either on the edge or inside one of the two incident faces.
2011-11-16 17:58:22 +00:00
Laurent Rineau 0a363c52b5 Fix a bug introduced in trunk: criteria for Mesh_2 needs a geom traits 2011-06-04 17:00:31 +00:00
Laurent Rineau 5e1de228a1 Do not use systematically a default constructed geom traits
If one wants to use Mesh_2 with Triangulation_2_projection_traits_3 (a
projection traits constructed with a normal vector), one cannot use a
default constructed geom traits, but only one passed on argument. Then the
criteria class needs to be constructed with tr.geom_traits() as argument.
2011-03-23 17:45:59 +00:00
Sébastien Loriot ae62b2ae4d remove warnings 2011-02-24 16:36:04 +00:00
Andreas Fabri 43aea3bd18 Remove unused variable 2010-11-12 08:06:17 +00:00
Sébastien Loriot 5c8f3946f4 call to is_conforming_[Gabriel,Delaunay] was no longer possible: fix proposal.
Add a test into the testsuite
2010-10-19 14:23:04 +00:00
Stéphane Tayeb 61f6dcbc10 previous data member is now a reference in Null_mesher_visitor_level: visitor used by Mesh_3 as Previous_level has a state, so doing a copy is not an option. 2010-06-09 15:39:04 +00:00
Andreas Fabri 8e47168183 Remove extra ';' 2010-05-17 14:05:54 +00:00
Andreas Fabri 397bc16d9f Remove ';' 2010-05-14 09:13:45 +00:00
Laurent Rineau 49b095589d Strict-ansi compliance 2010-05-08 11:49:52 +00:00
Sébastien Loriot 72ef527fc6 remove extra ; 2010-04-26 09:00:17 +00:00
Laurent Rineau d8e2cfaecd Fix yet another bug of Mesh_2: if a vertex of the CDT has all its incident
edges in a cluster of constrained edges, then the construction of the
cluster was buggy.
2010-03-23 14:59:11 +00:00
Laurent Rineau 73c9d4fb3d Determinize Mesh_2 (comparison of Face_handles in Double_map). 2010-03-10 18:05:57 +00:00
Laurent Rineau 1c84cc189b Fix a bug of Mesh_2 that exists for years (since r23141, 2004-10-19)! 2010-03-10 16:46:10 +00:00