Open zhucaoxiang opened 5 years ago
Thanks @zhucaoxiang. Do all the namelist settings work exactly as before or are there any changes we should be aware of as users?
@logan-nc Yes, I think so. CG_maxiter
will determine the maximum iteration. CG_wolfe_c1
and CG_wolfe_c2
are for line searches. The only difference is that the default value of CG_wolfe_c1
is now 0.1
(previously is 1E-4
) and 0<CG_wolfe_c1<0.5
. I have updated the examples in d3d
and rotating ellipse
.
The current nonlinear conjugate gradient (CG) method was written by myself based on the strategy of Yuan & Dai. The line search subroutine is also written by myself based on Numerical Optimization. It is often observed un-converged line search. In the
develop
branch, FOCUS is linked to another well-written library, CG-descent. If you want to use the old version CG, just compile withPFLAGS='-D oldcg'
.Here is a test using the rotating ellipse. Solid lines are the
CG-descent
, and dashed lines the old CG.Convergence over iterations.
Convergence over wall-time.
Poincare plots from
CG-descent
Poincare plots from
old CG
The testing results show that the
CG-descent
is much faster in speed. My guess is that I didn't implement a very good line search subroutine. So I will encourage everyone to test theCG-descent
and will merge it intomaster
after some time.