| 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 CalcSE_GC(struct ExCor *EC, double p, double Dp); | 
|---|
| 50 | double CalcSVVXr(struct ExCor *EC, double rs, enum SpinType ST); | 
|---|
| 51 | double CalcSVVVXr(struct ExCor *EC, double rs, enum SpinType ST); | 
|---|
| 52 | double CalcSECr(struct ExCor *EC, double rs, double zeta, double p); | 
|---|
| 53 | double CalcSVVCr(struct ExCor *EC, double rs, double zeta, enum SpinType ST, double pUp, double pDown); | 
|---|
| 54 | double CalcSVVVCr(struct ExCor *EC, double rs, double zeta, enum SpinType ST, double pUp, double pDown); | 
|---|
| 55 | void InitExchangeCorrelationEnergy(struct Problem *P, struct ExCor *EC); | 
|---|
| 56 | void CalculateXCEnergyNoRT(struct Problem *P); | 
|---|
| 57 | void CalculateXCEnergyUseRT(struct Problem *P); | 
|---|
| 58 | void CalculateXCPotentialNoRT(struct Problem *P, fftw_real *HGR); | 
|---|
| 59 | double CalculateXCddEddt0NoRT(struct Problem *P, fftw_real *PsiCD); | 
|---|
| 60 | double DensityGradient(fftw_real *density, int i, struct LatticeLevel *Lev, struct Lattice *Lat); | 
|---|
| 61 | #endif | 
|---|