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

Derived class extending the JK object to GTFock. More...

#include <jk.h>

Inheritance diagram for psi::GTFockJK:
psi::JK

Public Member Functions

 GTFockJK (std::shared_ptr< psi::BasisSet > Primary, size_t NMats, bool AreSymm)
 Your public interface to GTFock. More...
 
 GTFockJK (std::shared_ptr< psi::BasisSet > Primary)
 Your interface to GTFock that works well with libfock GTFock needs number of densities and symmetric at initialization This code calls GTFock once the number of densities was read from jk object. More...
 
- 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 ()
 
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...
 
virtual void print_header () const
 I don't fell the need to further clutter the output... 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 ()
 
unsigned long int memory_overhead () const
 Memory (doubles) used to hold J/K/wK/C/D and ao versions, at current moment. More...
 

Private Attributes

std::shared_ptr< MinimalInterfaceImpl_
 The actual instance that does the implementing. More...
 
int NMats_ = 0
 

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)
 
- 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...
 

Detailed Description

Derived class extending the JK object to GTFock.

Unfortunately GTFock needs to know the number of density matrices and whether they are symmetric at construction. These two points are not within the design considerations of the base JK object and so this adds a slight complication if you want to use GTFock under those circumstances. To get around this, you'll need to manually build a GTFockJK object and pass it into the constructor. Don't worry building a GTFockJK object is easy, take a look at the Hartree-Fock code in HF.cc

Constructor & Destructor Documentation

psi::GTFockJK::GTFockJK ( std::shared_ptr< psi::BasisSet Primary,
size_t  NMats,
bool  AreSymm 
)

Your public interface to GTFock.

Parameters
[in]Primaryused by the base JK object, but not by GTFock. Long term, this should be changed, but the reality is GTFock under the hood gets its basis in the same way as JK::build_JK gets Primary, so this shouldn't be an issue
[in]NMatsThe number of density matrices you are passing in and consequently the number of Js and Ks you'll be getting back
[in]AreSymmA flag specifying whether the density matrices you'll be passing in are symmetric.
psi::GTFockJK::GTFockJK ( std::shared_ptr< psi::BasisSet Primary)

Your interface to GTFock that works well with libfock GTFock needs number of densities and symmetric at initialization This code calls GTFock once the number of densities was read from jk object.

Member Function Documentation

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

Do we need to backtransform to C1 under the hood?

Implements psi::JK.

virtual void psi::GTFockJK::compute_JK ( )
protectedvirtual

Compute J/K for current C/D.

Implements psi::JK.

virtual void psi::GTFockJK::postiterations ( )
inlineprotectedvirtual

Delete integrals, files, etc.

Implements psi::JK.

virtual void psi::GTFockJK::preiterations ( )
inlineprotectedvirtual

Setup integrals, files, etc.

Implements psi::JK.

virtual void psi::GTFockJK::print_header ( ) const
inlineprotectedvirtual

I don't fell the need to further clutter the output...

Implements psi::JK.

Member Data Documentation

std::shared_ptr<MinimalInterface> psi::GTFockJK::Impl_
private

The actual instance that does the implementing.

int psi::GTFockJK::NMats_ = 0
private

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