Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

COCG and COCR #288

Open
wsshin opened this issue Jan 23, 2021 · 2 comments
Open

COCG and COCR #288

wsshin opened this issue Jan 23, 2021 · 2 comments

Comments

@wsshin
Copy link

wsshin commented Jan 23, 2021

If I generate pull requests for the conjugate orthogonal conjugate gradient (COCG) method and conjugate A-orthogonal conjugate residual (COCR) method, will they be accepted? I notice that COCG and COCR are not in the roadmap, but these are useful methods.

COCG is a modification of CG for non-Hermitian, complex symmetric matrices. In fact, COCG is equivalent to BiCG for complex symmetric matrices: BiCG uses two matrix-vector multiplications (a.k.a. mat-vecs), A x and Aᵀ x, per iteration, but for complex symmetric A we need only one mat-vec because Aᵀ = A, and this simplification is basically what COCG is. Therefore, COCG produces the same convergence curve as BiCG for complex symmetric A, but it is twice as fast as BiCG in time. BiCGStab(l) also uses two mat-vecs per iteration, so for some problems COCG converges faster than BiCGStab(l).

Similarly, COCR is a modification of the conjugate residual (CR) method for complex symmetric matrices. (CR is a simplification of GMRES for Hermitian matrices.) COCR also uses one mat-vec per iteration, and it is known to produce less oscillatory convergence curves than COCG.

A good overview of the two methods can be found in this freely available journal article. The implementation of these two methods is as simple as CG. I need these methods for my research, so I would be happy to create pull requests implementing them, if the requests will be accepted even though they are not in the roadmap.

@ranocha
Copy link
Member

ranocha commented Jan 23, 2021

Since such a PR would strictly improve IterativeSolvers.jl by adding new methods, I'm pretty sure it will be accepted (if everything is in order).

@wsshin
Copy link
Author

wsshin commented Feb 22, 2021

I have implemented CR and COCR as well. Because the code for CR and COCR depends on the changes made for COCG in #289, I will create a PR for CR and COCR as soon as #289 is merged.

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

No branches or pull requests

2 participants