Summary
Add support for unpreconditioned GMRES when precond = "none".
Rationale
Unpreconditioned GMRES provides a useful baseline for evaluating new preconditioners, including improvements in iteration count and total runtime with setup costs included. It also helps with debugging by narrowing down the source of failures through preconditioned and unpreconditioned runs.
Description
A minimal implementation would be to add PreconditionerIdentity, a class derived from Preconditioner that represents $M = I$ and is therefore mathematically equivalent to applying no preconditioner. This approach would simply reuse the existing preconditioner interface and GMRES implementation with minimal changes.
Alternatively, GMRES could provide a dedicated unpreconditioned path that does not use $M$ at all, but this would require more changes.
Additional information
No response
Summary
Add support for unpreconditioned GMRES when
precond = "none".Rationale
Unpreconditioned GMRES provides a useful baseline for evaluating new preconditioners, including improvements in iteration count and total runtime with setup costs included. It also helps with debugging by narrowing down the source of failures through preconditioned and unpreconditioned runs.
Description
A minimal implementation would be to add$M = I$ and is therefore mathematically equivalent to applying no preconditioner. This approach would simply reuse the existing preconditioner interface and GMRES implementation with minimal changes.
PreconditionerIdentity, a class derived fromPreconditionerthat representsAlternatively, GMRES could provide a dedicated unpreconditioned path that does not use$M$ at all, but this would require more changes.
Additional information
No response