Cell optimization

This page gives a description of input section that controls and modifies how a cell relaxation is done. The code does a fully general cell relaxation via stress-elimination, enforcing all user-specified symmetry, for 1D, 2D, and bulk 3D systems. The cell relaxation input section is optional; all the user need do is add a "do cell" instruction in the command options and the code will automatically attempt to relax the cell shape to give a cell with a zero stress tensor.

The default unit for the cell relaxation section is GPa for bulk 3D, 10-7 N/m for 1D, 10+2 N/m2 for 2D.

Current requirements for use of cell optimization (as of version 2.65):

  • atomic coordinates must be in LATTICE units
  • no scaling functions are allowed in the input

Input options

The cell parameter input section can appear anywhere in the "run phase" section of the input file, begins with a "cell parameter" keyword and ends with a "end cell relaxation" keyword.

The following are the common input keywords in this section. All the keywords are optional, and can appear in any order within this section. The keywords must be left-justified, but all data input is free-format.

cell optimization data - begin cell opt input section ... ucsteps - number of cell steps      n_step_uc uchistory - max cell steps to include in blending history      n_hist_uc uc_convergence - max stress (GPa) convergence criterion      stress_conv constraint - specify type of constraint on cell relaxation 2.65) ucconstraint where uconstraint=[isotropic|vfixed|xrelax|xfixed|yrelax|yfixed|zrelax|zfixed] pressure - external pressure (GPa)      P uniaxial_pressure - external x,y,z axial pressures      P_x P_y P_z stress - external stress (ndim X ndim symmetric tensor)      s(1,1) s(2,1) s(3,1)      s(1,2) s(2,2) s(3,2)      s(1,3) s(2,3) s(3,3) ucmethod - method for stress elimination      method_uc (BROYDEN or STEEPEST) str_broyden - cutoff for switch to broyden (GPa)      stress_broy bulk_modulus - (in GPa; can improve initial cell update      B ... end cell optimization - end of cell opt input section

Details

  • Important: The external stress is input as a 2×2 matrix for a 2D (slab) problem and 1×1 in a 1D-chain problem.
  • The default method for cell relaxation is a combination method: starts with STEEPEST (descent) and switches to BROYDEN when the maximum stress goes below stress_broy.
  • Choose, at most, one of (pressure, uniaxial, stress) – all modify the same external stress tensor, and, used in combination, will do so unpredictably.

Types of cell relaxation constraints

The code has some simple optimizations available. The isotropic constraint is the most immediate useful—one can do a c/a study for hcp, for example. The volume-fixed shape optimization is a little crude, and therefore might not be perfectly clean. The axial constraints are straightforward for orthorrhambic cells, but will be less useful otherwise.

  1. isotropic – does a shape conserving volume optimization of the cell.
  2. vfixed – does a volume-conserving cell-shape optimization.
  3. Ufixed – for U=(x,y, or z), does a cell optimization conserving the U axial dimension
  4. Urelax – for U=(x,y, or z), does a cell optimization relaxing the U axial dimension, but keeps the other axial dimensions fixed

Troubleshooting

The cell shape and stress are converging very slowly.The calculation may be making small steepest descent steps. The best option depends on the situation. Giving a smaller bulk_modulus (default ~100) will expand the first cell update step size (and subsequent step sizes). If the stress is decreasing, then the calculation is likely in a basin (and converging) and stuck doing small steepest descent steps. If the stress is monotonically decreasing from the beginning, select BROYDEN as the ucmethod, or modify the stress (using str_broyden) at which the default combination method switches from steepest descent to Broyden.
Note: with new cell optimizer (2.65), the cell relaxation should be better behaved.The cell "blew up" on the first cell update step.Increase the bulk_modulus input (default ~100) to reduce the step size on the first cell update.Later (after the first step) the cell "blew up".If you are not in a potential well, the second derivative matrix might be ill-behaved and Broyden will fail. Try using STEEPEST as the minimization method (starting with the last "good" cell shape).The minimization stalls and the cell will not converge further.Numerical noise – the convergence criterion might be smaller than the inaccuracy in the computed stress. Tighten force convergence criterion, and/or use a denser grid (to get more accurate stress).