mirror of https://gitlab.com/QEF/q-e.git
55 lines
3.4 KiB
Plaintext
55 lines
3.4 KiB
Plaintext
In order to compute U for magnetic insulators one needs to follow
|
|
special procedure. Since we do not know a priori the magnetization
|
|
of the system, we perform a calculation with a finite
|
|
starting_magnetization (in the range from -1 to +1) which requires
|
|
to treat the system of interest as a metal (i.e. to use a smearing).
|
|
However, using the smearing can create problems in the linear-response
|
|
calculation of U, because in DFPT for metals at q=0 there is a metallic
|
|
correction which is proportional to the inverse of the DOS at the Fermi
|
|
level [see Eq.(79) in Rev. Mod. Phys. 73, 515 (2001)]. Therefore, if we
|
|
treat the system as a fake metal, then the DOS at the Fermi level might
|
|
be extremely small, which would lead to extremely large shift of the
|
|
Fermi energy and as a consequence to the numerical divergence of the
|
|
DFPT calculation. The solution to this problem is the following:
|
|
|
|
1. Perform a SCF calculation by treating the system as a fake magnetic
|
|
metal. Namely, specify occupations = 'smearing' and set up some very
|
|
small broadening parameter, and set up nspin=2 and starting_magnetization.
|
|
Moreover, use the convergence threshold conv_thr not too small, because
|
|
otherwise there might be problems to converge the SCF calculation in
|
|
the next step.
|
|
|
|
2. Perform a SCF calculation by treating the system as a magnetic insulator
|
|
using the total magnetization obtained in the previous step. Extract from
|
|
the previous calculation the total magnetization and the number of bands
|
|
(Kohn-Sham states) and use them in this SCF calculation by using the
|
|
keywords tot_magnetization and nbnd, respectively. Some details:
|
|
- set up the occupations to be fixed (this is the default in QE), namely
|
|
occupations = 'fixed';
|
|
- use nspin=2 and tot_magnetization, where the total magnetization must
|
|
be extracted from the previous step. The setup of tot_magnetization
|
|
is needed in order to let the code specify correctly the occupations
|
|
for spin up and spin down electrons (without specifying
|
|
tot_magnetization the code will set the number of spin up and spin down
|
|
electrons to be equal, which is wrong for ferromagnetic insulators).
|
|
If tot_magnetization deviates slightly from the integer value then
|
|
round it to the integer value, because non-integer tot_magnetization cannot
|
|
be used in the second SCF calculation (the deviation from the integer
|
|
can be due to numerical noise);
|
|
- set up the number of bands (nbnd) equal to the number of bands in the
|
|
previous run [without specifying nbnd in this calculation, the code will
|
|
set it to be equal to half the number of electrons, while in the
|
|
previous (metallic) calculation the number of bands was determined as
|
|
half of the number of electrons plus 20% - this mismatch would lead
|
|
to numerical problems];
|
|
- in order to save CPU time in the current SCF calculation it is
|
|
recommended to start from the wavefunctions and the potential obtained
|
|
in the previous step. To do so specify in the input startingpot='file'
|
|
and startingwfc='file'. If you ignore this and try to start the SCF
|
|
calculation from scratch, it may happen that the code will not converge
|
|
at all (because it would be hard for it to find the ground state and
|
|
the correct magnetization starting just from the condition of the
|
|
constrained magnetization).
|
|
|
|
3. Perform the linear-response calculation of U using the HP code.
|