44# maxiter), where f(x) is the fixed-point map. It must return an
55# object supporting res.sol and res.converged
66
7- # TODO max_iter could go to the solver generator function arguments
8-
97"""
108Create a damped SCF solver updating the density as
119`x = β * x_new + (1 - β) * x`
1210"""
1311function scf_damping_solver (β= 0.2 )
14- function fp_solver (f, x0, max_iter ; tol= 1e-6 )
12+ function fp_solver (f, x0, maxiter ; tol= 1e-6 )
1513 β = convert (eltype (x0), β)
1614 converged = false
1715 x = copy (x0)
18- for i = 1 : max_iter
16+ for i = 1 : maxiter
1917 x_new = f (x)
2018
2119 if norm (x_new - x) < tol
@@ -36,13 +34,13 @@ Create a simple anderson-accelerated SCF solver. `m` specifies the number
3634of steps to keep the history of.
3735"""
3836function scf_anderson_solver (m= 10 ; kwargs... )
39- function anderson (f, x0, max_iter ; tol= 1e-6 )
37+ function anderson (f, x0, maxiter ; tol= 1e-6 )
4038 T = eltype (x0)
4139 x = x0
4240
4341 converged = false
4442 acceleration = AndersonAcceleration (; m, kwargs... )
45- for n = 1 : max_iter
43+ for n = 1 : maxiter
4644 residual = f (x) - x
4745 converged = norm (residual) < tol
4846 converged && break
@@ -57,7 +55,7 @@ CROP-accelerated root-finding iteration for `f`, starting from `x0` and keeping
5755a history of `m` steps. Optionally `warming` specifies the number of non-accelerated
5856steps to perform for warming up the history.
5957"""
60- function CROP (f, x0, m:: Int , max_iter :: Int , tol:: Real , warming= 0 )
58+ function CROP (f, x0, m:: Int , maxiter :: Int , tol:: Real , warming= 0 )
6159 # CROP iterates maintain xn and fn (/!\ fn != f(xn)).
6260 # xtn+1 = xn + fn
6361 # ftn+1 = f(xtn+1)
@@ -70,7 +68,7 @@ function CROP(f, x0, m::Int, max_iter::Int, tol::Real, warming=0)
7068
7169 # Cheat support for multidimensional arrays
7270 if length (size (x0)) != 1
73- x, conv= CROP (x -> vec (f (reshape (x, size (x0)... ))), vec (x0), m, max_iter , tol, warming)
71+ x, conv= CROP (x -> vec (f (reshape (x, size (x0)... ))), vec (x0), m, maxiter , tol, warming)
7472 return (; fixpoint= reshape (x, size (x0)... ), converged= conv)
7573 end
7674 N = size (x0,1 )
@@ -79,10 +77,10 @@ function CROP(f, x0, m::Int, max_iter::Int, tol::Real, warming=0)
7977 fs = zeros (T, N, m+ 1 ) # newest to oldest
8078 xs[:,1 ] = x0
8179 fs[:,1 ] = f (x0) # Residual
82- errs = zeros (max_iter )
80+ errs = zeros (maxiter )
8381 err = Inf
8482
85- for n = 1 : max_iter
83+ for n = 1 : maxiter
8684 xtnp1 = xs[:, 1 ] + fs[:, 1 ] # Richardson update
8785 ftnp1 = f (xtnp1) # Residual
8886 err = norm (ftnp1)
@@ -112,4 +110,4 @@ function CROP(f, x0, m::Int, max_iter::Int, tol::Real, warming=0)
112110 end
113111 (; fixpoint= xs[:, 1 ], converged= err < tol)
114112end
115- scf_CROP_solver (m= 10 ) = (f, x0, max_iter ; tol= 1e-6 ) -> CROP (x -> f (x) - x, x0, m, max_iter , tol)
113+ scf_CROP_solver (m= 10 ) = (f, x0, maxiter ; tol= 1e-6 ) -> CROP (x -> f (x) - x, x0, m, maxiter , tol)
0 commit comments