3.6 Electron density update
In FHI-aims, the first step of a new iteration is the update of the electron density based on the output Kohn-Sham orbitals produced by a previous step.
The present section covers only the actual density update. Techniques relevant for the self-consistent convergence of the whole calculation (electron density mixing, preconditioning, etc.) are covered separately in Sec. 3.10.
Tags for general section of control.in:
Tag: density_update_method(control.in)
Usage: density_update_method type
Purpose: Governs the selection of the density update
type.
Restriction: For periodic boundary conditions, only the density-matrix
based electron density update is supported.
Default: Cluster case: automatic.
Periodic case: density_matrix
Choices for type:
-
•
orbital : Use Kohn-Sham orbitals based update
-
•
density_matrix : Use density-matrix based update method. Required for periodic systems.
-
•
automatic : Selects the best update method automatically, based on the expected amount of work.
-
•
split_update_methods : Charge density is updated via Kohn-Sham orbitals and force is updated via density-matrix
If not specified, default for cluster geometries is the automatic selection of the density update method.
See Ref. [36] for details regarding density update mechanisms. In general, FHI-aims offers an electron density update based on Kohn-Sham orbitals [ with system size, but faster for finite systems up to 100-500 atoms depending on basis size], and an rewrite based on the density matrix. This should be used for large systems, and is the default for periodic systems.
For the non-periodic case, the current code version determines the switching point between the orbital-based update and the density-matrix based update automatically through some heuristics. This procedure guarantees that accidental calculations will not happen for very large systems, but the optimum cross-over point may not always be exactly found. If you are planning long runs of essentially the same geometry (molecular dynamics trajectories are a good example), you may save some time by performing some explicit benchmarks first. You can then specify the optimum density update method for your own case, instead of relying on our heuristics.