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

#include <jk.h>

Inheritance diagram for psi::CDJK:
psi::DiskDFJK psi::JK

Public Member Functions

 CDJK (std::shared_ptr< BasisSet > primary, double cholesky_tolerance)
 ~CDJK () override
 Destructor. More...
- Public Member Functions inherited from psi::DiskDFJK
 DiskDFJK (std::shared_ptr< BasisSet > primary, std::shared_ptr< BasisSet > auxiliary)
 ~DiskDFJK () override
 Destructor. More...
SharedVector iaia (SharedMatrix Ci, SharedMatrix Ca) override
void set_condition (double condition)
void set_unit (size_t unit)
void set_df_ints_io (const std::string &val)
void set_df_ints_num_threads (int val)
- Public Member Functions inherited from psi::JK
 JK (std::shared_ptr< BasisSet > primary)
virtual ~JK ()
 Destructor. More...
void set_cutoff (double cutoff)
double get_cutoff () const
void set_memory (size_t memory)
void set_omp_nthread (int omp_nthread)
int get_omp_nthread () const
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::shared_ptr< BasisSetbasisset ()
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

std::string name () override
size_t memory_estimate () override
virtual bool is_core ()
void initialize_JK_core () override
void initialize_JK_disk () override
void manage_JK_core () override
void print_header () const override
- Protected Member Functions inherited from psi::DiskDFJK
bool C1 () const override
 Do we need to backtransform to C1 under the hood? More...
void preiterations () override
 Setup integrals, files, etc. More...
void compute_JK () override
 Compute J/K for current C/D. More...
void postiterations () override
 Delete integrals, files, etc. More...
void common_init ()
 Common initialization. More...
bool is_core ()
size_t 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 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 ()
size_t memory_overhead () const
 Memory (doubles) used to hold J/K/wK/C/D and ao versions, at current moment. More...

Protected Attributes

long int ncholesky_
double cholesky_tolerance_
- Protected Attributes inherited from psi::DiskDFJK
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...
size_t 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...
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)
static std::shared_ptr< JKbuild_JK (std::shared_ptr< BasisSet > primary, std::shared_ptr< BasisSet > auxiliary, Options &options, bool do_wK, size_t doubles)

Detailed Description

Class CDJK

JK implementation using cholesky decomposition technology

Constructor & Destructor Documentation

psi::CDJK::CDJK ( std::shared_ptr< BasisSet primary,
double  cholesky_tolerance 
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
cholesky_tolerancetolerance for cholesky decomposition.
psi::CDJK::~CDJK ( )


Member Function Documentation

void psi::CDJK::initialize_JK_core ( )

If user asks to read integrals from disk, just read them from disk. Qmn is only storing upper triangle. Ugur needs ncholesky_ in NAUX (SCF), but it can also be read from disk

If user does not want to read from disk, recompute the cholesky integrals

Kinda silly to check for memory after you perform CD. Most likely redundant as cholesky also checks for memory.

Reimplemented from psi::DiskDFJK.

void psi::CDJK::initialize_JK_disk ( )

Reimplemented from psi::DiskDFJK.

virtual bool psi::CDJK::is_core ( )
void psi::CDJK::manage_JK_core ( )

Reimplemented from psi::DiskDFJK.

size_t psi::CDJK::memory_estimate ( )

Reimplemented from psi::DiskDFJK.

std::string psi::CDJK::name ( )

Reimplemented from psi::DiskDFJK.

void psi::CDJK::print_header ( ) const

Print header information regarding JK type on output file

Reimplemented from psi::DiskDFJK.

Member Data Documentation

double psi::CDJK::cholesky_tolerance_
long int psi::CDJK::ncholesky_

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