28#ifndef _chemistry_qc_lcao_utils_h
29#define _chemistry_qc_lcao_utils_h
32#include <math/scmat/matrix.h>
33#include <chemistry/qc/wfn/spin.h>
34#include <math/mmisc/pairiter.h>
35#include <math/distarray4/distarray4.h>
45 template <PureSpinCase2 spin>
46 RefSCMatrix
spinadapt(
const RefSCMatrix &A,
47 const Ref<OrbitalSpace> &bra,
48 const Ref<OrbitalSpace> &ket);
56 bool accumulate =
false);
68 template <
bool accumulate>
81 template <
bool accumulate>
87 template <
bool accumulate>
94 template <
bool Accumulate>
110 template <
bool Accumulate, sc::fastpairiter::PairSymm BraSymm, sc::fastpairiter::PairSymm KetSymm>
126 template <
bool Accumulate,
127 sc::fastpairiter::PairSymm SrcBraSymm,
128 sc::fastpairiter::PairSymm SrcKetSymm,
129 sc::fastpairiter::PairSymm DstBraSymm,
130 sc::fastpairiter::PairSymm DstKetSymm
147 bool transpose =
false);
180 template <
typename T>
181 void bzerofast(T* s,
size_t n) {
182 memset(
static_cast<void*
>(s), 0, n*
sizeof(T));
This class produces MOPairIter objects.
Definition utils.h:166
Ref< SpatialMOPairIter > mopairiter(const Ref< OrbitalSpace > &space1, const Ref< OrbitalSpace > &space2)
Constructs an appropriate MOPairIter object.
RefSCDimension scdim_aa(const Ref< OrbitalSpace > &space1, const Ref< OrbitalSpace > &space2)
Constructs an appropriate RefSCDimension object for same-spin pair.
RefSCDimension scdim_ab(const Ref< OrbitalSpace > &space1, const Ref< OrbitalSpace > &space2)
Constructs an appropriate RefSCDimension object for different-spin pair.
The RefDiagSCMatrix class is a smart pointer to an DiagSCMatrix specialization.
Definition matrix.h:389
The RefSCDimension class is a smart pointer to an SCDimension specialization.
Definition dim.h:152
The RefSCMatrix class is a smart pointer to an SCMatrix specialization.
Definition matrix.h:135
The RefSymmSCMatrix class is a smart pointer to an SCSymmSCMatrix specialization.
Definition matrix.h:265
A template class that maintains references counts.
Definition ref.h:361
std::vector< int > map(const GaussianBasisSet &B, const GaussianBasisSet &A)
same as operator<<, except A does not have to be contained in B, map[a] = -1 if function a is not in ...
Contains all MPQC code up to version 3.
Definition mpqcin.h:14
std::vector< double > convert(const RefDiagSCMatrix &A)
Converts RefDiagSCMatrix to std::vector<double>
RefSymmSCMatrix to_lower_triangle(const RefSCMatrix &B)
Returns the lower triangle of the matrix B (which should be symmetric)
RefSCMatrix spinadapt(const RefSCMatrix &A, const Ref< OrbitalSpace > &bra, const Ref< OrbitalSpace > &ket)
Takes the 4-index quantity <ij|A|kl> and returns, depending on the value of the PureSpinCase2 spin,...
Definition utils.impl.h:38
void symmetrize12(RefSCMatrix &Asymm, const RefSCMatrix &A, const Ref< OrbitalSpace > &bra1, const Ref< OrbitalSpace > &bra2, const Ref< OrbitalSpace > &ket1, const Ref< OrbitalSpace > &ket2)
Generalization of the above.
Definition utils.impl.h:329
void antisymmetrize(RefSCMatrix &Aanti, const RefSCMatrix &A, const Ref< OrbitalSpace > &bra, const Ref< OrbitalSpace > &ket, bool accumulate=false)
Antisymmetrizes 4-index quantity <ij|A|kl> -> <ij|A|kl> - <ij|A|lk> and saves to Aanti.
void print_f77_mat(const std::string &comment, const double *A, unsigned int nrow, unsigned int ncol, bool transpose=false)
print out the Fortran-style matrix
void symmetrize(const Ref< GPetiteList2 > &plist2, const Ref< Integral > &integral, const RefSymmSCMatrix &skel, const RefSymmSCMatrix &sym)
Uses plist2 to convert the "skeleton" matrix into the full matrix. Only applicable when the two basis...