#pragma once #include #include #include #include namespace fesa { struct LinearSolveResult final { std::vector solution; double relative_residual{}; std::vector diagnostics; }; class LinearSolver { public: virtual ~LinearSolver() = default; [[nodiscard]] virtual LinearSolveResult solve( const SymmetricCsr& matrix, std::span rhs) = 0; }; } // namespace fesa