PW91X implementation. More...
#include <math.h>
#include <stddef.h>
#include "functionals.h"
Defines | |
#define | __CVERSION__ |
Functions | |
static int | pw91x_isgga (void) |
static int | pw91x_read (const char *conf_line) |
static real | pw91x_energy (const FunDensProp *dp) |
static void | pw91x_first (FunFirstFuncDrv *ds, real factor, const FunDensProp *dp) |
static void | pw91x_second (FunSecondFuncDrv *ds, real factor, const FunDensProp *dp) |
static void | pw91x_third (FunThirdFuncDrv *ds, real factor, const FunDensProp *dp) |
static void | pw91x_fourth (FunFourthFuncDrv *ds, real factor, const FunDensProp *dp) |
static void | pw91x_first_helper (real rhoa, real grada, real *res) |
static void | pw91x_second_helper (real rhoa, real grada, real *res) |
static void | pw91x_third_helper (real rhoa, real grada, real *res) |
static void | pw91x_fourth_helper (real rhoa, real grada, real *res) |
Variables | |
Functional | Pw91xFunctional |
PW91X implementation.
Automatically generated code implementing PW91X functional and its derivatives. It is generated by func-codegen.pl being a part of a "Automatic code generation framework for analytical functional derivative evaluation", Pawel Salek, 2005
This functional is connected by making following changes: 1. add "extern Functional pw91xFunctional;" to 'functionals.h' 2. add "&pw91xFunctional," to 'functionals.c' 3. add "fun-pw91x.c" to 'Makefile.am', 'Makefile.in' or 'Makefile'.
This functional has been generated from following input: ------ cut here ------- This is exchange PW91x functional of
J.P. Perdew, in Proceedings of the 21st Annual International Symposium on the Electronic Structure of Solids, edited by P. Ziesche and H. Eschrig (akademie Verlag, Berlin 1991).
Cx: -3/4*(6/PI)^(1/3); alpha: -3/2*(3/(4*PI))^(1/3); b: 0.0042; c: 1.6455; d: 4; bet: 5*((36*PI)^(-5/3));
x(r,g) := g*r^(-4/3); F0(x):=b*x^2-(b-bet)*x^2*exp(-c*x^2)-10^(-6)*x^d; F1(x):=1+6*b*x*asinh(x)-(10^(-6)*x^d)/(alpha);
F91(x) := alpha - F0(x)/F1(x);
Fb88(x) := alpha - b*x^2/(1 + 6*b*x*asinh(x));
Fd(x) := alpha;
Ex(r,g) := r^(4/3)*F91( x(r,g) );
K(rhoa,grada,rhob,gradb,gradab):= Ex(rhoa,grada) +Ex(rhob,gradb);
------ cut here -------
#define __CVERSION__ |
static real pw91x_energy | ( | const FunDensProp * | dp | ) | [static] |
References ASINH, FunDensProp_::grada, FunDensProp_::gradb, POW, FunDensProp_::rhoa, and FunDensProp_::rhob.
static void pw91x_first | ( | FunFirstFuncDrv * | ds, | |
real | factor, | |||
const FunDensProp * | dp | |||
) | [static] |
References ASINH, POW, and SQRT.
Referenced by pw91x_first().
static void pw91x_fourth | ( | FunFourthFuncDrv * | ds, | |
real | factor, | |||
const FunDensProp * | dp | |||
) | [static] |
References FunFourthFuncDrv::df0001, FunFourthFuncDrv::df0002, FunFourthFuncDrv::df0003, FunFourthFuncDrv::df0004, FunFourthFuncDrv::df0010, FunFourthFuncDrv::df0020, FunFourthFuncDrv::df0030, FunFourthFuncDrv::df0040, FunFourthFuncDrv::df0100, FunFourthFuncDrv::df0101, FunFourthFuncDrv::df0102, FunFourthFuncDrv::df0103, FunFourthFuncDrv::df0200, FunFourthFuncDrv::df0201, FunFourthFuncDrv::df0202, FunFourthFuncDrv::df0300, FunFourthFuncDrv::df0301, FunFourthFuncDrv::df0400, FunFourthFuncDrv::df1000, FunFourthFuncDrv::df1010, FunFourthFuncDrv::df1020, FunFourthFuncDrv::df1030, FunFourthFuncDrv::df2000, FunFourthFuncDrv::df2010, FunFourthFuncDrv::df2020, FunFourthFuncDrv::df3000, FunFourthFuncDrv::df3010, FunFourthFuncDrv::df4000, FABS, FunDensProp_::grada, FunDensProp_::gradb, pw91x_fourth_helper(), FunDensProp_::rhoa, and FunDensProp_::rhob.
References ASINH, POW, and SQRT.
Referenced by pw91x_fourth().
static int pw91x_isgga | ( | void | ) | [static] |
static int pw91x_read | ( | const char * | conf_line | ) | [static] |
References fun_set_hf_weight.
static void pw91x_second | ( | FunSecondFuncDrv * | ds, | |
real | factor, | |||
const FunDensProp * | dp | |||
) | [static] |
References FunSecondFuncDrv::df0001, FunSecondFuncDrv::df0002, FunSecondFuncDrv::df0010, FunSecondFuncDrv::df0020, FunSecondFuncDrv::df0100, FunSecondFuncDrv::df0101, FunSecondFuncDrv::df0200, FunSecondFuncDrv::df1000, FunSecondFuncDrv::df1010, FunSecondFuncDrv::df2000, FABS, FunDensProp_::grada, FunDensProp_::gradb, pw91x_second_helper(), FunDensProp_::rhoa, and FunDensProp_::rhob.
References ASINH, POW, and SQRT.
Referenced by pw91x_second().
static void pw91x_third | ( | FunThirdFuncDrv * | ds, | |
real | factor, | |||
const FunDensProp * | dp | |||
) | [static] |
References FunThirdFuncDrv::df0001, FunThirdFuncDrv::df0002, FunThirdFuncDrv::df0003, FunThirdFuncDrv::df0010, FunThirdFuncDrv::df0020, FunThirdFuncDrv::df0030, FunThirdFuncDrv::df0100, FunThirdFuncDrv::df0101, FunThirdFuncDrv::df0102, FunThirdFuncDrv::df0200, FunThirdFuncDrv::df0201, FunThirdFuncDrv::df0300, FunThirdFuncDrv::df1000, FunThirdFuncDrv::df1010, FunThirdFuncDrv::df1020, FunThirdFuncDrv::df2000, FunThirdFuncDrv::df2010, FunThirdFuncDrv::df3000, FABS, FunDensProp_::grada, FunDensProp_::gradb, pw91x_third_helper(), FunDensProp_::rhoa, and FunDensProp_::rhob.
References ASINH, POW, and SQRT.
Referenced by pw91x_third().
{ "PW91X", pw91x_isgga, pw91x_read, NULL, pw91x_energy, pw91x_first, pw91x_second, pw91x_third, pw91x_fourth }