Skip to content

Conversation

@jobh
Copy link
Collaborator

@jobh jobh commented Jan 24, 2023

#####
# Implemented from algorithm 2.1 -- FCG(m_max) in "Flexible Conjugate
# Gradients" <https://doi.org/10.1137/S1064827599362314>, Y. Notay (2000)
#
# Explicit Gram-Schmidt orthogonalization with up to the previous m_max
# search directions is performed, partially restarted every m_max+1
# iterations. The purpose is to preserve local orthogonality even with
# inexact (nonlinear/variable) preconditioning.
#
# If B is fixed, m_max=1 should have the same convergence as regular CG, at
# the cost of one extra inner product per iteration. If B is variable
# between iterations, it should have more stable convergence. Using larger
# values for m_max primarily pays off when the preconditioner varies *and*
# there is potential for superlinear convergence despite (small) isolated
# eigenvalues -- ref tables 2 and 3 in Notay (2000).
#
# m_max=1, i.e. orthogonality with only the previous search direction, is
# claimed by Notay to be equivalent to the Polak-Ribiere formulation for
# beta used in Golub and Ye (2000) as well as the Wikipedia article. This
# version is also found to be robust wrt nonsymmetric preconditioning (GMG
# without post-smoothing) in Bouwmeester et al (2015).
#####

@jobh jobh marked this pull request as ready for review January 24, 2023 13:34
@jobh jobh force-pushed the jobh/flexible-conjgrad branch from 2ccac52 to aad18d0 Compare January 24, 2023 21:09
@jobh jobh marked this pull request as draft February 6, 2023 09:36
@jobh jobh force-pushed the jobh/flexible-conjgrad branch from aad18d0 to 958ee43 Compare February 7, 2023 15:03
@github-actions
Copy link

github-actions bot commented Feb 7, 2023

File Coverage Lines Branches Missing
All files 51% 57% 44%
block/iterative/__init__.py 100% 100% 100%
block/iterative/flexible_conjgrad.py 6% 6% 0% 29-90

Minimum allowed coverage is 50%

Generated by 🐒 cobertura-action against 958ee43

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants