-
Notifications
You must be signed in to change notification settings - Fork 1.4k
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Mesh_3 - add surface_only()
named parameter
#8781
base: master
Are you sure you want to change the base?
Mesh_3 - add surface_only()
named parameter
#8781
Conversation
to completely skip the "refine_cells" part of Mesh_3
no diff in the PMP header? |
We could also have a function named |
I think it's not needed here. It's a parameter function like |
OK I thought that you would need to pass the option in the call to |
This comment was marked as outdated.
This comment was marked as outdated.
This comment was marked as outdated.
This comment was marked as outdated.
/build:v0 |
The documentation is built. It will be available, after a few minutes, here: https://cgal.github.io/8781/v0/Manual/index.html |
* When this option is enabled, the ouput mesh has no complex cells, only complex facets, edges and vertices. | ||
* Full-3D optimization steps such as mesh perturbation and mesh exudation are automatically disabled. | ||
* |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
"complex cells/facets": sounds strange. The correct wording, used elsewhere is "cells in the 3D complex"
facet_distance(0.001)); | ||
|
||
// Mesh generation | ||
C3t3 c3t3 = CGAL::make_mesh_3<C3t3>(domain, criteria, params::no_perturb().no_exude()); | ||
C3t3 c3t3 = CGAL::make_mesh_3<C3t3>(domain, criteria, params::surface_only()); | ||
|
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Now that there is params::surface_only()
, this example and its documentation in the user manual will change drastically: there is no need to use a trick with the constructor of Polyhedral_mesh_domain_with_features_3
from a sequence of polyhedra with only one polyhedron.
if(surface_only) | ||
{ | ||
for(auto cit = r_tr.finite_cells_begin(); cit != r_tr.finite_cells_end(); ++cit) | ||
r_c3t3_.remove_from_complex(cit); | ||
} | ||
else if(!forced_stop()) | ||
{ |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I wonder if there is a way to use that Boolean surface_only
at compile time. Compiling Mesh_3 with parameters::surface_only()
should be faster than without, and the resulting code should similar to surface_mesher. Maybe even the type of Vertex
and Cell
could be simpler with surface_only()
.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
You can make surface_only a bool
template parameter to the class Mesh_3_options
instead of a data member, but I think it is probably out of the scope of this PR and a dedicated issue should be opened.
Summary of Changes
Add the option
surface_only()
tomake_mesh_3()
, to completely skip the "refine_cells" part of Mesh_3, and cancel perturbation and exudation.@soesau and I noticed that scanning cells, even in the context of "Surface mesher", takes a lot of useless time.
@soesau you can use this branch for your benchmark
@lrineau do you think
surface_only
should be a member ofMesher_3
or a parameter ofMesher_3::refine_mesh()
(as done here)?Release Management