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