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 = []