Skip to content

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

@csparker247

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
    No fields configured for issues without a type.

    Projects

    No projects

    Milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions