The Lanczos method is a way to find the lowest eigenvalue and eigenvector efficiently without building the whole Hessian matrix. At each iteration, a new direction is added to the searching space by timing the Hessian, H, to the previous direction, v. Hv can be evaluated by finite difference: Hv = F(x0+dR*v) - F(x0), where F is the force and dR is the finite difference step, i.e. the separation distance in the dimer method. After ith iteration, the explored space spanned by \(\{ \rm{v, Hv, H^{2}v, \cdots, H^{i-1}v} \}\), which is the Krylov subspace. The lowest eigenvalue usually converges when i is much less than the dimensionality of the system. [1] [2]
The lanczos_atoms is a subclass of SSDimer_atoms, which employs the Lanczos algorithm to find the lowest curvature mode (the rotational part in ssdimer).
class lanczos_atoms(SSDimer_atoms):
rotationOpt: not valid
Example:
from tsase.dimer import lanczos d = lanczos.lanczos_atoms(p, rotationMax = 10, phi_tol=3, ss = False) # use quickmin optimizer in ssdimer d.search(minForce = 0.0001, movie = "dimer2.movie", interval = 20 ) ### Or use other first order optimizer in ase. ### Second order optimizers cannot be used when "ss = True". #dyn = MDMin(d) #dyn.run(fmax=0.0001)
References
| [1] |
|
| [2] |
|