Skip to content

Checks: Perform normal calculation using full integration - #156

Merged
kopperp merged 3 commits into
mainfrom
improvement.check.normals
Aug 16, 2026
Merged

Checks: Perform normal calculation using full integration#156
kopperp merged 3 commits into
mainfrom
improvement.check.normals

Conversation

@kopperp

@kopperp kopperp commented Jun 26, 2026

Copy link
Copy Markdown
Collaborator

Previously, we use the cross-product of the first two tangent vectors for the normal calculation. This can produce wrong results for highly deformed elements which are nonetheless correct. Perform the full high-order integration on the Jacobian to avoid this issue.

@kopperp kopperp added this to the v1.1.0 milestone Jun 26, 2026
@kopperp kopperp self-assigned this Jun 26, 2026
@kopperp kopperp added the enhancement New feature or request label Jun 26, 2026
@github-actions

github-actions Bot commented Jun 26, 2026

Copy link
Copy Markdown

☂️ Code Coverage

current status: ✅

Overall Coverage

Statements Covered Coverage Threshold Status
3208 2925 91% 85% 🟢

New Files

No new covered files...

Modified Files

File Coverage Status
pyhope/basis/basis_watertight.py 100% 🟢
pyhope/io/io_debug.py 98% 🟢
pyhope/mesh/extrude/mesh_extrude.py 99% 🟢
pyhope/script/pyhope_cli.py 98% 🟢
TOTAL 99% 🟢

updated for commit: d31d5a9 by action🐍

@kopperp

kopperp commented Jun 30, 2026

Copy link
Copy Markdown
Collaborator Author

@scopplestone Technically, we are now checking this twice since CheckWatertightalso reports inward facing normals, but only for connected sides. Given that the check is expensive, I'm open for suggestions.

@scopplestone

Copy link
Copy Markdown
Collaborator

Any way to do the check only once for each side? Either extend the water tightness check by also checking the boundary sides or skip the connected sides in the new check?

@kopperp

kopperp commented Jul 29, 2026

Copy link
Copy Markdown
Collaborator Author

Any way to do the check only once for each side? Either extend the water tightness check by also checking the boundary sides or skip the connected sides in the new check?

Yes, we can just add the non-connected sides to the watertightness check. The only downside is that watertightness gets only checked after the MeshConnect, so we might try to connect wrongly-oriented sides and fail there.

Skipping connected sides doesn't work because we don't have that information at this point. The original idea was to have a cheap check right at the beginning and then only do the expensive verification right at the end.

Previously, we use the cross-product of the first two tangent vectors for the normal calculation. This can produce wrong results for highly deformed elements which are nontheless correct. Perform the full high-order integration on the Jacobian to avoid this issue.
@kopperp
kopperp force-pushed the improvement.check.normals branch from a690d07 to 624de43 Compare August 16, 2026 09:16
@kopperp
kopperp force-pushed the improvement.check.normals branch from 624de43 to d31d5a9 Compare August 16, 2026 09:18
@kopperp
kopperp merged commit 7befb35 into main Aug 16, 2026
16 checks passed
@kopperp
kopperp deleted the improvement.check.normals branch August 16, 2026 09:24
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

enhancement New feature or request

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants