Psi4
Public Member Functions | Static Public Member Functions | Protected Member Functions | Protected Attributes | List of all members
psi::SuperFunctional Class Reference

#include <superfunctional.h>

Public Member Functions

 SuperFunctional ()
 
virtual ~SuperFunctional ()
 
void allocate ()
 
std::map< std::string,
SharedVector > & 
compute_functional (const std::map< std::string, SharedVector > &vals, int npoints=-1)
 
void test_functional (SharedVector rho_a, SharedVector rho_b, SharedVector gamma_aa, SharedVector gamma_ab, SharedVector gamma_bb, SharedVector tau_a, SharedVector tau_b)
 
std::map< std::string,
SharedVector > & 
values ()
 
SharedVector value (const std::string &key)
 
std::vector< std::shared_ptr
< Functional > > & 
x_functionals ()
 
std::vector< std::shared_ptr
< Functional > > & 
c_functionals ()
 
std::shared_ptr< Functionalx_functional (const std::string &name)
 
std::shared_ptr< Functionalc_functional (const std::string &name)
 
void add_x_functional (std::shared_ptr< Functional > fun)
 
void add_c_functional (std::shared_ptr< Functional > fun)
 
void set_name (const std::string &name)
 
void set_description (const std::string &description)
 
void set_citation (const std::string &citation)
 
void set_max_points (int max_points)
 
void set_deriv (int deriv)
 
void set_x_omega (double omega)
 
void set_c_omega (double omega)
 
void set_x_alpha (double alpha)
 
void set_c_alpha (double alpha)
 
void set_c_ss_alpha (double alpha)
 
void set_c_os_alpha (double alpha)
 
std::string name () const
 
std::string description () const
 
std::string citation () const
 
int ansatz () const
 
int max_points () const
 
int deriv () const
 
double x_omega () const
 
double c_omega () const
 
double x_alpha () const
 
double c_alpha () const
 
double c_ss_alpha () const
 
double c_os_alpha () const
 
bool needs_xc () const
 
bool is_meta () const
 
bool is_gga () const
 
bool is_x_lrc () const
 
bool is_c_lrc () const
 
bool is_x_hybrid () const
 
bool is_c_hybrid () const
 
bool is_c_scs_hybrid () const
 
void print (std::string OutFileRMR="outfile", int print=1) const
 
void py_print () const
 
void py_print_detail (int level) const
 

Static Public Member Functions

static std::shared_ptr
< SuperFunctional
blank ()
 

Protected Member Functions

void partition_gks ()
 
void common_init ()
 

Protected Attributes

std::string name_
 
std::string description_
 
std::string citation_
 
std::vector< std::shared_ptr
< Functional > > 
x_functionals_
 
double x_alpha_
 
double x_omega_
 
std::vector< std::shared_ptr
< Functional > > 
c_functionals_
 
double c_alpha_
 
double c_ss_alpha_
 
double c_os_alpha_
 
double c_omega_
 
int max_points_
 
int deriv_
 
std::map< std::string,
SharedVector
values_
 

Detailed Description

SuperFunctional: High-level semilocal DFA object

This class directly holds semilocal DFA objects and sketches the definition of the generalized Kohn-Sham functional via alpha and omega parameters for long-range and global hybrid exact exchange mixing, and alpha and omega parameters for long-range and global MP2-like correlation.

A DFT functional is defined as:

E_XC = E_X + E_C + E(-D) E_X = (1-) E_X^DFA [] + E_X^HF + (1-) E_X^HF,LR E_C = E_C^DFA [] + E_C^MP2

If SCS-MP2: E_C = E_C^DFA [] + E_C^SS-MP2 + E_C^OS-MP2

(Note: earlier versions of this code defined — but did not fully implement — a range-separated MP2 correction, like E_C^MP2 + (1-) E_C^MP2,LR. This is not currently supported given the reworking of how alpha_c works for scaling the MP2 correlation (it needs to be independent of the DFT corrleation in general, not related by and (1-).)

E(-D) is an empirical dispersion correction of some form

Constructor & Destructor Documentation

psi::SuperFunctional::SuperFunctional ( )
psi::SuperFunctional::~SuperFunctional ( )
virtual

Member Function Documentation

void psi::SuperFunctional::add_c_functional ( std::shared_ptr< Functional fun)
void psi::SuperFunctional::add_x_functional ( std::shared_ptr< Functional fun)
void psi::SuperFunctional::allocate ( )
int psi::SuperFunctional::ansatz ( ) const
std::shared_ptr< SuperFunctional > psi::SuperFunctional::blank ( )
static
double psi::SuperFunctional::c_alpha ( ) const
inline
std::shared_ptr< Functional > psi::SuperFunctional::c_functional ( const std::string &  name)
std::vector<std::shared_ptr<Functional> >& psi::SuperFunctional::c_functionals ( )
inline
double psi::SuperFunctional::c_omega ( ) const
inline
double psi::SuperFunctional::c_os_alpha ( ) const
inline
double psi::SuperFunctional::c_ss_alpha ( ) const
inline
std::string psi::SuperFunctional::citation ( ) const
inline
void psi::SuperFunctional::common_init ( void  )
protected
std::map< std::string, SharedVector > & psi::SuperFunctional::compute_functional ( const std::map< std::string, SharedVector > &  vals,
int  npoints = -1 
)
int psi::SuperFunctional::deriv ( ) const
inline
std::string psi::SuperFunctional::description ( ) const
inline
bool psi::SuperFunctional::is_c_hybrid ( ) const
inline
bool psi::SuperFunctional::is_c_lrc ( ) const
inline
bool psi::SuperFunctional::is_c_scs_hybrid ( ) const
inline
bool psi::SuperFunctional::is_gga ( ) const
bool psi::SuperFunctional::is_meta ( ) const
bool psi::SuperFunctional::is_x_hybrid ( ) const
inline
bool psi::SuperFunctional::is_x_lrc ( ) const
inline
int psi::SuperFunctional::max_points ( ) const
inline
std::string psi::SuperFunctional::name ( ) const
inline
bool psi::SuperFunctional::needs_xc ( ) const
inline
void psi::SuperFunctional::partition_gks ( )
protected
void psi::SuperFunctional::print ( std::string  OutFileRMR = "outfile",
int  print = 1 
) const
void psi::SuperFunctional::py_print ( ) const
inline
void psi::SuperFunctional::py_print_detail ( int  level) const
inline
void psi::SuperFunctional::set_c_alpha ( double  alpha)
inline
void psi::SuperFunctional::set_c_omega ( double  omega)
inline
void psi::SuperFunctional::set_c_os_alpha ( double  alpha)
inline
void psi::SuperFunctional::set_c_ss_alpha ( double  alpha)
inline
void psi::SuperFunctional::set_citation ( const std::string &  citation)
inline
void psi::SuperFunctional::set_deriv ( int  deriv)
inline
void psi::SuperFunctional::set_description ( const std::string &  description)
inline
void psi::SuperFunctional::set_max_points ( int  max_points)
inline
void psi::SuperFunctional::set_name ( const std::string &  name)
inline
void psi::SuperFunctional::set_x_alpha ( double  alpha)
inline
void psi::SuperFunctional::set_x_omega ( double  omega)
inline
void psi::SuperFunctional::test_functional ( SharedVector  rho_a,
SharedVector  rho_b,
SharedVector  gamma_aa,
SharedVector  gamma_ab,
SharedVector  gamma_bb,
SharedVector  tau_a,
SharedVector  tau_b 
)
SharedVector psi::SuperFunctional::value ( const std::string &  key)
std::map<std::string, SharedVector>& psi::SuperFunctional::values ( )
inline
double psi::SuperFunctional::x_alpha ( ) const
inline
std::shared_ptr< Functional > psi::SuperFunctional::x_functional ( const std::string &  name)
std::vector<std::shared_ptr<Functional> >& psi::SuperFunctional::x_functionals ( )
inline
double psi::SuperFunctional::x_omega ( ) const
inline

Member Data Documentation

double psi::SuperFunctional::c_alpha_
protected
std::vector<std::shared_ptr<Functional> > psi::SuperFunctional::c_functionals_
protected
double psi::SuperFunctional::c_omega_
protected
double psi::SuperFunctional::c_os_alpha_
protected
double psi::SuperFunctional::c_ss_alpha_
protected
std::string psi::SuperFunctional::citation_
protected
int psi::SuperFunctional::deriv_
protected
std::string psi::SuperFunctional::description_
protected
int psi::SuperFunctional::max_points_
protected
std::string psi::SuperFunctional::name_
protected
std::map<std::string, SharedVector> psi::SuperFunctional::values_
protected
double psi::SuperFunctional::x_alpha_
protected
std::vector<std::shared_ptr<Functional> > psi::SuperFunctional::x_functionals_
protected
double psi::SuperFunctional::x_omega_
protected

The documentation for this class was generated from the following files: