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

#include <jk.h>

Inheritance diagram for psi::DFJK:
psi::JK psi::CDJK

Public Member Functions

 DFJK (std::shared_ptr< BasisSet > primary, std::shared_ptr< BasisSet > auxiliary)
 
virtual ~DFJK ()
 Destructor. More...
 
virtual SharedVector iaia (SharedMatrix Ci, SharedMatrix Ca)
 
void set_condition (double condition)
 
void set_unit (unsigned int unit)
 
void set_df_ints_io (const std::string &val)
 
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_allow_desymmetrization (bool t_f)
 
void set_cutoff (double cutoff)
 
void set_memory (unsigned long int 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 ()
 
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 common_init ()
 Common initialization. More...
 
bool is_core () const
 
unsigned long int memory_temp () const
 
int max_rows () const
 
int max_nocc () const
 
void initialize_temps ()
 
void free_temps ()
 
void initialize_w_temps ()
 
void free_w_temps ()
 
virtual void initialize_JK_core ()
 
virtual void initialize_JK_disk ()
 
virtual void manage_JK_core ()
 
virtual void manage_JK_disk ()
 
virtual void block_J (double **Qmnp, int naux)
 
virtual void block_K (double **Qmnp, int naux)
 
virtual void initialize_wK_core ()
 
virtual void initialize_wK_disk ()
 
virtual void manage_wK_core ()
 
virtual void manage_wK_disk ()
 
virtual void block_wK (double **Qlmnp, double **Qrmnp, int naux)
 
virtual void rebuild_wK_disk ()
 
- 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 ()
 
unsigned long int memory_overhead () const
 Memory (doubles) used to hold J/K/wK/C/D and ao versions, at current moment. More...
 

Protected Attributes

std::shared_ptr< BasisSetauxiliary_
 Auxiliary basis set. More...
 
std::shared_ptr< PSIOpsio_
 PSIO object. More...
 
std::string df_ints_io_
 Cache action for three-index integrals. More...
 
int df_ints_num_threads_
 Number of threads for DF integrals. More...
 
double condition_
 Condition cutoff in fitting metric, defaults to 1.0E-12. More...
 
unsigned int unit_
 File number for (Q|mn) tensor. More...
 
bool is_core_
 Core or disk? More...
 
int max_rows_
 Maximum number of rows to handle at a time. More...
 
int max_nocc_
 Maximum number of nocc in C vectors. More...
 
std::shared_ptr< ERISievesieve_
 Sieve, must be static throughout the life of the object. More...
 
SharedMatrix Qmn_
 Main (Q|mn) Tensor (or chunk for disk-based) More...
 
SharedMatrix Qlmn_
 (Q|P)^-1 (P|mn) for wK (or chunk for disk-based) More...
 
SharedMatrix Qrmn_
 (Q|w|mn) for wK (or chunk for disk-based) More...
 
std::shared_ptr< VectorJ_temp_
 
std::shared_ptr< VectorD_temp_
 
std::shared_ptr< Vectord_temp_
 
SharedMatrix E_left_
 
SharedMatrix E_right_
 
std::vector< SharedMatrixC_temp_
 
std::vector< SharedMatrixQ_temp_
 
- 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...
 
unsigned long int 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...
 
bool allow_desymmetrization_
 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 DFJK

JK implementation using sieved, threaded density-fitted technology

Constructor & Destructor Documentation

psi::DFJK::DFJK ( std::shared_ptr< BasisSet primary,
std::shared_ptr< BasisSet auxiliary 
)
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
auxiliaryauxiliary basis set for this system.
psi::DFJK::~DFJK ( )
virtual

Destructor.

Member Function Documentation

void psi::DFJK::block_J ( double **  Qmnp,
int  naux 
)
protectedvirtual
void psi::DFJK::block_K ( double **  Qmnp,
int  naux 
)
protectedvirtual
void psi::DFJK::block_wK ( double **  Qlmnp,
double **  Qrmnp,
int  naux 
)
protectedvirtual
virtual bool psi::DFJK::C1 ( ) const
inlineprotectedvirtual

Do we need to backtransform to C1 under the hood?

Implements psi::JK.

void psi::DFJK::common_init ( void  )
protected

Common initialization.

void psi::DFJK::compute_JK ( )
protectedvirtual

Compute J/K for current C/D.

Implements psi::JK.

void psi::DFJK::free_temps ( )
protected
void psi::DFJK::free_w_temps ( )
protected
SharedVector psi::DFJK::iaia ( SharedMatrix  Ci,
SharedMatrix  Ca 
)
virtual

Method to provide (ia|ia) integrals for SO-basis C_mi and C_na matrices in O(N^4) or less Only available in DF-type JK integrals Throws by default

Reimplemented from psi::JK.

void psi::DFJK::initialize_JK_core ( )
protectedvirtual

Reimplemented in psi::CDJK.

void psi::DFJK::initialize_JK_disk ( )
protectedvirtual

Reimplemented in psi::CDJK.

void psi::DFJK::initialize_temps ( )
protected
void psi::DFJK::initialize_w_temps ( )
protected
void psi::DFJK::initialize_wK_core ( )
protectedvirtual
void psi::DFJK::initialize_wK_disk ( )
protectedvirtual
bool psi::DFJK::is_core ( ) const
protected
void psi::DFJK::manage_JK_core ( )
protectedvirtual

Reimplemented in psi::CDJK.

void psi::DFJK::manage_JK_disk ( )
protectedvirtual
void psi::DFJK::manage_wK_core ( )
protectedvirtual
void psi::DFJK::manage_wK_disk ( )
protectedvirtual
int psi::DFJK::max_nocc ( ) const
protected
int psi::DFJK::max_rows ( ) const
protected
unsigned long int psi::DFJK::memory_temp ( ) const
protected
void psi::DFJK::postiterations ( )
protectedvirtual

Delete integrals, files, etc.

Implements psi::JK.

void psi::DFJK::preiterations ( )
protectedvirtual

Setup integrals, files, etc.

Implements psi::JK.

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

Print header information regarding JK type on output file

Implements psi::JK.

Reimplemented in psi::CDJK.

void psi::DFJK::rebuild_wK_disk ( )
protectedvirtual
void psi::DFJK::set_condition ( double  condition)
inline

Minimum relative eigenvalue to retain in fitting inverse All eigenvectors with < condition * will be discarded

Parameters
conditionminimum relative eigenvalue allowed, defaults to 1.0E-12
void psi::DFJK::set_df_ints_io ( const std::string &  val)
inline

What action to take for caching three-index integrals

Parameters
valOne of NONE, LOAD, or SAVE
void psi::DFJK::set_df_ints_num_threads ( int  val)
inline

What number of threads to compute integrals on

Parameters
vala positive integer
void psi::DFJK::set_unit ( unsigned int  unit)
inline

Which file number should the (Q|mn) integrals go in

Parameters
unitUnit number

Member Data Documentation

std::shared_ptr<BasisSet> psi::DFJK::auxiliary_
protected

Auxiliary basis set.

std::vector<SharedMatrix > psi::DFJK::C_temp_
protected
double psi::DFJK::condition_
protected

Condition cutoff in fitting metric, defaults to 1.0E-12.

std::shared_ptr<Vector> psi::DFJK::D_temp_
protected
std::shared_ptr<Vector> psi::DFJK::d_temp_
protected
std::string psi::DFJK::df_ints_io_
protected

Cache action for three-index integrals.

int psi::DFJK::df_ints_num_threads_
protected

Number of threads for DF integrals.

SharedMatrix psi::DFJK::E_left_
protected
SharedMatrix psi::DFJK::E_right_
protected
bool psi::DFJK::is_core_
protected

Core or disk?

std::shared_ptr<Vector> psi::DFJK::J_temp_
protected
int psi::DFJK::max_nocc_
protected

Maximum number of nocc in C vectors.

int psi::DFJK::max_rows_
protected

Maximum number of rows to handle at a time.

std::shared_ptr<PSIO> psi::DFJK::psio_
protected

PSIO object.

std::vector<SharedMatrix > psi::DFJK::Q_temp_
protected
SharedMatrix psi::DFJK::Qlmn_
protected

(Q|P)^-1 (P|mn) for wK (or chunk for disk-based)

SharedMatrix psi::DFJK::Qmn_
protected

Main (Q|mn) Tensor (or chunk for disk-based)

SharedMatrix psi::DFJK::Qrmn_
protected

(Q|w|mn) for wK (or chunk for disk-based)

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

Sieve, must be static throughout the life of the object.

unsigned int psi::DFJK::unit_
protected

File number for (Q|mn) tensor.


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