DFTK.jl
DFTK.jl copied to clipboard
Figure out an API for eigensolvers/SCF/solvers
Ref https://github.com/mfherbst/DFTK.jl/pull/30 Something like
struct Eigensolver
tol
maxiter
precon # Promises to implement precon(ham) -> P
solver # Promises to implement solver(A,X0,P,tol=tol,maxiter=maxiter)
end
default_eigensolver(tol=1e-6, maxiter=100) = Eigensolver(tol, maxiter, lobpcg_hyper)
Something like https://github.com/mauro3/Parameters.jl could help
We really need to do this at one point. Something like
solver = Solver(basis, DensityMixing(; mixing, eigensolver); occupation_scheme, rho_init, psi_init)
scfres = solve(solver)
? That seems to be the pattern used in the SciML solvers.
closing discussion in favour of #790.