-
-
Notifications
You must be signed in to change notification settings - Fork 199
Local dual graph for branching meshes #3730
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
Merged
Merged
Conversation
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Moves the reorder_fn to an argument to the new constructor create_boundary_vertices_fn
Output for mfe from #2374 (tdim=0, rank=0): size_global = 4, global_indices = []
(tdim=1, rank=0): size_global = 3, global_indices = []
(tdim=0, rank=1): size_global = 4, global_indices = [0 1 2 3]
(tdim=1, rank=1): size_global = 3, global_indices = [0 1 2] |
jorgensd
approved these changes
May 15, 2025
Co-authored-by: Chris Richardson <[email protected]>
Any more comments @chrisrichardson ? This is a blocker for us, will merge tomorrow if no more comments. |
chrisrichardson
approved these changes
May 27, 2025
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
The dual graph computation previously assumed that at most two cells could be connected through a facet. This is not true for branching/non-orientable meshes. This extends the local dual graph computation to allow for such meshes. It implies no overhead for meshes without branches/joints.
Therefore we are now able to deal with non-orientable meshes correctly where the branching does not happen over a process boundary.
This fixes #2374. Since the input is provided on one process.
The problem still persists if the joint lies on a process boundary facet (Global dual graph computation fails to detect joint edge). This behavior is now documented and its fixing is tracked in #3733.
Fixes #3729 (Solution strategy in there turned out to be not the right approach - needs to be fixed on dual graph level, boundary vertices need to be computed based on a correct dual graph, this can not be corrected for on vertex level).
Additionally
build_local_dual_graph
.boundary_vertices_fn
to own function which could be moved tocpp
at some point.The important changes are in https://github.com/FEniCS/dolfinx/pull/3730/files#diff-c24d3c0de0058214385657cf17a71f410f74a4e709bde7d858de41b5b94e52d7R510-R521. It changes from introducing edges
cell_0 -> cell_i
to adding all combinationscell_a -> cell_b
fora<b