If there is a center of inversion, the code automatically tries to shift the atomic coordinates such that the crystal has inversion symmetry. If you want to inhibit that, put a line saying:
no restore_inversion
Finally, you can specify whether you want the
symmetry-operations to be generated by the code, or if they should
be read from the file SYMMETRYOPS. If number_symmetry_ops is followed by -1, then the symmetry
operations are determined by the code itself. If number_symmetry_ops is
, the matrices for the symmetry
operation are read in from the file. The file format is the same
as the printout in e.g. OUT.
Default: {\tt number\_symmetry\_ops -1}
If number_symmetry_ops is followed by -2, then the symmetry operations are determined by the code itself, but nonzero fractional translations are ignored. This could be useful for supercells.
begin deformation 0.00 0.00 0.02 0.00 0.00 0.00 0.00 0.00 0.00 end deformationThis is the deformation tensor applied to your structure. It is defined by the following equation:
There are times when it is useful to ensure that a given direction is held fixed during the relaxation process. This does not involve a constraint on the relaxation, as there are three rotational degrees of freedom. One can also arrange to maintain fixed a plane which contains the fixed direction.
To keep the
direction fixed, and also keep the zx plane from
rotating, you could specify...
fixed_vector 0 0 1 other_vector_in_fixed_plane 1 0 0
If job relax or job relax_from_checkpoint or job relax_recycle_H is chosen, the variable relax_what allows different ways to relax a structure:
relax_what force
or
relax_what stress
or
relax_what force_and_stress
Default: relax_what force_and_stress
Another variable allows to manipulate the way the relaxation is done:
Set
relax_how gradient
to simply follow along the forces and stress, without updating the inverse of the Hessian matrix.
Default: update the Hessian
With the variable relax_how the line-minimization can be altered also:
relax_how slow # do 3 steps per line minimization always relax_how normal # do up to 3 steps, based on gradient prediction relax_how fast # do up to 2 steps, only if energy decreases
Default: relax_how normal
Note: This can be combined with the gradient option with a statement like relax_how normal_gradient
The parameter lambda_limit allows you to limit the size of relaxation steps to a certain number. Normally, lambda should be on the order of 1. Sometimes, especially in the beginning of the iteration, and if the H matrix is initialized to small, lambda can become to big, and the algorithm bombs out. It is then advisable to limit lambda with a line like that:
lambda_limit 4.0
Default: lambda_limit 1e6 (no limit)
The statement starting_distortion followed by nine floating point numbers allows to set an initial distortion of the lattice. This feature is only for debugging, and not recommended for use.
With version 5.1.6, there are two relaxation algorithms with the addition of a limited memory BFGS algorithm. The benefit is more in stability and in general better efficiency (only based on a small test suite of systems) than for memory. The input keyword is
relax_method default=1 original BFGS quasi-netwon algorithm
2 limited memory BFGS
An external pressure (units are GPa) can be applied with:
relax_pressure 10.0
If an entry like
relax_pressure adjust
is found, the pressure is chosen from the first iteration, taking it to be 1/3 of the trace of the stress.
Default: relax_pressure 0.0
begin stay_put stay_put 1 stay_put 3 stay_put 10 end stay_put
Default: all atoms are relaxed.
As of paratec 4.5, paratec also offers the option of fixing certain
strain
coordinates while allowing the others to change during the relaxation.
This is done by using the keyword stay_put_lattice within the
stay_put structure. The following example fixes the
and
strains, while allowing the z axis to expand or
contract.
begin stay_put stay_put_lattice xx stay_put_lattice yy end stay_put
Default: all strain coordinates are relaxed.
NOTE: The syntax of the stay_put structure has changed in version 5.0. The end at the end is now an end stay_put.
The Broyden scheme used for the relaxation of the forces and the stress updates an inverse of the Hessian matrix, which essentially describes the enthalpy parabola around the minimum. There are some open parameters which determine the values to which the matrix is initialized. They basically determine the length of the trial steps during the first few iterations:
relax_eps_factor 0.1 initialization perfactor for the stress part of H relax_coord_factor 0.1 initialization perfactor for the force part of H
Try with the values above for the first run. Adjust later such that the first few steps give a lambda of about 0.5 to 1.
Default:
relax_coord_factor 1.0 relax_eps_factor assuming the bulk modulus is about 1 Mbar
Alternatively, you can specify the physical quantities to which the above two variables correspond. This is the recommended way:
estimated_bulk_modulus 1.0 Bulk modulus in MBar
estimated_optical_phonon_frequency 12.0 TO phonon frequency f at
Gamma in THz)
Diamond would have a bulk modulus of about 4.4 MBar and around 35 THz for the optical phonon frequency.
For molecular solids, the option
decouple_coordinates yescauses a different initialization of the Hessian matrix, which decouples the coordinates of the molecule from the lattice vectors to first order. This means that if the lattice vectors change 10 percent, the cartesian coordinates will change by about 1 percent. IF THIS OPTION IS USED, THE SYMMETRY OF THE CRYSTAL IS NOT PRESERVED!.
Default:
decouple_coordinates no