Skip to content
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

Feature/surface degeneracy #172

Draft
wants to merge 7 commits into
base: develop
Choose a base branch
from
Draft

Conversation

Algiane
Copy link
Member

@Algiane Algiane commented Nov 19, 2022

⚠️ DO NOT MERGE NOW ⚠️

🚧 Work in progress 🚧

This branch adds checks when in pattern splittings (mmg3d) : if the tetra that is split contains ref edges or ridges, the sign of the projection of the normal(s) at edge/ridge points onto the normal at the triangles that will be created is checked.

The aim is to avoid to end up with a negative projection and a faillure in :

mmg/src/mmg3d/bezier_3d.c

Lines 393 to 394 in 9eea7ec

assert ( ps > 0. || ps2 > 0. &&
"Negative projection of normal at tria onto normal at point: surface degeneracy");
.

Preliminary results: I think that we don't to integrate this feature

  • forbidding some patterns leads to mesh degeneracy and very bad meshes (in term of qualities)
  • checks forbid operators once the surface is already degenerated so surface approximation is not better than without this checks. See the attached picture, left mesh is the result without checking the normal projection, right mesh is the result with normal projection checking and the interdiction of splits in case of negative projection.

Capture d’écran 2022-12-13 à 13 14 41

  • time regression on continuous integration test mmg/MecaPart/geom_1_before.mesh. Test is run in release mode and with -hmin 0.1 -hausd 0.1 command line options: master branch (commit 62fc7b421) runs in 4.530s, current branch (commit 504fe7ba) runs in 2.22min

To do (only if integration is planned)

  • For now, it has been tested with Delaunay kernel. More tests would be needed
  • checks have been added to pattern splits only. It is possible that we have to add similar checks in swaps / collapses

…points to non conformal splits to avoid projection issues (when ware are not anymore able to find a positive projection) in mmg3dBezierCP. It fixes issue #167.
@Algiane Algiane added kind: bug error or fault kind: enhancement enhancement to an existing feature part: mmg3d mmg3d specific part: surface model specific to surface model labels Nov 19, 2022
@Algiane Algiane marked this pull request as draft December 12, 2022 14:58
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
kind: bug error or fault kind: enhancement enhancement to an existing feature part: mmg3d mmg3d specific part: surface model specific to surface model
Projects
None yet
Development

Successfully merging this pull request may close these issues.

assert ( ps > 0. || ps2 > 0. && "Unexpected case") in mmg3dBezierCP / surface degeneracy
1 participant