Skip to content

v0.0.22

Choose a tag to compare

@MuGdxy MuGdxy released this 24 Mar 23:51
· 310 commits to main since this release
2d821e1

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.