Massive speed-up of the contour extraction algorithm
Reference issue
None
Description
The original contour extraction algorithm, while working, was flawed in several ways. This replaces it entirely with a new one which consists in three steps:
- Boundary edges extraction using Cantor pairing for fast identification of unique edges.
- Grouping of boundary nodes into contours by using a dictionary of node neighbours for quick search.
- Building the list of domains with external and internal contours identification by computing the signed area of each contour using the Shoelace formula.
This substantially improves on the previous algorithm: for a mesh consisting of 369769 nodes with several islands (holes), the previous algorithm took 2.64 seconds, whereas the new algorithm takes 0.39 seconds. It is also much more efficient than the previous algorithm when using a boundary conditions file, which is no longer necessary.
Checklist
All Merge Requests:
-
Update NEWS.txtto describe your changes. -
Run compile_telemac.py --check-codeto check FORTRAN coding conventions. -
Run pylintto check Python coding conventions. -
If you added new files, run compile_telemac.py --clean --rescanand commit the updatedcmdffile(s) accordingly. -
Run compile_telemac.py --cleanfor both normal and debug configurations. -
Run validate_telemac.pyfor both normal and debug configurations. -
Run validate_telemac.py --notebookfor both normal and debug configurations. -
Run doc_telemac.pyif there are any modifications in the documentation. -
Run damocles.py --eficasif there are any modifications in the dictionaries.
Additionnaly, for a new feature:
-
Check that your feature works in both serial and parallel modes. -
Add at least one test case to check the functionality (with documentation, graphics and VnV script) -
Update the documentation for the module in which your feature will be available.
Edited by Boris Basic