4. minimizer#

4.1. sd#

Steepest descent minimization algorithm.

Python

Julia

 1Elist = []
 2
 3for i in range(Nit):
 4    E = scf_step(scf)
 5    Elist.append(E)
 6    print('Nit: {}  \tEtot: {:.6f} Eh'.format(i + 1, E), end='\r')
 7    if i > 1 and abs(Elist[i - 1] - Elist[i]) < etol:
 8        print('\nSCF converged.')
 9        return E
10    g = get_grad(scf.atoms, scf.op, scf.W, scf.Y, scf.n, scf.phi, scf.vxc, scf.pot)
11    scf.W = scf.W - beta * g
12print('\nSCF not converged!')
13return E
 1Elist = Float64[]
 2
 3for i = 1:Nit
 4    E = scf_step(scf)
 5    append!(Elist, E)
 6    print("Nit: $(i)  \tEtot: $(round(E; digits=6)) Eh\r")
 7    if i > 1 && abs(Elist[i-1] - Elist[i]) < etol
 8        println("\nSCF converged.")
 9        return E
10    end
11    g = get_grad(scf.atoms, scf.W, scf.Y, scf.n, scf.phi, scf.vxc, scf.pot)
12    scf.W = scf.W .- beta .* g
13end
14println("\nSCF not converged!")
15return E