28 #ifndef _chemistry_qc_dft_functional_h
29 #define _chemistry_qc_dft_functional_h
31 #include <util/state/state.h>
32 #include <math/scmat/vector3.h>
33 #include <chemistry/qc/wfn/wfn.h>
34 #include <chemistry/qc/wfn/density.h>
40 enum {
X=BatchElectronDensity::X,
41 Y=BatchElectronDensity::Y,
42 Z=BatchElectronDensity::Z};
43 enum {XX=BatchElectronDensity::XX,
44 YX=BatchElectronDensity::YX,
45 YY=BatchElectronDensity::YY,
46 ZX=BatchElectronDensity::ZX,
47 ZY=BatchElectronDensity::ZY,
48 ZZ=BatchElectronDensity::ZZ};
71 void compute_derived(
int spin_polarized,
92 void zero(){energy=df_drho_a=df_drho_b=df_dgamma_aa=df_dgamma_bb=df_dgamma_ab=0.0;}
100 int compute_potential_;
104 double lower_bound,
double upper_bound);
114 virtual void set_spin_polarized(
int i);
117 virtual void set_compute_potential(
int i);
121 virtual int need_density_gradient();
124 virtual int need_density_hessian();
128 double *gradient,
int acenter,
130 const double *dmat_a,
const double *dmat_b,
131 int ncontrib,
const int *contrib,
132 int ncontrib_bf,
const int *contrib_bf,
133 const double *bs_values,
const double *bsg_values,
134 const double *bsh_values);
137 virtual double a0()
const;
199 void set_spin_polarized(
int);
200 void set_compute_potential(
int);
201 int need_density_gradient();
287 void init_arrays(
int n);
315 double &ec_local,
double &decrs,
double &deczeta) = 0;
333 void init_constants();
334 double rho_deriv(
double rho_a,
double rho_b,
double mdr,
335 double ec_local,
double ec_local_dra);
336 double gab_deriv(
double rho,
double phi,
double mdr,
double ec_local);
343 int need_density_gradient();
345 void set_spin_polarized(
int);
370 void init_constants();
371 double limit_df_drhoa(
double rhoa,
double gamma,
372 double ec,
double decdrhoa);
380 int need_density_gradient();
383 void set_spin_polarized(
int);
403 void init_constants();
410 int need_density_gradient();
428 void init_constants();
429 double rho_deriv(
double rho_a,
double rho_b,
double mdr);
430 double gab_deriv(
double rho_a,
double rho_b,
double mdr);
438 int need_density_gradient();
465 double Ap_, Af_, A_alpha_;
466 double x0p_mc_, bp_mc_, cp_mc_, x0f_mc_, bf_mc_, cf_mc_;
467 double x0p_rpa_, bp_rpa_, cp_rpa_, x0f_rpa_, bf_rpa_, cf_rpa_;
468 double x0_alpha_mc_, b_alpha_mc_, c_alpha_mc_;
469 double x0_alpha_rpa_, b_alpha_rpa_, c_alpha_rpa_;
470 void init_constants();
472 double F(
double x,
double A,
double x0,
double b,
double c);
473 double dFdr_s(
double x,
double A,
double x0,
double b,
double c);
489 double x0p_, bp_, cp_, x0f_, bf_, cf_;
506 double &,
double &,
double &);
530 int monte_carlo_prefactor_;
546 int monte_carlo_prefactor_;
578 double F(
double x,
double A,
double alpha_1,
double beta_1,
double beta_2,
579 double beta_3,
double beta_4,
double p);
580 double dFdr_s(
double x,
double A,
double alpha_1,
double beta_1,
double beta_2,
581 double beta_3,
double beta_4,
double p);
599 double Fec_rsgt1(
double rs,
double beta_1,
double beta_2,
double gamma);
600 double dFec_rsgt1_drho(
double rs,
double beta_1,
double beta_2,
double gamma,
602 double Fec_rslt1(
double rs,
double A,
double B,
double C,
double D);
603 double dFec_rslt1_drho(
double rs,
double A,
double B,
double C,
double D,
647 int need_density_gradient();
666 void init_constants();
674 int need_density_gradient();
689 void init_constants();
697 int need_density_gradient();
722 double &mpw,
double &dmpw_dr,
double &dmpw_dg);
723 void init_constants();
731 int need_density_gradient();
754 double &mpw,
double &dmpw_dr,
double &dmpw_dg);
755 void init_constants();
763 int need_density_gradient();
782 double &mpw,
double &dmpw_dr,
double &dmpw_dg);
784 enum Func { B88, PW91, mPW91 };
814 int need_density_gradient();
818 void init_constants(Func);
828 void init_constants();
836 int need_density_gradient();
void save_data_state(StateOut &)
Save the base classes (with save_data_state) and the members in the same order that the StateIn CTOR ...
The Perdew-Wang 1991 correlation functional computes energies and densities using the designated loca...
Definition: functional.h:359
void print(std::ostream &=ExEnv::out0()) const
Print the object.
void save_data_state(StateOut &)
Save the base classes (with save_data_state) and the members in the same order that the StateIn CTOR ...
An abstract base class from which the various VWN (Vosko, Wilk and Nusair) local correlation function...
Definition: functional.h:463
The Perdew-Wang 1991 exchange functional computes energies and densities using the designated local c...
Definition: functional.h:746
The VWN2LCFunctional computes energies and densities using the VWN2 local correlation term (from Vosk...
Definition: functional.h:511
Implements a modified 1991 Perdew-Wang exchange functional.
Definition: functional.h:772
Implements the Perdew-Burke-Ernzerhof (PBE) exchange functional.
Definition: functional.h:717
Contains data generated at each point by a DenFunctional.
Definition: functional.h:79
mPW91XFunctional()
Construct an mPW exchange functional.
VWN1LCFunctional()
Construct a VWN1 functional using Monte-Carlo parameters.
void save_data_state(StateOut &)
Save the base classes (with save_data_state) and the members in the same order that the StateIn CTOR ...
A template class that maintains references counts.
Definition: ref.h:361
void save_data_state(StateOut &)
Save the base classes (with save_data_state) and the members in the same order that the StateIn CTOR ...
VWN2LCFunctional()
Construct a VWN2 functional.
Definition: reftestx.h:32
void save_data_state(StateOut &)
Save the base classes (with save_data_state) and the members in the same order that the StateIn CTOR ...
void save_data_state(StateOut &)
Save the base classes (with save_data_state) and the members in the same order that the StateIn CTOR ...
void save_data_state(StateOut &)
Save the base classes (with save_data_state) and the members in the same order that the StateIn CTOR ...
An abstract base class for local correlation functionals.
Definition: functional.h:303
void save_data_state(StateOut &)
Save the base classes (with save_data_state) and the members in the same order that the StateIn CTOR ...
Implements the Perdew 1986 (P86) correlation functional.
Definition: functional.h:393
Definition: functional.h:418
bool in(const std::pair< I, I > &r, const std::pair< I, I > &range)
return true if r is contained in range defined as pair<start,fence>, i.e. [start, fence)
Definition: mtensor.h:58
The VWN1LCFunctional computes energies and densities using the VWN1 local correlation term (from Vosk...
Definition: functional.h:487
Implements the Perdew-Wang 1986 (PW86) Exchange functional.
Definition: functional.h:683
An abstract base class for density functionals.
Definition: functional.h:97
void save_data_state(StateOut &)
Save the base classes (with save_data_state) and the members in the same order that the StateIn CTOR ...
void save_data_state(StateOut &)
Save the base classes (with save_data_state) and the members in the same order that the StateIn CTOR ...
The StdDenFunctional class is used to construct the standard density functionals.
Definition: functional.h:284
void save_data_state(StateOut &)
Save the base classes (with save_data_state) and the members in the same order that the StateIn CTOR ...
double a0() const
Override the DenFunctional::a0() member, so that a0's in contributing functionals can be added in as ...
void save_data_state(StateOut &)
Save the base classes (with save_data_state) and the members in the same order that the StateIn CTOR ...
The SumDenFunctional computes energies and densities using the a sum of energy density functions meth...
Definition: functional.h:160
The NElFunctional computes the number of electrons.
Definition: functional.h:147
void print(std::ostream &=ExEnv::out0()) const
Print the object.
void save_data_state(StateOut &)
Save the base classes (with save_data_state) and the members in the same order that the StateIn CTOR ...
void save_data_state(StateOut &)
Save the base classes (with save_data_state) and the members in the same order that the StateIn CTOR ...
void save_data_state(StateOut &)
Save the base classes (with save_data_state) and the members in the same order that the StateIn CTOR ...
void save_data_state(StateOut &)
Save the base classes (with save_data_state) and the members in the same order that the StateIn CTOR ...
Implements the Gill 1996 (G96) exchange functional.
Definition: functional.h:825
virtual double a0() const
Returns the fraction of Hartee-Fock exchange to be included.
Definition: stateout.h:71
void save_data_state(StateOut &)
Save the base classes (with save_data_state) and the members in the same order that the StateIn CTOR ...
The VWN4LCFunctional computes energies and densities using the VWN4 local correlation term (from Vosk...
Definition: functional.h:544
Implements the Xalpha exchange functional.
Definition: functional.h:616
void save_data_state(StateOut &)
Save the base classes (with save_data_state) and the members in the same order that the StateIn CTOR ...
Implements Becke's 1988 exchange functional.
Definition: functional.h:636
Implements the Perdew-Burke-Ernzerhof (PBE) correlation functional.
Definition: functional.h:328
void save_data_state(StateOut &)
Save the base classes (with save_data_state) and the members in the same order that the StateIn CTOR ...
Implements the PW92 local (LSDA) correlation term.
Definition: functional.h:576
The VWN5LCFunctional computes energies and densities using the VWN5 local correlation term (from Vosk...
Definition: functional.h:559
Implements the Slater exchange functional.
Definition: functional.h:445
void save_data_state(StateOut &)
Save the base classes (with save_data_state) and the members in the same order that the StateIn CTOR ...
void save_data_state(StateOut &)
Save the base classes (with save_data_state) and the members in the same order that the StateIn CTOR ...
The GaussianBasisSet class is used describe a basis set composed of atomic gaussian orbitals.
Definition: gaussbas.h:141
a 3-element version of SCVector
Definition: vector3.h:43
void print(std::ostream &=ExEnv::out0()) const
Print the object.
static std::ostream & out0()
Return an ostream that writes from node 0.
Implements the Lee, Yang, and Parr functional.
Definition: functional.h:660
Base class for objects that can save/restore state.
Definition: state.h:45
void save_data_state(StateOut &)
Save the base classes (with save_data_state) and the members in the same order that the StateIn CTOR ...
Implements the PZ81 local (LSDA) correlation functional.
Definition: functional.h:597
Definition: reftestx.h:41
The VWN3LCFunctional computes energies and densities using the VWN3 local correlation term (from Vosk...
Definition: functional.h:528
void save_data_state(StateOut &)
Save the base classes (with save_data_state) and the members in the same order that the StateIn CTOR ...
void save_data_state(StateOut &)
Save the base classes (with save_data_state) and the members in the same order that the StateIn CTOR ...
Contains all MPQC code up to version 3.
Definition: mpqcin.h:14
void save_data_state(StateOut &)
Save the base classes (with save_data_state) and the members in the same order that the StateIn CTOR ...
void save_data_state(StateOut &)
Save the base classes (with save_data_state) and the members in the same order that the StateIn CTOR ...
Generated at Sun Jan 26 2020 23:23:57 for MPQC
3.0.0-alpha using the documentation package Doxygen
1.8.16.