sr keywords
Structure relaxation parameters
sr.eggbuf
This parameter controls the eggbox effect buffer for the Goldstein condition.
type: scalar
default: 1e-05
example: sr.eggbuf = 1e-8
sr.initStep
This parameter controls the displacement/force relationship during the relaxation. Simply put, a small value make the relaxation slower but stable and a large value makes the relaxation faster but less stable. If the relaxation method includes line searches (conjugate gradient or quasi-Newtom methods), RESCU first goes into a bracketing phase. If the line search starts at X and the search direction is S, then RESCU will begin the line search at X + sr.initStep*S. Note that the bracketing phase ends when X + sr.maxStep*S is reached, and hence sr.initStep < sr.maxStep. It is 1 by default. If a molecular dynamics relaxation is employed, then sr.initStep takes the role of a time step. The FIRE algorithm will use sr.initStep as an initial time step and it will shorten or lengthen the time step automatically during the relaxation process. It is by default 10 femtoseconds. Note that it is assumed that all ions have the proton mass.
type: scalar
default: 1
example: sr.initStep = 2
sr.maxStep
This parameter controls the displacement/force relationship during the relaxation. Simply put, a small value make the relaxation slower but stable and a large value makes the relaxation faster but less stable. If the relaxation method includes line searches (conjugate gradient or quasi-Newtom methods), RESCU first goes into a bracketing phase. If the line search starts at X and the search direction is S, then RESCU ends the line search when X + sr.maxStep*S is reached. Note that the bracketing begins at X + sr.initStep*S, and hence sr.initStep < sr.maxStep. It is 50 by default. If a molecular dynamics relaxation is employed, then sr.maxStep takes the role of a time step. The FIRE algorithm will bound the time step by sr.maxStep as it will shorten or lengthen the time step automatically during the relaxation process. It is by default 100 femtoseconds. Note that it is assumed that all ions have the proton mass.
type: scalar
default: 50
example: sr.maxStep = 75
sr.maxit
Maximal number of search direction. RESCU will stop after executing sr.maxit line searches.
type: scalar
default: 100
example: sr.maxit = 200
sr.maxhistory
Maximal number of positional configurations and forces used in approximating the Hessian operator. This keyword is only relevant if sr.method = ‘l-bfgs’.
type: scalar
default: 10
example: sr.maxhistory = 20
sr.maxLineIt
Maximal number of ionic configurations calculated during a line search. This is only relevant for conjugate gradient or quasi-Newtom methods.
type: scalar
default: 5
example: sr.maxLineIt = 2
sr.method
Ionic relaxation algorithm. qn stands for Quasi-Newton. Many methods are implemented and qn-bfgs is recommended. cg stands for conjugate gradient. Many methods are implemented and cg-pr is recommended. fmin uses the non-linear solver available with the MATLAB optimization toolbox. fire is the FIRE algorithm which is a variation of damped molecular dynamics.
type: string
default: 'qn-bfgs'
allowed: 'qn-bfgs','cg-fr','cg-pr','fmin','fire','l-bfgs'
example: sr.method = 'cf-fr'
sr.lineMethod
Line search algorithm. The normal method minimizes the force in the search direction whereas the Fletcher method minimizes the total energy along the search direction. The methods are equivalent in principle, but the normal method is more robust in practice when the total energy is not converged to machine precision with respect to many parameters such as resolution, k-sampling, self-consistency, etc.
type: string
default: 'normal'
allowed: 'normal','fletcher'
example: sr.lineMethod = 'fletcher'
sr.moveableAtomList
Array containing the indices of the relaxed atoms. The default is to relax all atoms except the first atom.
type: array
example: sr.moveableAtomList = [2 5 9 10]
sr.relaxedstructure
File in which RESCU writes the relaxed atomic coordinates.
type: string
default: ./relaxedstructure.xyz
example: sr.relaxedstructure = './co2_relaxed.out'
sr.relaxationprocess
File in which RESCU writes the relaxation process.
type: string
default: ./relaxationprocess.txt
example: sr.relaxationprocess = './relax.out'
sr.save
If sr.save is a non-empty char array, then the atom positions are printed to an XYZ file at each ionic step. The file is named after the char array.
type: string
example: sr.save = './H2O'
sr.sigma
This parameter controls the strong Wolfe condition.
type: scalar
default: 0.75
example: sr.sigma = 0.1
sr.tol
Force tolerance. The relaxation process stops once the residual forces on the movable atoms are less than the specified tolerance. The default unit is Hartree/Bohr.
type: scalar
default: 0.0001
example: sr.tol = 1e-6