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

parallelisation of the merge tool #12

Open
smason opened this issue Nov 24, 2021 · 1 comment
Open

parallelisation of the merge tool #12

smason opened this issue Nov 24, 2021 · 1 comment

Comments

@smason
Copy link
Contributor

smason commented Nov 24, 2021

As part of #10, I've pulled out the relevant parts of Salome. The aim is to be able to glue geometries consisting of 100k+ solids, but the algorithm is currently serial and would grind to a halt on problems of this size.

The Salome code lives in src/salome/geom_gluer.cpp and I've started to refactor the code into a more understandable form. The majority of time is spent within the shape_merger::RefineCoincidentShapes method, as shown by the timings in the logging output. I'm currently working on getting a reproducible set of tests with an easy way of getting "known good" output from the original Salome code for regression tests for validating changes.

Note that "lists" in opencascade (OCC) are linked lists, so locality is likely not great when traversing a lot of these structures. Might be worth using some data structures from outside OCC.

@smason
Copy link
Contributor Author

smason commented Nov 24, 2021

note the top level Salome code is in the GEOMAlgo_Gluer2 class, available in Salome's geom module. This class references a lot of other ones, and I've refactored it a bit while trying to understand it already so it's diverged quite a bit.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

1 participant