MPQC
3.0.0-alpha
|
Computes components of the Fock matrix necessary for high-spin open-shell calculations (e.g. More...
#include <chemistry/qc/lcao/hsoshfcontrib.h>
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< FockContribution > | clone () |
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 | |
FockBuildMatrix * | fockbuildmatrix (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 &) | |
RefCount & | operator= (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< GaussianBasisSet > | f_b1_ |
Ref< GaussianBasisSet > | f_b2_ |
Ref< GaussianBasisSet > | p_b_ |
bool | f_b1_equiv_f_b2 |
int | nlocks_ |
std::vector< Ref< ThreadLock > > | locks_ |
std::string | fockbuildmatrixtype_ |
bool | use_shell_blocks_ |
Ref< FockBuildAMG > | fbamg_ |
Protected Attributes inherited from sc::FockContribution | |
double | nint_ |
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.
|
virtual |
Compute the Coulomb contribution applying all two electron integral permutations.
I, J, K, and L indices must all be unique.
Implements sc::FockContribution.
|
virtual |
Compute the exchange contribution applying all two electron integral permutations.
I, J, K, and L indices must all be unique.
Implements sc::FockContribution.
|
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.
|
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.