Replace Pinv default with BackslashSolver for better performance and Windows compatibility #121
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
Summary
This PR replaces the problematic
Pinv
default coarse solver with a newBackslashSolver
that uses Julia's built-infactorize()
and backslash operator. This provides much better performance, preserves sparsity, and fixes Windows LAPACK compatibility issues.Problem
The current default coarse solver
Pinv
has serious issues:Matrix(A)
destroys sparsity, causing memory explosionSolution
The new
BackslashSolver
:factorize(A)
which automatically chooses appropriate sparse factorizations (UMFPACK, CHOLMOD, etc.)A \ b
Implementation
Changes
BackslashSolver
implementationPinv
toBackslashSolver
in Ruge-Stuben and Smoothed AggregationBackslashSolver
Pinv
with performance warning (kept for backward compatibility)Testing
BackslashSolver
handles multiple RHS correctlyPerformance Impact
The new default should provide:
Backward Compatibility
Pinv
is still available for users who explicitly request itFixes
This change makes AlgebraicMultigrid.jl's default behavior much more appropriate for sparse linear algebra and aligns with Julia's excellent built-in capabilities.
🤖 Generated with Claude Code