MPQC  3.0.0-alpha
sc::HSOSHFContribution Class Reference

Computes components of the Fock matrix necessary for high-spin open-shell calculations (e.g. More...

#include <chemistry/qc/lcao/hsoshfcontrib.h>

Inheritance diagram for sc::HSOSHFContribution:
sc::GenericFockContribution sc::FockContribution sc::RefCount

Public Member Functions

 HSOSHFContribution (const Ref< GaussianBasisSet > &f_b1, const Ref< GaussianBasisSet > &f_b2, const Ref< GaussianBasisSet > &p_b, const std::string &fockbuildmatrixtype)
 
 HSOSHFContribution (const HSOSHFContribution &)
 
Ref< FockContributionclone ()
 
void contrib_e_J (double factor, int I, int J, int K, int L, int nI, int nJ, int nK, int nL, const double *RESTRICT buf)
 Compute the Coulomb contribution applying no two electron integral permutations. More...
 
void contrib_e_K (double factor, int I, int J, int K, int L, int nI, int nJ, int nK, int nL, const double *RESTRICT buf)
 Compute the exchange contribution applying no two electron integral permutations. More...
 
void contrib_p12_p13p24_J (double factor, int I, int J, int K, int L, int nI, int nJ, int nK, int nL, const double *RESTRICT buf)
 
void contrib_p12_p13p24_K (double factor, int I, int J, int K, int L, int nI, int nJ, int nK, int nL, const double *RESTRICT buf)
 
void contrib_p34_p13p24_J (double factor, int I, int J, int K, int L, int nI, int nJ, int nK, int nL, const double *RESTRICT buf)
 
void contrib_p34_p13p24_K (double factor, int I, int J, int K, int L, int nI, int nJ, int nK, int nL, const double *RESTRICT buf)
 
void contrib_p12_p34_J (double factor, int I, int J, int K, int L, int nI, int nJ, int nK, int nL, const double *RESTRICT buf)
 
void contrib_p12_p34_K (double factor, int I, int J, int K, int L, int nI, int nJ, int nK, int nL, const double *RESTRICT buf)
 
void contrib_p34_J (double factor, int I, int J, int K, int L, int nI, int nJ, int nK, int nL, const double *RESTRICT buf)
 
void contrib_p34_K (double factor, int I, int J, int K, int L, int nI, int nJ, int nK, int nL, const double *RESTRICT buf)
 
void contrib_p13p24_J (double factor, int I, int J, int K, int L, int nI, int nJ, int nK, int nL, const double *RESTRICT buf)
 
void contrib_p13p24_K (double factor, int I, int J, int K, int L, int nI, int nJ, int nK, int nL, const double *RESTRICT buf)
 
void contrib_all_J (double factor, int I, int J, int K, int L, int nI, int nJ, int nK, int nL, const double *RESTRICT buf)
 Compute the Coulomb contribution applying all two electron integral permutations. More...
 
void contrib_all_K (double factor, int I, int J, int K, int L, int nI, int nJ, int nK, int nL, const double *RESTRICT buf)
 Compute the exchange contribution applying all two electron integral permutations. More...
 
- Public Member Functions inherited from sc::GenericFockContribution
double * jmat_shell_block (int i, int I, int J)
 
bool jmat_symmetric (int i) const
 
double * kmat_shell_block (int i, int I, int J)
 
bool kmat_symmetric (int i) const
 
const double * pmat_shell_block (int i, int I, int J)
 
double * jmat_block (int i, int I, int J)
 
double * kmat_block (int i, int I, int J)
 
const double * pmat_block (int i, int I, int J)
 
Ref< ThreadLock > & get_lock (int i, int Ish, int Jsh)
 
double * alloc_scratch (int size)
 
void free_scratch (double *data)
 
void set_fmat (int i, const RefSCMatrix &)
 
void set_fmat (int i, const RefSymmSCMatrix &)
 
void set_jmat (int i, const RefSCMatrix &)
 
void set_jmat (int i, const RefSymmSCMatrix &)
 
void set_kmat (int i, const RefSCMatrix &)
 
void set_kmat (int i, const RefSymmSCMatrix &)
 
void set_pmat (int i, const RefSymmSCMatrix &)
 
void copy_matrices (int unique_id)
 Copy matrices to allow multiple threads to coexist.
 
void accum (const Ref< FockContribution > &)
 Sum the Fock matrix contributions from different threads. More...
 
void accum_remote (const Ref< MessageGrp > &)
 Sum the Fock matrix contributions from different processors. More...
 
void update ()
 Push the internal Fock matrix data back into the original object.
 
signed char * compute_pmax () const
 Compute the maximum of the density in each block. More...
 
void activate ()
 
void sync ()
 
void deactivate ()
 
void prefetch_blocks (int I, int J, int ifetch, int nfetch)
 
void finish_prefetch_blocks ()
 
void set_fockblocks (const Ref< FockBlocks > &blocks_f1, const Ref< FockBlocks > &blocks_f2, const Ref< FockBlocks > &blocks_p)
 
void flush ()
 
const Ref< FockBuildMatrix > & jmat (int i)
 
const Ref< FockBuildMatrix > & kmat (int i)
 
const Ref< FockBuildMatrix > & pmat (int i)
 
bool use_shell_blocks () const
 
- Public Member Functions inherited from sc::FockContribution
 FockContribution (const FockContribution &)
 
double nint () const
 
double & nint ()
 
- Public Member Functions inherited from sc::RefCount
size_t identifier () const
 Return the unique identifier for this object that can be compared for different objects of different types. More...
 
int lock_ptr () const
 Lock this object.
 
int unlock_ptr () const
 Unlock this object.
 
void use_locks (bool inVal)
 start and stop using locks on this object
 
refcount_t nreference () const
 Return the reference count.
 
refcount_t reference ()
 Increment the reference count and return the new count.
 
refcount_t dereference ()
 Decrement the reference count and return the new count.
 
int managed () const
 
void unmanage ()
 Turn off the reference counting mechanism for this object. More...
 

Additional Inherited Members

- Protected Member Functions inherited from sc::GenericFockContribution
FockBuildMatrixfockbuildmatrix (int matrix, const std::string &type, const Ref< MessageGrp > &msg, const Ref< FockBuildAMG > &)
 
 GenericFockContribution (int nfmat, int npmat, const Ref< GaussianBasisSet > &f_b1, const Ref< GaussianBasisSet > &f_b2, const Ref< GaussianBasisSet > &p_b, const std::string &fockbuildmatrixtype)
 
void pmax_contrib (const Ref< FockBuildMatrix > &mat, signed char *pmax) const
 
- Protected Member Functions inherited from sc::RefCount
 RefCount (const RefCount &)
 
RefCountoperator= (const RefCount &)
 
- Protected Attributes inherited from sc::GenericFockContribution
int nfmat_
 
std::vector< Ref< FockBuildMatrix > > jmats_
 the number of Fock matrices
 
std::vector< Ref< FockBuildMatrix > > kmats_
 
std::vector< bool > k_is_j_
 
int npmat_
 
std::vector< Ref< FockBuildMatrix > > pmats_
 the number of density matrices
 
Ref< GaussianBasisSetf_b1_
 
Ref< GaussianBasisSetf_b2_
 
Ref< GaussianBasisSetp_b_
 
bool f_b1_equiv_f_b2
 
int nlocks_
 
std::vector< Ref< ThreadLock > > locks_
 
std::string fockbuildmatrixtype_
 
bool use_shell_blocks_
 
Ref< FockBuildAMGfbamg_
 
- Protected Attributes inherited from sc::FockContribution
double nint_
 

Detailed Description

Computes components of the Fock matrix necessary for high-spin open-shell calculations (e.g.

HSOSSCF and UnrestrictedSCF). Requires as input two density matrices P: P(0) is the total density and P(1) is the spin density (P(alpha) - P(beta)). Spin density is only used to compute a contribution to the exchange matrix. The resulting matrices can then be combined to produce alpha and beta components of J, K, and F matrices matrices as follows: J(alpha) = J(beta) = J(0), K(alpha) = K(0) + K(1), K(beta) = K(0) - K(1), F(alpha) = F(0) + F(1), F(beta) = F(0) - F(1). The corresponding closed-shell (F(c)) and open-shell (F(o)) matrices used in HSOSSCF can be obtained as follows: F(o) = F(alpha), F(c) = (F(alpha) + F(beta))/2.

Output matrices are in AO basis. If f_b1 == f_b2 then the output is the skeleton AO matrix that needs to be symmetrized with PetiteList, else the output is the full AO matrix.

Member Function Documentation

◆ contrib_all_J()

void sc::HSOSHFContribution::contrib_all_J ( double  factor,
int  I,
int  J,
int  K,
int  L,
int  nI,
int  nJ,
int  nK,
int  nL,
const double *RESTRICT  buf 
)
virtual

Compute the Coulomb contribution applying all two electron integral permutations.

I, J, K, and L indices must all be unique.

Implements sc::FockContribution.

◆ contrib_all_K()

void sc::HSOSHFContribution::contrib_all_K ( double  factor,
int  I,
int  J,
int  K,
int  L,
int  nI,
int  nJ,
int  nK,
int  nL,
const double *RESTRICT  buf 
)
virtual

Compute the exchange contribution applying all two electron integral permutations.

I, J, K, and L indices must all be unique.

Implements sc::FockContribution.

◆ contrib_e_J()

void sc::HSOSHFContribution::contrib_e_J ( double  factor,
int  I,
int  J,
int  K,
int  L,
int  nI,
int  nJ,
int  nK,
int  nL,
const double *RESTRICT  buf 
)
virtual

Compute the Coulomb contribution applying no two electron integral permutations.

The integrals in buf are the full redundant set (nI*nJ*nK*nL integrals). The computes only the Coulomb contribution to the Fock matrix.

Implements sc::FockContribution.

◆ contrib_e_K()

void sc::HSOSHFContribution::contrib_e_K ( double  factor,
int  I,
int  J,
int  K,
int  L,
int  nI,
int  nJ,
int  nK,
int  nL,
const double *RESTRICT  buf 
)
virtual

Compute the exchange contribution applying no two electron integral permutations.

The integrals in buf are the full redundant set (nI*nJ*nK*nL integrals). The computes only the Coulomb contribution to the Fock matrix.

Implements sc::FockContribution.


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

Generated at Sun Jan 26 2020 23:24:06 for MPQC 3.0.0-alpha using the documentation package Doxygen 1.8.16.