Parameters for structure relaxation

calculation.relaxation.method

keyword: calculation.relaxation.method

possible values: ‘MD’, ‘molecularDynamics’, ‘CG’, ‘conjugateGradient’

default value: ‘MD’

description: the method used for the structure relaxation.

an example:

calculation.relaxation.method = 'CG'

calculation.relaxation.maximumSteps

keyword: calculation.relaxation.maximumSteps

possible values: an integer

default value: max(3n,25), where n is the number of moving atoms.

description: The maximum steps in the minimum energy searching cycle.

an example:

calculation.relaxation.maximumSteps = 200

calculation.relaxation.forceConvergenceCriterion

keyword: calculation.relaxation.forceConvergenceCriterion

possible values: a double number with or without an unit of meV/an, meV/ang, meV/angstrom; eV/an, eV/ang, eV/angstrom; meV/au, meV/a.u., meV/Bhor; eV/au, eV/a.u., eV/Bhor; au, a.u., atomic unit

default value: 0.03 eV/angstrom

description: The criterion of the maximum force componenet for the minimum energy. If the unit string is missing, it will be considered to use the unit implicitly defined by the parameters calculation.control.energyUnit and .lengthUnit.

an example:

calculation.relaxation.forceConvergenceCriterion = ...
0.05 eV/angstrom

calculation.relaxation.stressConvergenceCriterion

keyword: calculation.relaxation.stressConvergenceCriterion

possible values: a double number with or without the unit of GPa; kbar; au, a.u., atomic unit

default value: 2 GPa

description: The criterion of the maximum component of the stress (per volume) for the minimum energy. If the unit string is missing, it will be considered to use the unit implicitly defined by the parameters calculation.control.energyUnit and .lengthUnit. Note: 1 GPa = 10 kbar = 3.3989e-05 au.

an example:

calculation.relaxation.stressConvergenceCriterion = 2.5 GPa

calculation.relaxation.movingAtoms

keyword: calculation.relaxation.movingAtoms

possible values: integer array

default value: all atoms in the central cell for molecular or bulk system; no default value for system with probes

description: The 3*n coordinates corresponding to the atoms listed in the movingAtoms will be allowed to change during the relaxation, and the others will be fixed.

an example:

calculation.relaxation.movingAtoms = [10:291]

calculation.relaxation.rigidBodies

keyword: calculation.relaxation.rigidBodies

possible values: cell array, each cell contains an integer array

default value: empty

description: The atoms listed in each cell are considered as a rigid body, i.e., the internal freedoms between the atoms with the rigid body are frozen during the relaxation. Note that (1) all the atoms in the rigid bodies should be in the list of movingAtoms; (2) no atoms can be shared by two rigid bodies, a constrained group and a rigid body, or two constrained groups. (3) each rigid body should contain at least two atoms.

an example:

calculation.relaxation.rigidBodies = {[21:26], [121:126]}

calculation.relaxation.constrainGroups1D

keyword: calculation.relaxation.constrainGroups1D

possible values: cell array, each cell contains an integer array

default value: empty

description: The atoms listed in each cell are constrained and can only move along a fixed direction given in the parameter relaxation.constrainDirections1D. Note that (1) all the atoms in the groups should be in the list of movingAtoms; (2) no atoms can be shared by two rigid bodies, a constrained group and a rigid body, or two constrained groups. (3) the corresponding moving directions should be given in the parameter relaxation.constrainDirections1D.

an example:

calculation.relaxation.constrainGroups1D = {[21:26], [121:126]}

calculation.relaxation.constrainDirections1D

keyword: calculation.relaxation.constrainDirections1D

possible values: cell array, each cell contains a 3 x 1 double vector

default value: no default value

description: Each cell defines a direction, and the atoms in the corresponding group defined in the parameter relaxation.constrainGroups1D can only be allowed to move along this direction.

an example:

calculation.relaxation.constrainDirections1D = {[1;2;3],[0;0;1]}

calculation.relaxation.constrainGroups2D

keyword: calculation.relaxation.constrainGroups2D

possible values: cell array, each cell contains an integer array

default value: empty

description: The atoms listed in each cell are constrained and can only move perpendicularly to a fixed direction given in the parameter relaxation.constrainDirections2D, i.e., every atom can only be allowed to move within its plane. Note that (1) all the atoms in the groups should be in the list of movingAtoms; (2) no atoms can be shared by two rigid bodies, a constrained group and a rigid body, or two constrained groups. (3) the corresponding plane directions should be given in the parameter relaxation.constrainDirections2D.

an example:

calculation.relaxation.constrainGroups2D = {[21:26], [121:126]}

calculation.relaxation.constrainDirections2D

keyword: calculation.relaxation.constrainDirections2D

possible values: cell array, each cell contains a 3 x 1 double vector

default value: no default value

description: Each cell defines a direction, and every atom in the corresponding group defined in the parameter relaxation.constrainGroups2D can only be allowed to move within a plane normal to the given direction.

an example:

calculation.relaxation.constrainDirections2D = {[1;2;3],[0;0;1]}

calculation.relaxation.fixCentralCellShape

keyword: calculation.relaxation.fixCentralCellShape

possible values: true or false

default value: true

description: If true, the central cell shape will not be changed during the relaxation.

an example:

calculation.relaxation.fixCentralCellShape = false

calculation.relaxation.fixedCellVectors

keyword: calculation.relaxation.fixedCellVectors

possible values: cell array, each cell contains an integer of 1, 2, or 3

default value: n/a

description: The assigned cell vectors are fixed (both directions and lengths) in the relaxation process.

an example:

calculation.relaxation.fixedCellVectors = {1, 2}

calculation.relaxation.fixedCellDirections

keyword: calculation.relaxation.fixedCellDirections

possible values: cell array, each cell contains an integer of 1, 2, or 3

default value: n/a

description: The spatial directions of the assigned cell vectors are fixed. During the relaxation process, the lengths of the said vectors can vary.

an example:

calculation.relaxation.fixedCellDirections = {1, 2}

calculation.relaxation.fixedCellScale

keyword: calculation.relaxation.fixedCellScale

possible values: cell array, each cell contains an integer of 1, 2, or 3

default value: n/a

description: The spatial directions of the assigned cell vectors are fixed. During the relaxation process, the lengths of the said vectors vary with the same scale. It is useful when the crystal structure of the system is known but the lattice constant is unknown. At least two vectors must be assigned in order for this option to work.

an example:

calculation.relaxation.fixedCellScale = {1, 2}

calculation.relaxation.constantVolume

keyword: calculation.relaxation.constantVolume

possible values: true, false

default value: false

description: The volume of the unit cell is fixed during the relaxation process. This handle can be combined with fixedCellVectors, fixedCellDirections and/or fixedCellScale to form various constaints on the unit cell shape.

an example:

calculation.relaxation.constantVolume = true

calculation.relaxation.constantPressure

keyword: calculation.relaxation.constantPressure

possible values: 1 x 1, or 1 x 3, or 1 x 6, or 3 x 3 double matrix, with or without the unit of GPa; kbar; au, a.u., atomic unit

default value: 0

description: The external stress applied to the system. When it is a double number, it means an isotropic pressure; 1 x 3 double matrix means an anisotropic pressure; 1 x 6 double matrix means an anisotropic pressure and a symmetrised shear (the order of the six number is P11, P22, P33, P12, P23, and P13); 3 x 3 double matrix means a full stress tensor.

If the unit string is missing, it will be considered to use the unit implicitly defined by the parameters calculation.control.energyUnit and control.lengthUnit.

an example:

calculation.relaxation.constantPressure = [100, 0, 0] GPa

calculation.relaxation.opticalPhononFrequency

keyword: calculation.relaxation.opticalPhononFrequency

possible values: a double number with or without the unit of meV, eV, THz, Hz, or /cm

default value: 2000 /cm

description: A reasonably estimated value of the optical phonon frequency of the system. In MD, this value is used to set up the proper time step. In CG, this value is used to optimize the first line search trial. An input close to physical value will greatly speed up the relaxation process. If unsure about the proper value to use, the user is advised to set this quantity conservatively, i.e., at higher values. The relaxation will generally take longer, with the benifit of enhanced stability.

Note: if the unit string is missing, it will be considered to use the unit defined by the parameter calculation.control.energyUnit.

an example:

calculation.relaxation.opticalPhononFrequency = 1000 /cm

calculation.relaxation.bulkModulus

keyword: calculation.relaxation.bulkModulus

possible values: a double number with or without the unit of GPa; kbar; au, a.u., atomic unit

default value: 100 GPa

description: A reasonably estimated value of the bulk modulus of the system. This quantity is useful for a variable unit cell relaxation. In MD, this value is used to set up the proper time step. In CG, this value is used to optimize the first line search trial. An input close to physical value will greatly speed up the relaxation process. If unsure about the proper value to use, the user is advised to set this quantity conservatively, i.e., at higher values. The relaxation will generally take longer, with the benifit of enhanced stability.

If the unit string is missing, it will be considered to use the unit implicitly defined by the parameters calculation.control.energyUnit and control.lengthUnit. Note: 1 GPa = 10 kbar = 3.3989e-05 au.

an example:

calculation.relaxation.bulkModulus = 300 GPa

calculation.relaxation.history

keyword: calculation.relaxation.history

possible values: true or false

default value: false

description: If true, a file searchingHistoryOfTheStructures.txt is generated to record the searching history of the structures.

an example:

calculation.relaxation.history = false

calculation.relaxation.CG.type

keyword: calculation.relaxation.CG.type

possible values: ‘FR’, ‘Fletcher-Reeves’ ‘PR’, ‘Polak-Ribiere’, ‘SD’, ‘steepestDescent’,

default value: ‘FR’

description: The conjugate gradient (CG) method can be used in different ways, including the steepest-descent searching. This parameter specify the way used in the CG method.

an example:

calculation.relaxation.CG.type = 'SD'

calculation.relaxation.CG.maxLineSearchIterations

keyword: calculation.relaxation.CG.maxLineSearchIterations

possible values: an integer number

default value: 2

description: The maximum number of line-search iterations.

an example:

calculation.relaxation.CG.maxLineSearchIterations = 5

calculation.relaxation.MD.deltaT

keyword: calculation.relaxation.MD.deltaT

possible values: a double number

default value: 1

description: The scaled initial time step. The unit of the time step is pi/2/opticalPhononFrequency (see the description for calculation.relaxation.opticalPhononFrequency).

an example:

calculation.relaxation.MD.deltaT = 0.5

calculation.relaxation.MD.alpha

keyword: calculation.relaxation.MD.alpha

possible values: a double number greater than 1.

default value: 1.2

description: the alpha factor which is used to increase the time step when the relaxation is too slow. A larger value will result in larger increase in time step every time it is adjusted.

an example:

calculation.relaxation.MD.alpha = 1.5

calculation.relaxation.MD.beta

keyword: calculation.relaxation.MD.beta

possible values: a double number less than 1.

default value: 0.8

description: The beta factor which is used to decrease the time step when the relaxation is unstable. A smaller value will result in larger decrease in time step every time it is adjusted.

an example:

calculation.relaxation.MD.beta = 0.7

calculation.relaxation.MD.maxMove

keyword: calculation.relaxation.MD.maxMove

possible values: a double number

default value: 0.2 Bohr

description: The scaled maximum displacement allowed between two steps, in the length unit defined by the input parameter calculation.control.lengthUnit.

an example:

calculation.relaxation.MD.maxMove = 0.1

calculation.relaxation.MD.fdamp

keyword: calculation.relaxation.MD.fdamp

possible values: a double number between 0 and 1.

default value: 0.35

description: The damping factor. Zero means no damping.

an example:

calculation.relaxation.MD.fdamp = 0.7

calculation.relaxation.vdwInteractionQ

keyword: calculation.relaxation.vdwInteractionQ

possible values: true or false

default value: false

description: If true, van der Waals interaction will be included during the relaxation.

an example:

calculation.relaxation.vdwInteractionQ = true

calculation.relaxation.vdwInteractionParameter.method

keyword: calculation.relaxation.vdwInteractionParameter.method

possible values: ‘Grimme’

default value: ‘Grimme’

description: The parameter vdwInteractionParameter is a structure with many fields. Here the field method gives the method for the van der Waals interaction calculation. For how to set other fields of the structure, please refer to the description of the parameter calculation.vdwForce.

an example:

calculation.relaxation.vdwInteractionParameter = []