MADNESS  0.10.1
Classes | Public Member Functions | Private Member Functions | Static Private Member Functions | List of all members
madness::MP3 Class Reference

#include <mp3.h>

Inheritance diagram for madness::MP3:
Inheritance graph
[legend]
Collaboration diagram for madness::MP3:
Collaboration graph
[legend]

Classes

class  MacroTaskMP3
 helper class for calculating the MP3 energy contributions More...
 

Public Member Functions

 MP3 (const CCPotentials &ops)
 
 MP3 (World &world, const std::shared_ptr< Nemo > nemo, const CCParameters &param)
 
double mp3_energy_contribution (const Pairs< CCPair > &mp2pairs) const
 
double mp3_energy_contribution_macrotask_driver (const Pairs< CCPair > &mp2pairs) const
 compute the MP3 energy contribution, macrotask version More...
 

Private Member Functions

double compute_mp3_cd (const Pairs< CCPair > &mp2pairs) const
 
double compute_mp3_ef (const Pairs< CCPair > &mp2pairs) const
 
double compute_mp3_ef_as_overlap (const Pairs< CCPair > &mp2pairs, const Pairs< std::vector< CCPairFunction< double, 6 >>> clusterfunctions) const
 
double compute_mp3_ef_low_scaling (const Pairs< CCPair > &mp2pairs, const Pairs< std::vector< CCPairFunction< double, 6 >>> clusterfunctions) const
 
double compute_mp3_ef_with_permutational_symmetry (const Pairs< CCPair > &mp2pairs) const
 compute the EF term of the MP3 energy with permutational symmetry More...
 
double compute_mp3_ghij (const Pairs< CCPair > &mp2pairs, const Pairs< std::vector< CCPairFunction< double, 6 >>> clusterfunctions) const
 
double compute_mp3_ghij_fast (const Pairs< CCPair > &mp2pairs, const Pairs< std::vector< CCPairFunction< double, 6 >>> clusterfunctions) const
 
double compute_mp3_klmn (const Pairs< CCPair > &mp2pairs) const
 
double compute_mp3_klmn_fast (const Pairs< CCPair > &mp2pairs) const
 
double mp3_test (const Pairs< CCPair > &mp2pairs, const Pairs< std::vector< CCPairFunction< double, 6 >>> clusterfunctions) const
 

Static Private Member Functions

static double compute_mp3_cd (World &world, const long i, const long j, const Pairs< std::vector< CCPairFunction< double, 6 >>> &pair_square, const std::vector< Function< double, 3 >> &mo_ket, const std::vector< Function< double, 3 >> &mo_bra, const CCParameters &parameters, const Molecule &molecule, const Function< double, 3 > &Rsquare, const std::vector< std::string > &argument)
 compute the cd term for single pair ij More...
 
static double compute_mp3_ef (World &world, const long i, const long j, const Pairs< std::vector< CCPairFunction< double, 6 >>> &pair_square, const std::vector< Function< double, 3 >> &mo_ket, const std::vector< Function< double, 3 >> &mo_bra, const CCParameters &parameters, const Molecule &molecule, const Function< double, 3 > &Rsquare, const std::vector< std::string > &argument)
 compute the ef term for single pair ij More...
 
static double compute_mp3_ghij (World &world, const long i, const long j, const Pairs< std::vector< CCPairFunction< double, 6 >>> &pair_square, const std::vector< Function< double, 3 >> &mo_ket, const std::vector< Function< double, 3 >> &mo_bra, const CCParameters &parameters, const Molecule &molecule, const Function< double, 3 > &Rsquare, const std::vector< std::string > &argument)
 
static double compute_mp3_klmn (World &world, const long i, const long j, const Pairs< std::vector< CCPairFunction< double, 6 >>> &pair_square, const std::vector< Function< double, 3 >> &mo_ket, const std::vector< Function< double, 3 >> &mo_bra, const CCParameters &parameters, const Molecule &molecule, const Function< double, 3 > &Rsquare, const std::vector< std::string > &argument)
 compute the klmn term for single pair ij More...
 

Constructor & Destructor Documentation

◆ MP3() [1/2]

madness::MP3::MP3 ( World world,
const std::shared_ptr< Nemo nemo,
const CCParameters param 
)
inline

◆ MP3() [2/2]

madness::MP3::MP3 ( const CCPotentials &  ops)
inline

Member Function Documentation

◆ compute_mp3_cd() [1/2]

double madness::MP3::compute_mp3_cd ( const Pairs< CCPair > &  mp2pairs) const
private

◆ compute_mp3_cd() [2/2]

double madness::MP3::compute_mp3_cd ( World world,
const long  i,
const long  j,
const Pairs< std::vector< CCPairFunction< double, 6 >>> &  pair_square,
const std::vector< Function< double, 3 >> &  mo_ket,
const std::vector< Function< double, 3 >> &  mo_bra,
const CCParameters parameters,
const Molecule molecule,
const Function< double, 3 > &  Rsquare,
const std::vector< std::string > &  argument 
)
staticprivate

compute the cd term for single pair ij

References bufsize, madness::inner(), madness::OT_G12, and madness::print().

◆ compute_mp3_ef() [1/2]

double madness::MP3::compute_mp3_ef ( const Pairs< CCPair > &  mp2pairs) const
private

◆ compute_mp3_ef() [2/2]

double madness::MP3::compute_mp3_ef ( World world,
const long  i,
const long  j,
const Pairs< std::vector< CCPairFunction< double, 6 >>> &  pair_square,
const std::vector< Function< double, 3 >> &  mo_ket,
const std::vector< Function< double, 3 >> &  mo_bra,
const CCParameters parameters,
const Molecule molecule,
const Function< double, 3 > &  Rsquare,
const std::vector< std::string > &  argument 
)
staticprivate

◆ compute_mp3_ef_as_overlap()

double madness::MP3::compute_mp3_ef_as_overlap ( const Pairs< CCPair > &  mp2pairs,
const Pairs< std::vector< CCPairFunction< double, 6 >>>  clusterfunctions 
) const
private

◆ compute_mp3_ef_low_scaling()

double madness::MP3::compute_mp3_ef_low_scaling ( const Pairs< CCPair > &  mp2pairs,
const Pairs< std::vector< CCPairFunction< double, 6 >>>  clusterfunctions 
) const
private

◆ compute_mp3_ef_with_permutational_symmetry()

double madness::MP3::compute_mp3_ef_with_permutational_symmetry ( const Pairs< CCPair > &  mp2pairs) const
private

compute the EF term of the MP3 energy with permutational symmetry

there is the usual 8-fold permutational symmetry for 2-electron integrals <ij | kl > = <ji | lk > = <kj | il > = < il | kj > = <kl | ij> = <lk | ji > = <il | kj > = < kj | il > implemented as loop over (ij) = \sum_i<j and (ij) < (kl)

<ij | kl > = (ik | jl)

References ij(), madness::inner(), k, MADNESS_CHECK_THROW, madness::permutation::make_all_tau_permutations(), madness::PairVectorMap::map, madness::OT_G12, p(), pow(), madness::print_header3(), R2, madness::permutation::remove_duplicates(), madness::PairVectorMap::triangular_map(), and weight().

Referenced by mp3_energy_contribution().

◆ compute_mp3_ghij() [1/2]

double madness::MP3::compute_mp3_ghij ( const Pairs< CCPair > &  mp2pairs,
const Pairs< std::vector< CCPairFunction< double, 6 >>>  clusterfunctions 
) const
private

◆ compute_mp3_ghij() [2/2]

double madness::MP3::compute_mp3_ghij ( World world,
const long  i,
const long  j,
const Pairs< std::vector< CCPairFunction< double, 6 >>> &  pair_square,
const std::vector< Function< double, 3 >> &  mo_ket,
const std::vector< Function< double, 3 >> &  mo_bra,
const CCParameters parameters,
const Molecule molecule,
const Function< double, 3 > &  Rsquare,
const std::vector< std::string > &  argument 
)
staticprivate

compute the ghij term for single pair ij

the term actually scales linearly with the number of occupied orbitals i, so for all i!=j return zero

References bufsize, madness::CCParameters::freeze(), madness::g, madness::inner(), molecule, madness::multiply(), madness::OT_G12, madness::print(), madness::print_header3(), and madness::timer::tag().

◆ compute_mp3_ghij_fast()

double madness::MP3::compute_mp3_ghij_fast ( const Pairs< CCPair > &  mp2pairs,
const Pairs< std::vector< CCPairFunction< double, 6 >>>  clusterfunctions 
) const
private

◆ compute_mp3_klmn() [1/2]

double madness::MP3::compute_mp3_klmn ( const Pairs< CCPair > &  mp2pairs) const
private

◆ compute_mp3_klmn() [2/2]

double madness::MP3::compute_mp3_klmn ( World world,
const long  i,
const long  j,
const Pairs< std::vector< CCPairFunction< double, 6 >>> &  pair_square,
const std::vector< Function< double, 3 >> &  mo_ket,
const std::vector< Function< double, 3 >> &  mo_bra,
const CCParameters parameters,
const Molecule molecule,
const Function< double, 3 > &  Rsquare,
const std::vector< std::string > &  argument 
)
staticprivate

◆ compute_mp3_klmn_fast()

double madness::MP3::compute_mp3_klmn_fast ( const Pairs< CCPair > &  mp2pairs) const
private

◆ mp3_energy_contribution()

double madness::MP3::mp3_energy_contribution ( const Pairs< CCPair > &  mp2pairs) const

◆ mp3_energy_contribution_macrotask_driver()

double madness::MP3::mp3_energy_contribution_macrotask_driver ( const Pairs< CCPair > &  mp2pairs) const

◆ mp3_test()

double madness::MP3::mp3_test ( const Pairs< CCPair > &  mp2pairs,
const Pairs< std::vector< CCPairFunction< double, 6 >>>  clusterfunctions 
) const
private

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