-
-
Notifications
You must be signed in to change notification settings - Fork 209
Improve python exposure of determine_point_ownership
#3344
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
base: main
Are you sure you want to change the base?
Conversation
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Looks good to me. Could you add a test for this?:)
I added a test comparing bounding box tree results to determine_point_ownership. Another possibility would be to look at post files and hardcode rank-cell data into a test. |
def test_po_against_bb_tree(mesh,points,cells): | ||
cells = np.array([cell for cell in cells if cell < cell_map.size_local]) | ||
num_points = points.shape[0] | ||
po = determine_point_ownership(mesh,points,cells) | ||
tree = bb_tree(mesh, mesh.topology.dim, cells) |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Run ruff format
and ruff check --fix
on the Python files to assure appropriate formatting.
Sorry, I made a mess with my branches in my fork and closed the pull request by mistake. Is it possible to reopen it pointing to https://github.com/ordinary-slim/dolfinx/tree/main ? |
I think you have to reopen it from your repository. See: https://gist.github.com/Farhan-Haseeb/fd4cbb476de4e2931c322d7bacb75e5f |
I can't see the PR from my repository. I deleted the original branch of the PR and it automatically closed it. The reopen button is greyed out: The link you provided says:
But I can't find this |
I cannot reopen. Please open a new PR:) |
Ok, I had to recover the deleted branch with the same name then I could reopen, as per this stackoverflow comment. Sorry for the inconvenience! |
h = dtype(1.0 / num_cells_side) | ||
if tdim == 2: | ||
mesh = create_unit_square( | ||
MPI.COMM_WORLD, num_cells_side, num_cells_side, CellType.quadrilateral, dtype=dtype |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Can it be. parameterised across the mesh? (triangle, quad, tet, hex)?
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
No, as the test is now it needs the elements to coincide with their bounding boxes. I'll commit a version that covers triangles and tet elements.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
That would be great, thank you.
python/dolfinx/geometry.py
Outdated
A large padding value will increase the run-time of the code by orders | ||
of magnitude. General advice is to use a padding on the scale of the | ||
cell size. | ||
|
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Remove new line?
cpp/dolfinx/geometry/utils.h
Outdated
/// where src_owner is a list of ranks corresponding to the input | ||
/// points. dest_owner is a list of ranks corresponding to dest_points, | ||
/// the points that this process owns. dest_cells contains the | ||
/// @return Point ownership data with fields `src_owner`, `dest_owner`, `dest_points`, `dest_cells`, |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I think this documentation should be moved out to the struct itself.
FYI: The geometry test |
`test_determine_point_ownership` tests for triangle and tetra elements.
- Changed argument order to match Python constructor
Let me know if I should move the last two commits (non-defaulting padding argument in BoundingBoxTree constructors) to a new PR. |
Bumping this @jhale |
I'd like to get this merged - can you address the two final small comments? |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Be sure to run clang-format
on C++ code and use ruff
to format Python code.
- Switched c++ optional argument to std::optional - Formated files modified by PR
Ok! I'll try to reply fast. |
I will try to update and merge this, looks pretty solid. |
Thanks! I am under the impression that the test is too convoluted / large hence the slow progress on this PR. Let me know if you have an idea for a different test. On the other hand, I believe it is a good test in the sense that it computes the desired output in a different fashion and compares it to the actual output of the function. |
Python wrapper around nanobind exposure of
determine_point_ownership
and extra optional argumentscells
so that the search is performed only forcells
.