Skip to content

[Refactor] Implement Policy-Based Math Backends (Eigen Reference) #55

Description

@csparker247

Description

Refactor ABFPlusPlus to decouple the algorithm from the Eigen library. The algorithm will now interact with a Backend object constrained by a C++20 Concept.

Tasks

  • Define include/OpenABF/Backend/Concepts.hpp using C++20 template <typename T> concept MathBackend.
  • Implement include/OpenABF/Backend/Eigen.hpp as the primary reference backend.
  • Update ABFPlusPlus::Compute to utilize the backend for:
    • Sparse matrix assembly from std::span<Triplet>.
    • Linear algebra primitives (spmv, axpy, invert_diagonal).
    • Preserving Eigen's expression templates through proxy return types.
  • Unit test: Ensure current ABF++ results are identical after the refactor.

Metadata

Metadata

Assignees

No one assigned

    Labels

    enhancementNew feature or request

    Type

    No type

    Projects

    No projects

    Milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions