Skip to content

Commit ecb9ba1

Browse files
Update recip_precond docs (#20)
* Update recip_precond.rst * Update recip_precond.rst * Update recip_precond.rst, fix undefined sequence braket in latexpdf. * Update recip_precond.rst: fix typo
1 parent ed90ef1 commit ecb9ba1

File tree

1 file changed

+34
-22
lines changed

1 file changed

+34
-22
lines changed

recip_precond.rst

Lines changed: 34 additions & 22 deletions
Original file line numberDiff line numberDiff line change
@@ -12,18 +12,18 @@ preconditioning.
1212
is defined as:
1313

1414
.. math::
15-
K_{\mathbf{G}, \mathbf{G}^{\prime}}=\delta_{\mathbf{G}, \mathbf{G}^{\prime}} \frac{27+18 x+12 x^2+8 x^3}{27+18 x+12 x^2+8 x^3+16 x^4}
15+
P_{\mathbf{G}, \mathbf{G}^{\prime}}=\delta_{\mathbf{G}, \mathbf{G}^{\prime}} \frac{27+18 x+12 x^2+8 x^3}{27+18 x+12 x^2+8 x^3+16 x^4}
1616
1717
where
1818

1919
.. math::
20-
x=\frac{\left(\hbar^2|\mathbf{k}+\mathbf{G}|^2\right) / 2 m}{T_i^m}
20+
x=\frac{\left(\hbar^2|\mathbf{k}+\mathbf{G}|^2\right) / 2 m}{T_i}
2121
22-
and :math:`T_i^m=<\psi_i^m\left|\left(-\hbar^2 / 2 m\right) \nabla^2\right| \psi_i^m >`
23-
which is related to the band :math:`i` that :math:`K` is applied to.
22+
and :math:`T_i=\left < \psi_i\left|\frac{-\hbar^2}{2 m} \nabla^2\right| \psi_i \right>`
23+
which is related to the band :math:`i` that :math:`P` is applied to.
2424

25-
In ONETEP, since we do not have the kinetic energy eigenvalues, :math:`x` is
26-
modified to be:
25+
In ONETEP, by default we want to avoid calculating the kinetic energy
26+
eigenvalues, :math:`x` is modified to be:
2727

2828
.. math::
2929
x=\frac{\frac{1}{2}|\mathbf{G}|^2}{\frac{1}{2}k_0^2}
@@ -34,33 +34,45 @@ Automatic selection of :math:`k_0`
3434
==================================
3535

3636
Since ONETEP version 8, it is possible to perform calculations where :math:`k_0`
37-
is calculated automatically based on the average kinetic energy at each NGWF
38-
step. I.e.,
37+
is calculated automatically based on the kinetic energy at each NGWF
38+
optimisation step. I.e.,
3939

4040
.. math::
41-
k_0 = \sqrt{\frac{\mathrm{Max[Tr(KT)]}}{n_\mathrm{occupied\ bands}}}
41+
k_0 = \sqrt{\mathrm{Max[Eig[KT]]}}
4242
43-
where :math:`\mathrm{Max[Tr(KT)]}` is the max value of the trace of the kinetic
44-
energy operator matrix in the NGWF basis, and :math:`n_\mathrm{occupied\ bands}`
45-
is the number of occupied bands.
43+
where :math:`K` is the density kernel and :math:`\mathrm{Max[Eig(KT)]}` gives
44+
the max eigenvalue of the (occupation weighted) kinetic energy matrix in the
45+
NGWF basis.
4646

47-
It is also possible to perfrom NGWF-specific preconditioning so that no
48-
band averaging is needed. In this case, each NGWF will have its own :math:`k_0`
49-
value based on its own kinetic energy expectation value.
50-
There are a few choices in terms of the kinetic energy to use for the
51-
preconditioning for each NGWF.
47+
Note that in the case of multi-kpoint/spin-polarised calculation, k-point/spin
48+
average is performed and a single :math:`k_0` is obtained for the whole system.
5249

53-
1. The diagonal elements of :math:`KT`.
54-
2. The diagonal elements of :math:`S^{-1}T`.
55-
3. The diagonal elements of :math:`T`.
50+
It is also possible to perfrom NGWF-specific preconditioning. In this case, each
51+
NGWF will have its own :math:`k_0`. For example, if we use the kinetic energy
52+
matrix weighted by the occupation numbers :math:`KT`, then for the :math:`i`-th
53+
NGWF, we have
54+
55+
.. math::
56+
k_0^{i} = \sqrt{(KT)_{i}^i}
57+
58+
There are three options for the matrix to use for NGWF-specific preconditioning:
59+
60+
1. The diagonal elements of :math:`KT`: Occupation weighted kinetic energy.
61+
2. The diagonal elements of :math:`S^{-1}T`: Tensor corrected kinetic energy.
62+
3. The diagonal elements of :math:`T`: Bare kinetic energy.
63+
64+
Testing is needed to determine which option is the best for specific systems.
65+
Note that kinetic energy preconditioning can affect the total energy so one
66+
should always check and make sure the convergence of total energy difference
67+
(e.g. bettwen a pristine system and a distorted system) is correct.
5668

5769
Keywords
5870
========
5971

60-
- ``precond_recip`` [Basic, bool, default ``F``\ ] Turn on reciprocal space
72+
- ``precond_recip`` [Basic, bool, default ``T``\ ] Turn on reciprocal space
6173
kinetic energy preconditioning? [Incompatible with ``precond_real``]
6274

63-
- ``precond_real`` [Basic, bool, default ``T``\ ] Turn on real space
75+
- ``precond_real`` [Basic, bool, default ``F``\ ] Turn on real space
6476
kinetic energy preconditioning? [Incompatible with ``precond_recip`` and
6577
automatic :math:`k_0` mode.]
6678

0 commit comments

Comments
 (0)