-
Notifications
You must be signed in to change notification settings - Fork 122
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
Edge-hanging corner neighbors in the p8est_mesh_t #244
Comments
I'd agree to add this case with the necessary information. I'm wondering whether we'd need to use the 8..15 values, since for edge_edge we use it for orientation, where here we'd use it for flagging hanging/non-hanging context. Since this information can, if necessary, be looked up from child id and corner number, it may suffice to state the formula/expression in the documentation and use 0..7 values only. Shall we keep the -1 value when there is no same-size corner neighbor at the hanging edge at all, and only activate this situation when there are at least two mutual hanging-edge corner neighbors?
Yes, it would be. However I'm thinking to keep it simple and always use the indirect lookup-arrays for inter-tree neighbors by principle. Then we might just remove this comment. This will be a breaking change. We may make this explicit by changing the interface of |
Related question: do we need to keep p4est_mesh_get_neighbors? The function appears somwhat outdated, clumsy, and limited. |
I think child id and corner number are not enough to determine if two same size corner neighbors are edge-hanging or not, one also needs to check for the existence of a coarser quadrant sharing the edge with the two quadrants. This should still be possible with the information already supplied in the mesh, e.g. by checking the correct entries of
Keeping the -1 value whenever there is no same-size neighbor seems like a good solution to me.
I agree. Especially the not-yet-consistent encodings could be very confusing to the user. Maybe neighbor-relationship-specific |
Ok, let's give this a try. With the added parameter to mesh_new_ext we'll go for the simple solution.
Cool.
Sounds good! We can mark the function as obsolete now and remove it for 2.9.0. We may think about optionally re-enabling it with --enable-mesh-deprecated, but we may also choose not to go there at all. |
Ok, I will start working on an implementation. Should the new parameter also be stored in the If I am not mistaken, |
As pointed out by @scottaiton (#235) the
p8est_mesh_t
does not provide information about same size corner-neighbors across a hanging edge, since the corresponding entries ofquad_to_corner
are set to -1.We could provide the hanging corner neighbors using
corner_offset
,corner_quad
andcorner_corner
. Thequad_to_corner
array would then index into local_num_quadrants + local_num_ghosts + [0 .. local_num_corners - 1]. We could use the entries ofcorner_corner
to encode information similar toedge_edge
, e.g. by settingcorner_corner
to 0..7 for non-hanging neighbors and to 8..15 for hanging corner neighbors.Thereby, we have access to the corner neighbors across hanging edges and maintain the possibility to distinguish between hanging and non-hanging neighbors.
Furthermore, there is an open todo in the documentation of the
p8est_mesh_t
This might be a good opportunity to resolve it as well.
The text was updated successfully, but these errors were encountered: