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: lda_exc *)
10(* prefix:
11  lda_c_pw_params *params;
12
13  assert(p->params != NULL);
14  params = (lda_c_pw_params * )(p->params);
15*)
16
17$ifdef lda_c_pw_params
18params_a_pp     := [1,  1,  1]:
19params_a_a      := [0.031091, 0.015545, 0.016887]:
20params_a_alpha1 := [0.21370,  0.20548,  0.11125]:
21params_a_beta1  := [7.5957, 14.1189, 10.357]:
22params_a_beta2  := [3.5876, 6.1977, 3.6231]:
23params_a_beta3  := [1.6382, 3.3662,  0.88026]:
24params_a_beta4  := [0.49294, 0.62517, 0.49671]:
25params_a_fz20   := 1.709921:
26$endif
27
28$ifdef lda_c_pw_modified_params
29params_a_a      := [0.0310907, 0.01554535, 0.0168869]:
30params_a_fz20   := 1.709920934161365617563962776245:
31$endif
32
33(* Equation (10) *)
34g_aux := (k, rs) -> params_a_beta1[k]*sqrt(rs) + params_a_beta2[k]*rs
35  + params_a_beta3[k]*rs^1.5 + params_a_beta4[k]*rs^(params_a_pp[k] + 1):
36g     := (k, rs) -> -2*params_a_a[k]*(1 + params_a_alpha1[k]*rs)
37  * log(1 +  1/(2*params_a_a[k]*g_aux(k, rs))):
38
39(* Equation (8) *)
40(* Attention, the function g parametrizes -alpha *)
41f_pw := (rs, zeta) ->
42  g(1, rs) + zeta^4*f_zeta(zeta)*(g(2, rs) - g(1, rs) + g(3, rs)/params_a_fz20)
43  - f_zeta(zeta)*g(3, rs)/params_a_fz20:
44
45f := (rs, zeta) -> f_pw(rs, zeta):
46