1 /*
2 * XCFun, an arbitrary order exchange-correlation library
3 * Copyright (C) 2020 Ulf Ekström and contributors.
4 *
5 * This file is part of XCFun.
6 *
7 * This Source Code Form is subject to the terms of the Mozilla Public
8 * License, v. 2.0. If a copy of the MPL was not distributed with this
9 * file, You can obtain one at http://mozilla.org/MPL/2.0/.
10 *
11 * For information on the complete list of contributors to the
12 * XCFun library, see: <https://xcfun.readthedocs.io/>
13 */
14
15 #include "SCAN_like_eps.hpp"
16 #include "constants.hpp"
17 #include "functional.hpp"
18
r2SCANX(const densvars<num> & d)19 template <class num> static num r2SCANX(const densvars<num> & d) {
20 num Fx_a;
21 num Fx_b;
22 Fx_a = SCAN_eps::get_SCAN_Fx(2.0 * d.a, 4.0 * d.gaa, 2.0 * d.taua, 2, 1, 1);
23 num epsxunif_a = SCAN_eps::fx_unif(2 * d.a);
24 Fx_b = SCAN_eps::get_SCAN_Fx(2.0 * d.b, 4.0 * d.gbb, 2.0 * d.taub, 2, 1, 1);
25 num epsxunif_b = SCAN_eps::fx_unif(2 * d.b);
26
27 return 0.5 * (Fx_a * epsxunif_a + Fx_b * epsxunif_b);
28 }
29
30 FUNCTIONAL(XC_R2SCANX) = {"r2SCAN exchange functional",
31 "r2SCAN exchange functional.\n"
32 "Restored-Regularised SCAN functional\n"
33 "J Furness, A Kaplan, J Ning, J Perdew, & J Sun; J. Chem. "
34 "Phys. Lett.; Accepted (DOI: 10.1021/acs.jpclett.0c02405)"
35 "Implemented by James Furness (@JFurness1)\n",
36 XC_DENSITY | XC_GRADIENT | XC_KINETIC,
37 ENERGY_FUNCTION(r2SCANX) XC_A_B_GAA_GAB_GBB_TAUA_TAUB,
38 XC_PARTIAL_DERIVATIVES,
39 1,
40 1e-11,
41 {0.217, 0.0632, 0.191, 0.0535, 0.015, 0.267, 0.0328},
42 {-1.62076202284e-01,
43 -8.60008389872e-01,
44 -5.57023311096e-01,
45 -3.79265043692e-02,
46 0.00000000000e+00,
47 -1.04606093722e-01,
48 5.89149529531e-02,
49 5.50319523444e-02}};
50