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

#include <jk.h>

Inheritance diagram for psi::DirectJK:
psi::JK

Public Member Functions

 DirectJK (std::shared_ptr< BasisSet > primary)
 
virtual ~DirectJK ()
 Destructor. More...
 
void set_df_ints_num_threads (int val)
 
virtual void print_header () const
 
- Public Member Functions inherited from psi::JK
 JK (std::shared_ptr< BasisSet > primary)
 
virtual ~JK ()
 Destructor. More...
 
void set_cutoff (double cutoff)
 
void set_memory (size_t memory)
 
void set_omp_nthread (int omp_nthread)
 
void set_print (int print)
 Print flag (defaults to 1) More...
 
void set_debug (int debug)
 Debug flag (defaults to 0) More...
 
void set_bench (int bench)
 Bench flag (defaults to 0) More...
 
void set_do_J (bool do_J)
 
void set_do_K (bool do_K)
 
void set_do_wK (bool do_wK)
 
void set_omega (double omega)
 
void initialize ()
 
void compute ()
 
void finalize ()
 
virtual SharedVector iaia (SharedMatrix Ci, SharedMatrix Ca)
 
std::vector< SharedMatrix > & C_left ()
 
std::vector< SharedMatrix > & C_right ()
 
const std::vector< SharedMatrix > & J () const
 
const std::vector< SharedMatrix > & K () const
 
const std::vector< SharedMatrix > & wK () const
 
const std::vector< SharedMatrix > & D () const
 

Protected Member Functions

virtual bool C1 () const
 Do we need to backtransform to C1 under the hood? More...
 
virtual void preiterations ()
 Setup integrals, files, etc. More...
 
virtual void compute_JK ()
 Compute J/K for current C/D. More...
 
virtual void postiterations ()
 Delete integrals, files, etc. More...
 
void build_JK (std::vector< std::shared_ptr< TwoBodyAOInt > > &ints, std::vector< std::shared_ptr< Matrix > > &D, std::vector< std::shared_ptr< Matrix > > &J, std::vector< std::shared_ptr< Matrix > > &K)
 Build the J and K matrices for this integral class. More...
 
void common_init ()
 Common initialization. More...
 
- Protected Member Functions inherited from psi::JK
void compute_D ()
 Build the pseudo-density D_, before compute_JK() More...
 
void USO2AO ()
 Transform current C_left_/C_right_/D_ to C_left_ao_/C_right_ao_/D_ao_, before compute_JK() More...
 
void AO2USO ()
 Transform finished J_ao_/K_ao_ to J_/K_, after compute_JK() More...
 
void allocate_JK ()
 Allocate J_/K_ should we be using SOs. More...
 
void common_init ()
 
size_t memory_overhead () const
 Memory (doubles) used to hold J/K/wK/C/D and ao versions, at current moment. More...
 

Protected Attributes

int df_ints_num_threads_
 Number of threads for DF integrals TODO: DF_INTS_NUM_THREADS. More...
 
std::shared_ptr< ERISievesieve_
 ERI Sieve. More...
 
- Protected Attributes inherited from psi::JK
int print_
 Print flag, defaults to 1. More...
 
int debug_
 Debug flag, defaults to 0. More...
 
int bench_
 Bench flag, defaults to 0. More...
 
size_t memory_
 Memory available, in doubles, defaults to 256 MB (32 M doubles) More...
 
int omp_nthread_
 Number of OpenMP threads (defaults to 1 in no OpenMP, Process::environment.get_n_threads() otherwise) More...
 
double cutoff_
 Integral cutoff (defaults to 0.0) More...
 
std::vector< bool > input_symmetry_cast_map_
 Whether to all desymmetrization, for cases when it's already been performed elsewhere. More...
 
bool do_J_
 Do J matrices? Defaults to true. More...
 
bool do_K_
 Do K matrices? Defaults to true. More...
 
bool do_wK_
 Do wK matrices? Defaults to false. More...
 
double omega_
 Omega, defaults to 0.0. More...
 
bool lr_symmetric_
 Left-right symmetric? Determined in each call of compute() More...
 
std::vector< SharedMatrixC_left_
 Pseudo-occupied C matrices, left side. More...
 
std::vector< SharedMatrixC_right_
 Pseudo-occupied C matrices, right side. More...
 
std::vector< SharedMatrixD_
 Pseudo-density matrices $D_{ls}=C_{li}^{left}C_{si}^{right}$. More...
 
std::vector< SharedMatrixJ_
 J matrices: $J_{mn}=(mn|ls)C_{li}^{left}C_{si}^{right}$. More...
 
std::vector< SharedMatrixK_
 K matrices: $K_{mn}=(ml|ns)C_{li}^{left}C_{si}^{right}$. More...
 
std::vector< SharedMatrixwK_
 wK matrices: $K_{mn}(\omega)=(ml|\omega|ns)C_{li}^{left}C_{si}^{right}$ More...
 
std::shared_ptr< BasisSetprimary_
 Primary basis set. More...
 
SharedMatrix AO2USO_
 AO2USO transformation matrix. More...
 
std::vector< SharedMatrixC_left_ao_
 Pseudo-occupied C matrices, left side. More...
 
std::vector< SharedMatrixC_right_ao_
 Pseudo-occupied C matrices, right side. More...
 
std::vector< SharedMatrixD_ao_
 Pseudo-density matrices. More...
 
std::vector< SharedMatrixJ_ao_
 J matrices: J_mn = (mn|ls) C_li^left C_si^right. More...
 
std::vector< SharedMatrixK_ao_
 K matrices: K_mn = (ml|ns) C_li^left C_si^right. More...
 
std::vector< SharedMatrixwK_ao_
 wK matrices: wK_mn = (ml|w|ns) C_li^left C_si^right More...
 

Additional Inherited Members

- Static Public Member Functions inherited from psi::JK
static std::shared_ptr< JKbuild_JK (std::shared_ptr< BasisSet > primary, std::shared_ptr< BasisSet > auxiliary, Options &options)
 
static std::shared_ptr< JKbuild_JK (std::shared_ptr< BasisSet > primary, std::shared_ptr< BasisSet > auxiliary, Options &options, std::string jk_type)
 

Detailed Description

Class DirectJK

JK implementation using sieved, threaded integral-direct technology

Note: This class builds a TwoBodyAOInt for each OpenMP thread, for thread safety. This might be a bad idea if you have a high core-to-memory ratio. Clamp the DF_INTS_NUM_THREADS value if this fate befalls you.

Constructor & Destructor Documentation

psi::DirectJK::DirectJK ( std::shared_ptr< BasisSet primary)
Parameters
primaryprimary basis set for this system. AO2USO transforms will be built with the molecule contained in this basis object, so the incoming C matrices must have the same spatial symmetry structure as this molecule
psi::DirectJK::~DirectJK ( )
virtual

Destructor.

Member Function Documentation

void psi::DirectJK::build_JK ( std::vector< std::shared_ptr< TwoBodyAOInt > > &  ints,
std::vector< std::shared_ptr< Matrix > > &  D,
std::vector< std::shared_ptr< Matrix > > &  J,
std::vector< std::shared_ptr< Matrix > > &  K 
)
protected

Build the J and K matrices for this integral class.

virtual bool psi::DirectJK::C1 ( ) const
inlineprotectedvirtual

Do we need to backtransform to C1 under the hood?

Implements psi::JK.

void psi::DirectJK::common_init ( void  )
protected

Common initialization.

void psi::DirectJK::compute_JK ( )
protectedvirtual

Compute J/K for current C/D.

Implements psi::JK.

void psi::DirectJK::postiterations ( )
protectedvirtual

Delete integrals, files, etc.

Implements psi::JK.

void psi::DirectJK::preiterations ( )
protectedvirtual

Setup integrals, files, etc.

Implements psi::JK.

void psi::DirectJK::print_header ( ) const
virtual

Print header information regarding JK type on output file

Implements psi::JK.

void psi::DirectJK::set_df_ints_num_threads ( int  val)
inline

What number of threads to compute integrals on

Parameters
vala positive integer

Member Data Documentation

int psi::DirectJK::df_ints_num_threads_
protected

Number of threads for DF integrals TODO: DF_INTS_NUM_THREADS.

std::shared_ptr<ERISieve> psi::DirectJK::sieve_
protected

ERI Sieve.


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