Summary
Implement IncreaseQuality() in the ReSolve solver interface by increasing the KLU pivot tolerance and rebuilding the factorization.
Rationale
Ipopt calls IncreaseQuality() when a more stable linear solve is needed. The Ipopt ReSolve interface currently returns false because the factorization and refactorization update path has not been implemented.
Description
Add a maximum pivot tolerance and increase the current tolerance when IncreaseQuality() is called.
Perform a new full KLU factorization using the updated tolerance. For RF, RF-FGMRES, and GLU, rebuild the refactorization solver using the new KLU factors and permutations.
The HIP RF cleanup needed for repeated setup is addressed in ORNL/ReSolve#460.
Additional information
The relevant code is in IncreaseQuality() and MultiSolve() in IpReSolveSolverInterface.cpp.
Summary
Implement
IncreaseQuality()in the ReSolve solver interface by increasing the KLU pivot tolerance and rebuilding the factorization.Rationale
Ipopt calls
IncreaseQuality()when a more stable linear solve is needed. The Ipopt ReSolve interface currently returnsfalsebecause the factorization and refactorization update path has not been implemented.Description
Add a maximum pivot tolerance and increase the current tolerance when
IncreaseQuality()is called.Perform a new full KLU factorization using the updated tolerance. For RF, RF-FGMRES, and GLU, rebuild the refactorization solver using the new KLU factors and permutations.
The HIP RF cleanup needed for repeated setup is addressed in ORNL/ReSolve#460.
Additional information
The relevant code is in
IncreaseQuality()andMultiSolve()inIpReSolveSolverInterface.cpp.