Psi4
Public Member Functions | Protected Member Functions | Protected Attributes | List of all members
psi::psimrcc::CCManyBody Class Reference

#include <manybody.h>

Inheritance diagram for psi::psimrcc::CCManyBody:
psi::psimrcc::CCMRCC psi::psimrcc::IDMRPT2 psi::psimrcc::MP2_CCSD

Public Member Functions

 CCManyBody (SharedWavefunction ref_wfn, Options &options)
 
virtual ~CCManyBody ()
 
void generate_integrals ()
 
void generate_denominators ()
 
void compute_reference_energy ()
 
void make_fock_matrix ()
 
void make_denominators ()
 
void print_method (const char *text)
 

Protected Member Functions

void print_eigensystem (int ndets, double **Heff, double *&eigenvector)
 
double diagonalize_Heff (int root, int ndets, double **Heff, double *&right_eigenvector, double *&left_eigenvector, bool initial)
 
void sort_eigensystem (int ndets, double *&real, double *&imaginary, double **&left, double **&right)
 
double c_H_c (int ndets, double **H, double *&c)
 
void generate_triples_denominators ()
 
void generate_d3_ijk (double ***&d3, bool alpha_i, bool alpha_j, bool alpha_k)
 
void generate_d3_abc (double ***&d3, bool alpha_a, bool alpha_b, bool alpha_c)
 
void deallocate_triples_denominators ()
 

Protected Attributes

Optionsoptions_
 
SharedWavefunction ref_wfn_
 
double * zeroth_order_eigenvector
 
double * right_eigenvector
 
double * left_eigenvector
 
double ** Heff
 
double ** Heff_mrpt2
 
double current_energy
 
double delta_energy
 
double cas_energy
 
double old_energy
 
double huge
 
double total_time
 
double norm_amps
 
double delta_t1_amps
 
double delta_t2_amps
 
bool pert_cbs
 
bool pert_cbs_coupling
 
TriplesType triples_type
 
TriplesCouplingType triples_coupling_type
 
double *** d3_ooo
 
double *** d3_ooO
 
double *** d3_oOO
 
double *** d3_OOO
 
double *** d3_vvv
 
double *** d3_vvV
 
double *** d3_vVV
 
double *** d3_VVV
 

Detailed Description

Author
Francesco Evangelista frank.nosp@m.@ccc.nosp@m..uga..nosp@m.edu

Constructor & Destructor Documentation

psi::psimrcc::CCManyBody::CCManyBody ( SharedWavefunction  ref_wfn,
Options options 
)

Allocate the effective Hamiltonian matrices and eigenvectors

Todo:
wrap the current operations in an init() function
psi::psimrcc::CCManyBody::~CCManyBody ( )
virtual

Deallocate the effective Hamiltonian matrices and eigenvectors

Todo:
wrap the current operations in an cleanup() function

Member Function Documentation

double psi::psimrcc::CCManyBody::c_H_c ( int  ndets,
double **  H,
double *&  c 
)
protected

This function computes $ E = \mathbf{c}^{\dagger} \mathbf{H} \mathbf{c} $

Parameters
ndetssize of the $ \mathbf{c} $ vector
Hthe $ \mathbf{H} $ matrix stored as a double**
cthe $ \mathbf{c} $ vector stored as a double*
Returns
$ E $
void psi::psimrcc::CCManyBody::compute_reference_energy ( )

Computes the energy for each unique reference determinant

void psi::psimrcc::CCManyBody::deallocate_triples_denominators ( )
protected
double psi::psimrcc::CCManyBody::diagonalize_Heff ( int  root,
int  ndets,
double **  Heff,
double *&  right_eigenvector,
double *&  left_eigenvector,
bool  initial 
)
protected

This function computes the left and right eigenvalues of a generic real matrix

Parameters
rootselects the root for which the left-eigenvector must be saved
ndetssize of the matrix
Heffthe $ \mathbf{H}^{\mathrm{eff}} $ matrix stored as a double**
eigenvectorthe $ \mathbf{c} $ left-eigenvector stored as a double* *
initiala bool used to enable root following. initial = true allows you to select a root while initial = false follows the root that has the largest overlap with the previous eigenvector
Returns
void psi::psimrcc::CCManyBody::generate_d3_abc ( double ***&  d3,
bool  alpha_a,
bool  alpha_b,
bool  alpha_c 
)
protected
void psi::psimrcc::CCManyBody::generate_d3_ijk ( double ***&  d3,
bool  alpha_i,
bool  alpha_j,
bool  alpha_k 
)
protected
void psi::psimrcc::CCManyBody::generate_denominators ( )

Generates the MP denominators

\[ \Delta_{ij...}^{ab...}(\mu) = f_{ii}(\mu) + f_{jj}(\mu) + ... - f_{aa}(\mu) - f_{bb}(\mu) - ... \]

where the excitations that are not allowed in reference $ \mu $ are set to a large value (see huge)

void psi::psimrcc::CCManyBody::generate_integrals ( )

Creates a CCSort object and stores the address in the global pointer sorter

void psi::psimrcc::CCManyBody::generate_triples_denominators ( )
protected
void psi::psimrcc::CCManyBody::make_denominators ( )
void psi::psimrcc::CCManyBody::make_fock_matrix ( )
void psi::psimrcc::CCManyBody::print_eigensystem ( int  ndets,
double **  Heff,
double *&  eigenvector 
)
protected
void psi::psimrcc::CCManyBody::print_method ( const char *  text)
void psi::psimrcc::CCManyBody::sort_eigensystem ( int  ndets,
double *&  real,
double *&  imaginary,
double **&  left,
double **&  right 
)
protected

Member Data Documentation

double psi::psimrcc::CCManyBody::cas_energy
protected
double psi::psimrcc::CCManyBody::current_energy
protected
double*** psi::psimrcc::CCManyBody::d3_ooo
protected
double*** psi::psimrcc::CCManyBody::d3_ooO
protected
double*** psi::psimrcc::CCManyBody::d3_oOO
protected
double*** psi::psimrcc::CCManyBody::d3_OOO
protected
double*** psi::psimrcc::CCManyBody::d3_vvv
protected
double*** psi::psimrcc::CCManyBody::d3_vvV
protected
double*** psi::psimrcc::CCManyBody::d3_vVV
protected
double*** psi::psimrcc::CCManyBody::d3_VVV
protected
double psi::psimrcc::CCManyBody::delta_energy
protected
double psi::psimrcc::CCManyBody::delta_t1_amps
protected
double psi::psimrcc::CCManyBody::delta_t2_amps
protected
double** psi::psimrcc::CCManyBody::Heff
protected
double** psi::psimrcc::CCManyBody::Heff_mrpt2
protected
double psi::psimrcc::CCManyBody::huge
protected
double* psi::psimrcc::CCManyBody::left_eigenvector
protected
double psi::psimrcc::CCManyBody::norm_amps
protected
double psi::psimrcc::CCManyBody::old_energy
protected
Options& psi::psimrcc::CCManyBody::options_
protected
bool psi::psimrcc::CCManyBody::pert_cbs
protected
bool psi::psimrcc::CCManyBody::pert_cbs_coupling
protected
SharedWavefunction psi::psimrcc::CCManyBody::ref_wfn_
protected
double* psi::psimrcc::CCManyBody::right_eigenvector
protected
double psi::psimrcc::CCManyBody::total_time
protected
TriplesCouplingType psi::psimrcc::CCManyBody::triples_coupling_type
protected
TriplesType psi::psimrcc::CCManyBody::triples_type
protected
double* psi::psimrcc::CCManyBody::zeroth_order_eigenvector
protected

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