28 #ifndef _chemistry_qc_dft_functional_h
29 #define _chemistry_qc_dft_functional_h
35 #include <util/state/state.h>
36 #include <math/scmat/vector3.h>
37 #include <chemistry/qc/wfn/wfn.h>
38 #include <chemistry/qc/wfn/density.h>
44 enum {
X=BatchElectronDensity::X,
45 Y=BatchElectronDensity::Y,
46 Z=BatchElectronDensity::Z};
47 enum {XX=BatchElectronDensity::XX,
48 YX=BatchElectronDensity::YX,
49 YY=BatchElectronDensity::YY,
50 ZX=BatchElectronDensity::ZX,
51 ZY=BatchElectronDensity::ZY,
52 ZZ=BatchElectronDensity::ZZ};
75 void compute_derived(
int spin_polarized,
96 void zero(){energy=df_drho_a=df_drho_b=df_dgamma_aa=df_dgamma_bb=df_dgamma_ab=0.0;}
104 int compute_potential_;
108 double lower_bound,
double upper_bound);
118 virtual void set_spin_polarized(
int i);
121 virtual void set_compute_potential(
int i);
125 virtual int need_density_gradient();
128 virtual int need_density_hessian();
132 double *gradient,
int acenter,
134 const double *dmat_a,
const double *dmat_b,
135 int ncontrib,
const int *contrib,
136 int ncontrib_bf,
const int *contrib_bf,
137 const double *bs_values,
const double *bsg_values,
138 const double *bsh_values);
141 virtual double a0()
const;
203 void set_spin_polarized(
int);
204 void set_compute_potential(
int);
205 int need_density_gradient();
291 void init_arrays(
int n);
319 double &ec_local,
double &decrs,
double &deczeta) = 0;
337 void init_constants();
338 double rho_deriv(
double rho_a,
double rho_b,
double mdr,
339 double ec_local,
double ec_local_dra);
340 double gab_deriv(
double rho,
double phi,
double mdr,
double ec_local);
347 int need_density_gradient();
349 void set_spin_polarized(
int);
374 void init_constants();
375 double limit_df_drhoa(
double rhoa,
double gamma,
376 double ec,
double decdrhoa);
384 int need_density_gradient();
387 void set_spin_polarized(
int);
407 void init_constants();
414 int need_density_gradient();
432 void init_constants();
433 double rho_deriv(
double rho_a,
double rho_b,
double mdr);
434 double gab_deriv(
double rho_a,
double rho_b,
double mdr);
442 int need_density_gradient();
469 double Ap_, Af_, A_alpha_;
470 double x0p_mc_, bp_mc_, cp_mc_, x0f_mc_, bf_mc_, cf_mc_;
471 double x0p_rpa_, bp_rpa_, cp_rpa_, x0f_rpa_, bf_rpa_, cf_rpa_;
472 double x0_alpha_mc_, b_alpha_mc_, c_alpha_mc_;
473 double x0_alpha_rpa_, b_alpha_rpa_, c_alpha_rpa_;
474 void init_constants();
476 double F(
double x,
double A,
double x0,
double b,
double c);
477 double dFdr_s(
double x,
double A,
double x0,
double b,
double c);
493 double x0p_, bp_, cp_, x0f_, bf_, cf_;
510 double &,
double &,
double &);
534 int monte_carlo_prefactor_;
550 int monte_carlo_prefactor_;
582 double F(
double x,
double A,
double alpha_1,
double beta_1,
double beta_2,
583 double beta_3,
double beta_4,
double p);
584 double dFdr_s(
double x,
double A,
double alpha_1,
double beta_1,
double beta_2,
585 double beta_3,
double beta_4,
double p);
603 double Fec_rsgt1(
double rs,
double beta_1,
double beta_2,
double gamma);
604 double dFec_rsgt1_drho(
double rs,
double beta_1,
double beta_2,
double gamma,
606 double Fec_rslt1(
double rs,
double A,
double B,
double C,
double D);
607 double dFec_rslt1_drho(
double rs,
double A,
double B,
double C,
double D,
651 int need_density_gradient();
670 void init_constants();
678 int need_density_gradient();
693 void init_constants();
701 int need_density_gradient();
726 double &mpw,
double &dmpw_dr,
double &dmpw_dg);
727 void init_constants();
735 int need_density_gradient();
758 double &mpw,
double &dmpw_dr,
double &dmpw_dg);
759 void init_constants();
767 int need_density_gradient();
786 double &mpw,
double &dmpw_dr,
double &dmpw_dg);
788 enum Func { B88, PW91, mPW91 };
818 int need_density_gradient();
822 void init_constants(Func);
832 void init_constants();
840 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:363
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:467
The Perdew-Wang 1991 exchange functional computes energies and densities using the designated local c...
Definition: functional.h:750
The VWN2LCFunctional computes energies and densities using the VWN2 local correlation term (from Vosk...
Definition: functional.h:515
Implements a modified 1991 Perdew-Wang exchange functional.
Definition: functional.h:776
Implements the Perdew-Burke-Ernzerhof (PBE) exchange functional.
Definition: functional.h:721
Contains data generated at each point by a DenFunctional.
Definition: functional.h:83
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:332
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:36
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:307
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:397
Definition: functional.h:422
The VWN1LCFunctional computes energies and densities using the VWN1 local correlation term (from Vosk...
Definition: functional.h:491
Implements the Perdew-Wang 1986 (PW86) Exchange functional.
Definition: functional.h:687
An abstract base class for density functionals.
Definition: functional.h:101
void save_data_state(StateOut &)
Save the base classes (with save_data_state) and the members in the same order that the StateIn CTOR ...
Restores objects that derive from SavableState.
Definition: statein.h:70
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:288
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:164
The NElFunctional computes the number of electrons.
Definition: functional.h:151
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:829
virtual double a0() const
Returns the fraction of Hartee-Fock exchange to be included.
Serializes objects that derive from SavableState.
Definition: stateout.h:61
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:548
Implements the Xalpha exchange functional.
Definition: functional.h:620
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:640
Implements the Perdew-Burke-Ernzerhof (PBE) correlation functional.
Definition: functional.h:332
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:580
The VWN5LCFunctional computes energies and densities using the VWN5 local correlation term (from Vosk...
Definition: functional.h:563
Implements the Slater exchange functional.
Definition: functional.h:449
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:145
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:664
Base class for objects that can save/restore state.
Definition: state.h:46
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:601
Definition: reftestx.h:45
The VWN3LCFunctional computes energies and densities using the VWN3 local correlation term (from Vosk...
Definition: functional.h:532
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 ...
Generated at Sun Jan 26 2020 23:33:03 for MPQC
2.3.1 using the documentation package Doxygen
1.8.16.