This page gives a description of the “run phase data” input section that modifies all the default parameters in the code that affect the scf calculation. The entire run phase section input is optional. The geometry relaxation and cell optimization input modules can be invoked from within the run phase section input.
The default units for the run phase section are Ry for energies and bohr for distances.
Current constraints, important version notes:
- geometry section only at end of run phase section before v2.53
- geometry input ends with “end geometry” as of v2.53
- cell optimization installed in v2.53
Input options
The run phase input section appears directly after the setup phase section, begins with the keyword “run phase data” and ends with the keyword “end run phase data”. The entire run phase section input is optional.
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.
run phase data - begin run phase data input section
...
temperature (Ry) for occupation weighting
temp
blend ratio - initial scf blend factor
blend (require 0 < blend < 1)
scfbl2 - scf blend factor for subsequent geometries in relaxation
scfbl2 (require 0 < scfbl2 < 1)
convergence - scf convergence criterion (Ry) (delta-Hamiltonian matrix)
conv_scf
states - number of eigenstates to obtain in solve
n_state
iterations - maximum number of scf iterations
n_iter
history - max number scf iterations in Broyden blend history
n_hist_scf
no ges - turns off dynamic SCF guessing, reverts to overlapping spherical atom guess (2.61)
cutgrd - set orbital range on grid, see explanation below
cutgrd Default=2d-8 (2.65), 2d-7 (2.64 and earlier)
cutfrc - alter force integral cutoffs
cutfrc (set to 0.01 - 0.001 for fine stress accuracy)
cutfac - alter all integral cutoffs
cutfac (less accurate 10.0 - 1.0 - 0.001 most accurate)
closed shell - enforce closed shell (0K w/gap) occupations (2.59)
kclosed shell - almost closed shell, finite T within k-pt (2.59)
...
spconv - set convergence for spin polarization (in electron #)
conv_sp
spmeth - method for spin optimization
method_sp (a6) (method_sp = SIMPLE, LINEAR=default )
spsteps - number of steps (trial polarizations) to find optimal spin
nstep_sp
spblend - blend factor for spin update (simple scheme)
blend_sp (should be between 1.0-2.0, default=1.5, "safe"=1.0)
...
dynamics - invokes MD input section
... MD data input
end dynamics - end of MD input section
...
geometry relaxation - invokes geometry input section
... geometry optimization data
end geometry - end of geometry input section
...
cell optimization - invokes cell input section
... cell optimization data
end cell parameters - end of cell optimization input section
...
bandstructure - invokes band structure input section
... band structure configure
end bands - end of band structure configure section
...
end run phase data - end of run phase input section
SCF Convergence
The code uses the maximum change of a Hamiltonian matrix element as its figure of merit for the convergence of the self-consistent calculation, rather than the change of the total energy, density matrix, density or potential on grid. The motivation for this is that the code uses a modified Broyden blending scheme on the Hamiltonian matrix in its SCF updates. Hence the Hamiltonian matrix is the appropriate item to test. The change in the total energy is not necessarily correlated with the level of convergence.
The criterion the code uses to determine convergence is a change (Ry) in any matrix element. In every SCF cycle, the Broyden code writes out what the rms and max change are (grep output for ‘scfch’, or ‘max change’ for pre-2.63). For different problems, metals vs. insulators, transition metals vs. alkali metals, etc., the convergence of the energy (and other properties) will be different as a function of the convergence criterion. The user can examine this relative convergence, and modify the SCF criterion appropriately to either converge more finely (make the criterion smaller) or to converge less if the problem is overconverged for their needs (make the criterion larger).
Orbital range cutoffs
The grid range cutoff, using “cutgrd”, sets the range that basis functions extend on the grid, the smaller the parameter, the longer the range. The default value of this cutoff in 2.64 and earlier was 2.d-7. This proved inadequate for the fine stresses needed to compute elastic constants from stress-strain relations (using small strains), for some (soft) cell optimizations, and for some long-range van der Waals calculations. In 2.65, this default was changed to 2.d-8, extending the range of local basis functions farther. This change in default causes the computed energy of all calculation results to change slightly. Direct comparisons of results between pre-265 and post-265 should avoided, unless this parameter is made consistent between the different versions—the cutgrd option, even though undocumented until 2.65, is available in earlier versions. We have found that we prefer even longer cutoffs, using 1.d-8, for some very fine work.
Cutoffs
The cutXXX keywords modify cutoffs for integral evaluations, and are used to scale the default cutoffs in the code, i.e., a input value of 1.0 would have a null effect. The cutoffs represent the minimum absolute magnitude of an overlap Gaussian for an integral to be evaluated (otherwise, it is skipped). The cutoffs have been carefully tuned, but experience has shown that the force cutoffs might need to be reduced for better accuracy in very fine atomic relaxation, and when doing elastic constant calculations from stress-strain curves. In the latter case, the cutfrc parameter we use typoically ranges from 0.1 to 0.01, but might need to be as small as 0.005. Note that calculations get more expensive the smaller this factor is set.
Troubleshooting
The calculation will not converge (the most common complaint):
- If it fails to converge in the first step …Check that atomic configuration makes sensee.g.: scaling set to convert Angstrom to bohr, correct cell dimensionsCheck that atomic identities are correct in setup phasee.g.: that you have not accidentally interchanged hydrogen atoms and carbon atoms to create a carbohydrogenChange the initial blend ratioThe default is 0.30. Try smaller, to as small as 0.01, or bigger, to as big as 0.80If the calculation is still converging (according to “max change”), increase the maximum iterationsIf “max change” is still shrinking (not stalled), sometimes you just need more iterations to converge the calculationIf metallic (no gap), esp. transition metal, try increasing the electronic temperature.The default is 0.003 Ry. Maybe a higher temperature, 0.010 or even 0.020 will stabilize the calculation? The energies, forces, and stresses are not as good, but this is a common means to stabilize the SCF in a difficult metal.Change (increase) the convergence parameterIf the SCF stalls but is reasonably well converged, this works. Examine total energy vs. “max change” as a function of iterations in the output file (“max change” is the figure of merit for SCF)Reduce the history used in the Broyden SCF blend”Forget” bad iterations more quickly by reducing the used history (to as small as 4 or 5 perhaps)If a metal (esp. a free-electron metal like aluminum), check that you have sufficient states specified.Look in the output file in the eigenstate/occupation listing. If the highest state (in any k-point) is occupied, you may not have solved for enough states. Increase the number of states until you have at least one (and preferably more) empty states at the top.
- If the SCF succeeds in the first step, and fails after that …Change the SCF blend parameter for follow-on steps (“scfbl2“)With SCF guessing ON, the follow-on steps may have a different SCF behavior.Turn off the SCF guessing scheme (“no ges“)Sometimes the SCF guess goes bad. There is a known problem (bug) with the SCF guess if an atom crosses a boundary of the principal unit cell in a relaxation/MD when using non-gamma k-points. The no ges option turns the guessing off.Take the last good geometry and restart the calculationAs mentioned above, the SCF guess will go bad in a non-gamma point calculation if an atom crosses a cell boundary. If you simply take that last geometry and relaunch a new calculation (which will start without a SCF guess), that geometry will converge.