1(*
2 Copyright (C) 2017 M.A.L. Marques
3
4 This Source Code Form is subject to the terms of the Mozilla Public
5 License, v. 2.0. If a copy of the MPL was not distributed with this
6 file, You can obtain one at http://mozilla.org/MPL/2.0/.
7*)
8
9(* type: mgga_exc *)
10
11(* Equations are from the Appendix of Kurth1999_889 *)
12
13$include "gga_c_gapc.mpl"
14
15gap_par0[10] = 0.06483*((9*Pi)/4)^(2/3): (* this is approximately equal to 0.23878 *)
16
17(* Eq. (A4) *)
18kcis_G := (rs, xt) -> xt^2*n_total(rs)^(2/3)/8:
19
20(* Eq. (A9) *)
21kcis_t := (rs, xt) -> 2^(2/3)*xt/(8*sqrt(rs)):
22
23kcis_beta := 0.066725:
24
25(* Eq. (A7) *)
26kcis_gga0 := (rs, xt) -> f_pw(rs, 0)/(1 + kcis_beta*log(1 + kcis_t(rs, xt)^2/m_abs(f_pw(rs, 0)))):
27
28(* Eq. (A8) *)
29kcis_gga1 := (rs, xt) -> f_pw(rs, 1)/(1 + kcis_beta*log(1 + 2^(-1/3)*kcis_t(rs, xt)^2/m_abs(f_pw(rs, 1)))):
30
31(* Eq. (A5) *)
32(* The polarized parameters are the same as the unpolarized ones *)
33(* except that c_1, c_2, c_3 are multiplied by 0.7. 1.5, and 2.59 respectively *)
34kcis_eps_0 := (rs, xt) ->
35  + (kcis_gga0(rs, xt) + gap_c1(rs, 0, gap_par0)*kcis_G(rs, xt))
36  / (1 + gap_c2(rs, 0, gap_par0)*kcis_G(rs, xt) + gap_c3(rs, 0, gap_par0)*kcis_G(rs, xt)^2):
37
38(* Eq. (A6) *)
39kcis_eps_1 := (rs, xt) ->
40  + (kcis_gga1(rs, xt) + 0.7*gap_c1(rs, 0, gap_par0)*kcis_G(rs, xt))
41  / (1 + 1.5*gap_c2(rs, 0, gap_par0)*kcis_G(rs, xt) + 2.59*gap_c3(rs, 0, gap_par0)*kcis_G(rs, xt)^2):
42
43(* Eq. (A2) *)
44gap_f := (rs, z, xt) ->
45  + kcis_eps_0(rs, xt)
46  + f_zeta(z)*(kcis_eps_1(rs, xt) - kcis_eps_0(rs, xt)):
47
48(* Eq. (A1) *)
49if evalb(Polarization = "ferr") then
50  kcis_f := (rs, z, xt, xs0, xs1, ts0, ts1) ->
51    + gap_f(rs, z, xt)
52    - xs0^2/(8*ts0) * gap_f(rs,  1, xs0):
53else
54  kcis_f := (rs, z, xt, xs0, xs1, ts0, ts1) ->
55    + gap_f(rs, z, xt)
56    - xs0^2/(8*ts0) * (1 + z)/2 * gap_f(rs*(2/(1+z))^(1/3),  1, xs0)
57    - xs1^2/(8*ts1) * (1 - z)/2 * gap_f(rs*(2/(1-z))^(1/3), -1, xs1):
58end if:
59
60f  := (rs, z, xt, xs0, xs1, us0, us1, ts0, ts1) ->
61  kcis_f(rs, z, xt, xs0, xs1, ts0, ts1):
62