Skip to content

Adds a bump-based Marching Cubes option - #1950

Draft
kennyweiss wants to merge 19 commits into
developfrom
feature/kweiss/mc-bump
Draft

Adds a bump-based Marching Cubes option#1950
kennyweiss wants to merge 19 commits into
developfrom
feature/kweiss/mc-bump

Conversation

@kennyweiss

Copy link
Copy Markdown
Member

Summary

  • Our existing Marching Cubes functionality in quest only supports structured (Cartesian) grids, but we have users that want to run Marching Cubes on unstructured quad and hex meshes
  • This feature PR adds a bump-based Marching Cubes option to quest to run on structured and unstructured meshes
    • The algorithm is policy-based, and runs on cpu, omp, cuda and hip execution spaces
    • I left the original MC algorithm in place since it is currently more performant on structured grids
    • This is likely due to the new algorithm performing more work. Specifically:
      • it welds the vertices of the MC
      • it also generates a polygonal MC mesh, but our application requires a triangle mesh, so we currently triangulate the output polygons
    • We should instead have an option to use a triangle-based clipping table, which would avoid the extra work
  • Also improves the python script that generates Cartesian meshes as input to our MC example, and adds a new script to generate unstructured meshes for the MC example

TODO:

  • Show performance numbers for CPU and GPU runs

…d implementation as legacy

The original implementation only supported structured input meshes.
This implementation leverages bump's support for both structured
and unstructured inputs.
And improves some documentation.
All of MC depends on conduit and the bump Impl/Adapter also depend on bump.
The example now depends on bump.

Also includes some misc. formatting and doxygen changes.
... instead of keeping it in global state.
Also uses RAII for the logger instead of an explicit initialize/finalize call, and adds some misc formatting/comment changes.
Tests the different orderings and checks that the results match expectations.
…eprint

It was previously hard-coded to only support multidomain blueprint.

Also adds a python script to generate single domain marching cubes blueprint meshes.
Work for bump/legacy, structured/unstructured, single/multi domain.
…cells

After checking the labels, we know which zones contributes cells to
the extracted surface. Store those in a list to avoid extra work.
Adds faster path for edge labelings on structured meshes.
Also reserves the hash map size in bump::Unique.
@kennyweiss kennyweiss self-assigned this Aug 13, 2026
@kennyweiss kennyweiss added Quest Issues related to Axom's 'quest' component GPU Issues related to GPU development User Request Issues related to user requests high priority Bump labels Aug 13, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

Bump GPU Issues related to GPU development high priority Quest Issues related to Axom's 'quest' component User Request Issues related to user requests

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant