1 | #ifndef excor_h
|
---|
2 | #define excor_h
|
---|
3 |
|
---|
4 | /** \file excor.h
|
---|
5 | * Header file for \ref excor.c
|
---|
6 | *
|
---|
7 | * Contains declarations of the functions implemented in \ref excor.c,
|
---|
8 | * enumeration if density polarised or not UnPolarised and ExCor parameter
|
---|
9 | * structure.
|
---|
10 | *
|
---|
11 | Project: ParallelCarParrinello
|
---|
12 | Jan Hamaekers
|
---|
13 | 2000
|
---|
14 |
|
---|
15 | File: excor.h
|
---|
16 | $Id: excor.h,v 1.14 2006/05/23 14:22:05 foo Exp $
|
---|
17 | */
|
---|
18 |
|
---|
19 | //! exchange and correlation energy for the polarised or unpolarised one.
|
---|
20 | enum UnPolarised {unpolarised, //!< energy in SpinType#SpinDouble case (no polarisation)
|
---|
21 | polarised //!< energy in SpinType#SpinUp/SpinType#SpinDown case (polarisation)
|
---|
22 | };
|
---|
23 |
|
---|
24 | /** Exchange correlation structure.
|
---|
25 | * Contains simply all the parameters to evaluate the energy.
|
---|
26 | */
|
---|
27 | struct ExCor {
|
---|
28 | double gamma[2]; //!< un-/polarised parametrization value for \f${\cal E}_c \f$, \f$r_s \geq 1\f$
|
---|
29 | double beta_1[2]; //!< un-/polarised parametrization value for \f${\cal E}_c \f$, \f$r_s \geq 1\f$
|
---|
30 | double beta_2[2]; //!< un-/polarised parametrization value for \f${\cal E}_c \f$, \f$r_s \geq 1\f$
|
---|
31 | double A[2]; //!< un-/polarised parametrization value for \f${\cal E}_c \f$, \f$r_s < 1\f$
|
---|
32 | double B[2]; //!< un-/polarised parametrization value for \f${\cal E}_c \f$, \f$r_s < 1\f$
|
---|
33 | double C[2]; //!< un-/polarised parametrization value for \f${\cal E}_c \f$, \f$r_s < 1\f$
|
---|
34 | double D[2]; //!< un-/polarised parametrization value for \f${\cal E}_c \f$, \f$r_s < 1\f$
|
---|
35 | double fac34pi; //!< factor: \f$-\frac{3}{4\pi}\f$
|
---|
36 | double facexrs; //!< factor: \f$-\frac{3}{4\pi} (\frac{9\pi}{4})^{1/3}\f$
|
---|
37 | double epsilon0; //!< set to MYEPSILON
|
---|
38 | double fac6PI23; //!< factor: \f$(\frac{6}{\pi})^{2/3}\f$
|
---|
39 | double facPI213; //!< factor: \f$(\frac{\pi}{2})^{1/3}\f$
|
---|
40 | double fac3PI23; //!< factor: \f$(3\pi)^{2/3}\f$
|
---|
41 | double fac6PIPI23; //!< factor: \f$(6\pi^2)^{2/3}\f$
|
---|
42 | double fac243; //!< factor: \f$(2)^{4/3}\f$
|
---|
43 | double fac1213; //!< factor: \f$(\frac{1}{2})^{1/3}\f$
|
---|
44 | };
|
---|
45 |
|
---|
46 | double Calcrs(struct ExCor *EC, double p);
|
---|
47 | double CalcZeta(struct ExCor *EC, double pUp, double pDown);
|
---|
48 | double CalcSEXr(struct ExCor *EC, double rsUp, double rsDown, double pUp, double pDown);
|
---|
49 | double CalcSVVXr(struct ExCor *EC, double rs, enum SpinType ST);
|
---|
50 | double CalcSVVVXr(struct ExCor *EC, double rs, enum SpinType ST);
|
---|
51 | double CalcSECr(struct ExCor *EC, double rs, double zeta, double p);
|
---|
52 | double CalcSVVCr(struct ExCor *EC, double rs, double zeta, enum SpinType ST, double pUp, double pDown);
|
---|
53 | double CalcSVVVCr(struct ExCor *EC, double rs, double zeta, enum SpinType ST, double pUp, double pDown);
|
---|
54 | void InitExchangeCorrelationEnergy(struct Problem *P, struct ExCor *EC);
|
---|
55 | void CalculateXCEnergyNoRT(struct Problem *P);
|
---|
56 | void CalculateXCEnergyUseRT(struct Problem *P);
|
---|
57 | void CalculateXCPotentialNoRT(struct Problem *P, fftw_real *HGR);
|
---|
58 | double CalculateXCddEddt0NoRT(struct Problem *P, fftw_real *PsiCD);
|
---|
59 | #endif
|
---|