ergo
fun-pw91c.c File Reference
#include <math.h>
#include <stddef.h>
#include "functionals.h"

Macros

#define __CVERSION__
 

Functions

static int pw91c_isgga (void)
 
static int pw91c_read (const char *conf_line)
 
static real pw91c_energy (const FunDensProp *dp)
 
static void pw91c_first (FunFirstFuncDrv *ds, real factor, const FunDensProp *dp)
 
static void pw91c_second (FunSecondFuncDrv *ds, real factor, const FunDensProp *dp)
 
static void pw91c_third (FunThirdFuncDrv *ds, real factor, const FunDensProp *dp)
 

Variables

Functional Pw91cFunctional
 

Detailed Description

PW91C implementation.

Automatically generated code implementing pw91c functional and its derivatives. Generated by func-codegen.pl being a part of a "Automatic code generation framework for analytical functional derivative evaluation", Pawel Salek, 2004

This functional is connected by making following changes:

  1. add "extern Functional pw91cFunctional;" to 'functionals.h'
  2. add "&pw91cFunctional," to 'functionals.c'
  3. add "fun-pw91c}.c" to 'Makefile.am', 'Makefile.in' or 'Makefile'.

This functional has been generated from following input: ---— cut here ----— PW92C parameters c:1.709921; T:[0.031091,0.015545,0.016887]; U:[0.21370,0.20548,0.11125]; V:[7.5957,14.1189,10.357]; W:[3.5876,6.1977,3.6231]; X:[1.6382,3.3662,0.88026]; Y:[0.49294,0.62517,0.49671]; P:[1,1,1];

PW92C helper functions
r(a,b):=(3/(4*PI*(a+b)))^(1/3); zet(a,b):=(a-b)/(a+b); omega(z):=((1+z)^(4/3)+(1-z)^(4/3)-2)/(2^(4/3)-2); en(r,t,u,v,w,x,y,p):=-2*t*(1+u*r)*log(1+1/(2*t*(v*sqrt(r)+w*r+x*r^(3/2)+y*r^(p+1))));

eps(a,b):=en(r(a,b),T[1],U[1],V[1],W[1],X[1],Y[1],P[1]);

pw91c parameters
iota:0.09; nu:16/PI*(3*PI^2)^(1/3); kappa:0.004235; lamda:nu*kappa; Z:-0.001667; Xi:23.266; Phi:0.007389; Lamda:8.723; Upsilon:0.472;

pw91c functions (closed shell!)
theta(r):=10^(-3)*(2.568+Xi*r+Phi*r^2)/(1+Lamda*r+Upsilon*r^2+10*Phi*r^3); phi(r):=theta(r)-Z; sigma(ga,gb,gab):=ga*ga+gb*gb+2*gab; d(a,b,ga,gb,gab):=sqrt(sigma(ga,gb,gab))/4/(3/PI)^(1/6)/(a+b)^(7/6); A(a,b):=2*iota/lamda*(1/(exp(-2*iota*eps(a,b)/lamda^2)-1)); L(d,a,b):=lamda^2/(2*iota)*log((1+2*(iota*(d^2+A(a,b)*d^4))/(lamda*(1+A(a,b)*d^2+(A(a,b))^2*d^4)))); J(d,a,b):=nu*(phi(r(a,b))-kappa-3*Z/7)*d^2*exp(-100*4/(3*PI^5*(a+b))^(1/3)*d^2); H(d,a,b):=L(d,a,b)+J(d,a,b);

kernel
K(rhoa,grada,rhob,gradb,gradab):=(rhoa+rhob)*(eps(rhoa,rhob)+H(d(rhoa,rhob,grada,gradb,gradab),rhoa,rhob));

------ cut here -------

Macro Definition Documentation

◆ __CVERSION__

#define __CVERSION__

Function Documentation

◆ pw91c_energy()

◆ pw91c_first()

◆ pw91c_isgga()

static int pw91c_isgga ( void  )
static

◆ pw91c_read()

static int pw91c_read ( const char *  conf_line)
static

References fun_set_hf_weight.

◆ pw91c_second()

◆ pw91c_third()

Variable Documentation

◆ Pw91cFunctional

Functional Pw91cFunctional
Initial value:

Referenced by b3pw91_read(), and bpw91_read().

pw91c_isgga
static int pw91c_isgga(void)
Definition: fun-pw91c.c:99
pw91c_read
static int pw91c_read(const char *conf_line)
Definition: fun-pw91c.c:122
pw91c_energy
static real pw91c_energy(const FunDensProp *dp)
Definition: fun-pw91c.c:129
pw91c_third
static void pw91c_third(FunThirdFuncDrv *ds, real factor, const FunDensProp *dp)
Definition: fun-pw91c.c:613
pw91c_second
static void pw91c_second(FunSecondFuncDrv *ds, real factor, const FunDensProp *dp)
Definition: fun-pw91c.c:303
pw91c_first
static void pw91c_first(FunFirstFuncDrv *ds, real factor, const FunDensProp *dp)
Definition: fun-pw91c.c:180