GSoC 2025: Hexahedral Mesh Generation - #9045
Conversation
Working example for 1/2 template substitution
* Detection of "sandwiched" volumes (that share only a edge with the plane) * Related: Traversal takes into account problematic 1/2 templates faces * Repair impossible markings (wip)
* 3 templates outside of iteration plane are not refined * Issue: I think 3 templates should be allowed outside of the plane, since we check for 3 templates validity only inside the plane * Solution: Either a propagation issue ( keep older 1/2 templates propageable ) or else its a non issue and properly detect the 3 templates outside the plane.
* WIP Expansion of initial identified set, for additional level of refinement * WIP Creation of new iteration plane for the next level. => Uses Union_find, to create connected components, for the algorithm to avoid iterating outside of the current level context ( Local rebase of 5 commits )
afabri
left a comment
There was a problem hiding this comment.
I am not sure if CGAL/hexmeshing/ is not too general.
| //////////////////////////////////////////////////////////////////////////////// | ||
| /*! | ||
| * \brief Copy marked darts from lcc1 to lcc2. | ||
| * BECAREFUL: depending on which darts are marked, can produce an invalid map! |
There was a problem hiding this comment.
Use the doxygen command "\warning"
| /*! | ||
| \ingroup PkgLinearCellComplexConstructions | ||
|
|
||
| generates a pure hexahedral mesh from a triangle mesh using the two refinement algorithm described in \cgalCite{cgal:owen2017template-based}. |
There was a problem hiding this comment.
As the title of the publication is "A Template-Based Approach for Parallel Hexahedral Two-Refinement" the function could be called hexahedral_two_refinement().
And in a text there should be a - between "two" and "refinement".
There was a problem hiding this comment.
The two refinement is actually applied on a "raw" hexmesh that is produced using voxeliaation. The function is a combination of both.
There was a problem hiding this comment.
Do you want to say that there could be two functions, one turning a triangle mesh into a hex mesh, and a second one refining the obtained hex mesh?
There was a problem hiding this comment.
The first step is "only" the creation of a regular grid.
| \param tmesh a triangle mesh | ||
| \param cube_cells_per_dim number of grid cells, per dimension | ||
| \param nb_levels How many times to perform refinement | ||
| \param trim `true` to apply trimming, i.e.\ remove volumes that are entirely outside of the surface mesh |
There was a problem hiding this comment.
| \param trim `true` to apply trimming, i.e.\ remove volumes that are entirely outside of the surface mesh | |
| \param trim `true` to apply trimming, i.e., remove volumes that are entirely outside of the surface mesh |
| namespace CGAL::internal::Hexmeshing | ||
| { | ||
| template<typename Tree> | ||
| bool is_intersect(double x1, double y1, double z1, |
| std::vector<Dart_descriptor> edges_to_subdivide; | ||
| LCC& lcc = hdata.lcc; | ||
|
|
||
| auto arrete_done = lcc.get_new_mark(); |
| }; | ||
|
|
||
| template<typename LCC> | ||
| bool import_from_moka(LCC& lcc, const char* filename) |
There was a problem hiding this comment.
Mael had made a huge effort to unify IO, so it would be nice if this would become CGAL::IO::read_MOKA()`
| { | ||
| // all volume cells need to have attribute | ||
| inline | ||
| int __get_signal(LCC& lcc, Dart_descriptor vertex, size_type inner_mark) |
There was a problem hiding this comment.
Functions should not start with underscores
|
/build:v1 |
|
The documentation is built. It will be available, after a few minutes, here: https://cgal.github.io/9045/v1/Manual/index.html |
| \param cube_cells_per_dim number of grid cells, per dimension | ||
| \param nb_levels How many times to perform refinement | ||
| \param trim `true` to apply trimming, i.e., remove volumes that are entirely outside of the surface mesh | ||
| \param smooth `true` to smooth the hexahedral mesh, using a 3D laplacian smoothing method |
There was a problem hiding this comment.
| \param smooth `true` to smooth the hexahedral mesh, using a 3D laplacian smoothing method | |
| \param smooth `true` to smooth the hexahedral mesh, using a 3D Laplacian smoothing method |
|
/build:v1 |
|
There was an error while building the doc: |
|
Replaced by #9613 |
Soichiro Yamazaki's GSoC 2025 Submission
Mentor: Guillaume Damiand
Implementation of the paper Owen et al. 2017
Release Management
TODO