@@ -12,18 +12,18 @@ preconditioning.
1212is 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
3636Since 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
5769Keywords
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