Skip to content

Replace nested sparse solver calls in ripple solver with direct iterative methods #49

@krystophny

Description

@krystophny

Summary

Refactor ripple solver to use sparse iterative methods directly for the full problem using a matrix-free approach, eliminating nested solver calls.

Background

Currently the ripple solver uses Arnoldi-Richardson iterations where each iteration requires solving a sparse linear system. We can reformulate to solve the entire problem with a single iterative solver using matrix-free methods.

Dependencies

Tasks

  • Analyze current Arnoldi formulation to understand the full operator
  • Implement matrix-free operator for the complete ripple problem
  • Adapt BiCGSTAB for matrix-free operation
  • Adapt GMRES for matrix-free operation
  • Adapt IDR(s) for matrix-free operation
  • Develop physics-aware preconditioners
  • Compare convergence and performance with nested approach
  • Ensure physics results remain identical

Implementation Strategy

  1. Build on iterative solvers from Add iterative solver methods to sparse solver module #48
  2. Instead of assembling sparse matrices, implement matrix-vector products directly
  3. The operator applies the full physics without intermediate linear solves
  4. Use Krylov methods with this matrix-free operator
  5. May need specialized preconditioners for convergence

Matrix-Free Approach

  • No explicit matrix assembly
  • Operator computes action of full ripple problem
  • Leverages physics structure for efficiency
  • Reduces memory requirements significantly

Expected Benefits

  • Eliminate nested solver inefficiency
  • Lower memory usage (no matrix storage)
  • Better scalability
  • More direct convergence control
  • Potential for physics-based optimizations

Challenges

  • Matrix-free preconditioners are more complex
  • Need careful operator implementation
  • Convergence may require problem-specific tuning

Testing Requirements

  • Verify identical physics results
  • Compare performance with current method
  • Test convergence for various problem sizes
  • Memory usage comparison
  • Validate with golden records

Related Work

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions