You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
This commit was created on GitHub.com and signed with GitHub’s verified signature.
Features
Performance
Modernized the MAS (Multi-level Additive Schwarz) preconditioner internals and improved stability/performance characteristics in multi-level PCG workflows.
Refined CUDA-side MAS implementation details (viewer-based memory access, C++20 cleanup, safer hierarchy traversal) to improve maintainability and runtime robustness.
Fixes
Fixed AL-IPC tolerance logging metadata so reported frame and Newton iteration values reflect the real simulation step instead of always logging as zero.
Fixed a critical MAS hierarchy indexing issue where level-1 cluster IDs could overlap level-0 IDs in going_next under partition padding, which could corrupt cluster matrices and degrade preconditioner quality.
Fixed MAS scatter-pass diagonal traversal logic to avoid coarsest-level skip/off-by-one behavior and prevent out-of-bounds access in level-size indexing.
Fixed going_next buffer sizing for BANKSIZE-aligned hierarchy layouts and improved guard logic for partitioned vs. unpartitioned vertex traversal paths.
Added a safe fallback for very small-mesh partitioning (avoiding METIS divide-by-zero cases when partition count is too small).
Documentation
PR-backed validation notes:
AL-IPC logging and state accessor updates were verified in simulation test scenarios.
MAS-related changes were validated across the MAS test suite (including benchmark comparisons against diagonal preconditioning).
Refactor / Chore
Renamed joint external-force constitutions from ExternalBodyForce to ExternalForce for clearer and more consistent API naming across headers, CUDA backend, Python bindings, and tests.