[a0bcf1] | 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
|
---|