mpqc::lcao::pno Namespace Reference

Namespaces

 detail
 
 tasks
 

Classes

class  MatrixGetter
 
class  MP2Solver
 The PNO MP2 energy solver. More...
 
class  Pair
 
class  PNOBuilder
 
struct  PNODataTile
 

Typedefs

using SparseMap = RowMatrix< int >
 
template<int N>
using IdxHash = mpqc::utility::hash
 
template<int N, typename T >
using IdxMap = std::unordered_map< std::array< int, N >, T, IdxHash< N > >
 
template<typename Tile , typename Policy >
using Array = TA::DistArray< Tile, Policy >
 
template<typename Tile , typename Policy >
using ArrayVec = TA::DistArrayVector< Tile, Policy >
 

Functions

template<typename DirectArray , typename Tile , typename Policy >
TA::DistArray< Tile, Policy > EToZir (DirectArray const &E, TA::DistArray< Tile, Policy > const &Ci, SparseMap const &IX, SparseMap const &IR)
 Screen the construction of (X | i μ) using the maps IX and IR. More...
 
template<typename Tile , typename Policy >
void ZirToZia (TA::DistArray< Tile, Policy > &Zir, TA::DistArray< Tile, Policy > const &P, SparseMap const &IX, SparseMap const &IA)
 Screen the construction of (X | i a) using the sparse maps IX and IA. More...
 
template<typename Tile , typename Policy >
TA::DistArray< Tile, Policy > Zia (gaussian::AOFactory< Tile, Policy > &aof, TA::DistArray< Tile, Policy > const &Ci, TA::DistArray< Tile, Policy > const &P, SparseMap const &IX, SparseMap const &IA, SparseMap const &IJ, bool fastE, bool fastZir, bool fastZia, double tcutRS, double tcutScreen, bool diagonalIJ=false)
 Function that take LMOs, the PAO projector and a AOFactory and will apply various screening of the three center (X | i a) build. More...
 
template<typename Tile , typename Policy >
RowMatrixXd orbital_pair_domain_G (TA::DistArray< Tile, Policy > const &G, SparseMap const &ij_ab, int i, int j, int pair_ord)
 
template<typename Tile , typename Policy >
RowMatrixXd orbital_pair_domain_matrix (TA::DistArray< Tile, Policy > const &M, SparseMap const &ij_mn, int pair_ord_m, int pair_ord_n)
 
template<typename Tile , typename Policy >
RowMatrixXd orbital_domain_three_center (TA::DistArray< Tile, Policy > const &E, SparseMap const &om, SparseMap const &on, int orb)
 
template<typename Tile , typename Policy >
RowMatrixXd orbital_domain_matrix (TA::DistArray< Tile, Policy > const &M, SparseMap const &om, SparseMap const &on, std::vector< int > const &orbs)
 
template<typename Tile , typename Policy >
RowMatrixXd orbital_domain_row (TA::DistArray< Tile, Policy > const &M, SparseMap const &on, int orb)
 
void d_gemm (char Atrans, char Btrans, RowMatrixXd const &A, RowMatrixXd const &B, RowMatrixXd &C, double alpha, double beta)
 weird name to avoid dgemm macro defined by MKL in MKL_DIRECT_CALL mode More...
 
void d_gemm (char Atrans, char Btrans, RowMatrixXd const &A, double const *B, long ncols, RowMatrixXd &C, double alpha, double beta)
 weird name to avoid dgemm macro defined by MKL in MKL_DIRECT_CALL mode More...
 
std::pair< RowMatrixXd, VectorDSymmEVD (RowMatrixXd &A)
 
RowMatrixXd llt_solve (RowMatrixXd &A, RowMatrixXd const &B)
 
RowMatrixXd AT_B_C (RowMatrixXd const &A, RowMatrixXd const &B, RowMatrixXd const &C)
 
RowMatrixXd AT_x_B (RowMatrixXd const &A, RowMatrixXd const &B)
 
RowMatrixXd A_x_BT (RowMatrixXd const &A, RowMatrixXd const &B)
 
RowMatrixXd A_x_B (RowMatrixXd const &A, RowMatrixXd const &B)
 
RowMatrixXd A_x_B (RowMatrixXd const &A, TA::Tensor< double > const &B)
 
std::pair< RowMatrixXd, Eigen::VectorXd > semi_canonicalize (RowMatrixXd &F)
 
std::pair< RowMatrixXd, Eigen::VectorXd > general_semi_canonicalize (RowMatrixXd const &F, RowMatrixXd &S, double sc_thresh)
 
template<typename Tile , typename Policy >
std::pair< SparseMap, SparseMapiX_and_ipao (TA::DistArray< Tile, Policy > const &Clmo, TA::DistArray< Tile, Policy > const &Sao, double iX_thresh, double imu_thresh)
 

Variables

mpqc::detail::ForceLink< CCSD_PNO< TA::TensorD, TA::SparsePolicy > > fl1
 

Typedef Documentation

◆ Array

template<typename Tile , typename Policy >
using mpqc::lcao::pno::Array = typedef TA::DistArray<Tile, Policy>

◆ ArrayVec

template<typename Tile , typename Policy >
using mpqc::lcao::pno::ArrayVec = typedef TA::DistArrayVector<Tile, Policy>

◆ IdxHash

template<int N>
using mpqc::lcao::pno::IdxHash = typedef mpqc::utility::hash

◆ IdxMap

template<int N, typename T >
using mpqc::lcao::pno::IdxMap = typedef std::unordered_map<std::array<int, N>, T, IdxHash<N> >

◆ SparseMap

using mpqc::lcao::pno::SparseMap = typedef RowMatrix<int>

Function Documentation

◆ A_x_B() [1/2]

RowMatrixXd mpqc::lcao::pno::A_x_B ( RowMatrixXd const &  A,
RowMatrixXd const &  B 
)
inline

◆ A_x_B() [2/2]

RowMatrixXd mpqc::lcao::pno::A_x_B ( RowMatrixXd const &  A,
TA::Tensor< double > const &  B 
)
inline

◆ A_x_BT()

RowMatrixXd mpqc::lcao::pno::A_x_BT ( RowMatrixXd const &  A,
RowMatrixXd const &  B 
)
inline

◆ AT_B_C()

RowMatrixXd mpqc::lcao::pno::AT_B_C ( RowMatrixXd const &  A,
RowMatrixXd const &  B,
RowMatrixXd const &  C 
)
inline

◆ AT_x_B()

RowMatrixXd mpqc::lcao::pno::AT_x_B ( RowMatrixXd const &  A,
RowMatrixXd const &  B 
)
inline

◆ d_gemm() [1/2]

void mpqc::lcao::pno::d_gemm ( char  Atrans,
char  Btrans,
RowMatrixXd const &  A,
double const *  B,
long  ncols,
RowMatrixXd C,
double  alpha,
double  beta 
)

weird name to avoid dgemm macro defined by MKL in MKL_DIRECT_CALL mode

◆ d_gemm() [2/2]

void mpqc::lcao::pno::d_gemm ( char  Atrans,
char  Btrans,
RowMatrixXd const &  A,
RowMatrixXd const &  B,
RowMatrixXd C,
double  alpha,
double  beta 
)

weird name to avoid dgemm macro defined by MKL in MKL_DIRECT_CALL mode

◆ EToZir()

template<typename DirectArray , typename Tile , typename Policy >
TA::DistArray<Tile, Policy> mpqc::lcao::pno::EToZir ( DirectArray const &  E,
TA::DistArray< Tile, Policy > const &  Ci,
SparseMap const &  IX,
SparseMap const &  IR 
)

Screen the construction of (X | i μ) using the maps IX and IR.

◆ general_semi_canonicalize()

std::pair<RowMatrixXd, Eigen::VectorXd> mpqc::lcao::pno::general_semi_canonicalize ( RowMatrixXd const &  F,
RowMatrixXd S,
double  sc_thresh 
)
inline

◆ iX_and_ipao()

template<typename Tile , typename Policy >
std::pair<SparseMap, SparseMap> mpqc::lcao::pno::iX_and_ipao ( TA::DistArray< Tile, Policy > const &  Clmo,
TA::DistArray< Tile, Policy > const &  Sao,
double  iX_thresh,
double  imu_thresh 
)

◆ llt_solve()

RowMatrixXd mpqc::lcao::pno::llt_solve ( RowMatrixXd A,
RowMatrixXd const &  B 
)

Solves AX = B, where A is symm posdef matrix

Parameters
[in,out]AIn: matrix whose lower triangle specifies the symmetric input matrix; Out: A is in a valid but not defined state
[in]Bthe right-hand side matrix
Returns
X the solution matrix

◆ orbital_domain_matrix()

template<typename Tile , typename Policy >
RowMatrixXd mpqc::lcao::pno::orbital_domain_matrix ( TA::DistArray< Tile, Policy > const &  M,
SparseMap const &  om,
SparseMap const &  on,
std::vector< int > const &  orbs 
)

◆ orbital_domain_row()

template<typename Tile , typename Policy >
RowMatrixXd mpqc::lcao::pno::orbital_domain_row ( TA::DistArray< Tile, Policy > const &  M,
SparseMap const &  on,
int  orb 
)

◆ orbital_domain_three_center()

template<typename Tile , typename Policy >
RowMatrixXd mpqc::lcao::pno::orbital_domain_three_center ( TA::DistArray< Tile, Policy > const &  E,
SparseMap const &  om,
SparseMap const &  on,
int  orb 
)

◆ orbital_pair_domain_G()

template<typename Tile , typename Policy >
RowMatrixXd mpqc::lcao::pno::orbital_pair_domain_G ( TA::DistArray< Tile, Policy > const &  G,
SparseMap const &  ij_ab,
int  i,
int  j,
int  pair_ord 
)

◆ orbital_pair_domain_matrix()

template<typename Tile , typename Policy >
RowMatrixXd mpqc::lcao::pno::orbital_pair_domain_matrix ( TA::DistArray< Tile, Policy > const &  M,
SparseMap const &  ij_mn,
int  pair_ord_m,
int  pair_ord_n 
)

◆ semi_canonicalize()

std::pair<RowMatrixXd, Eigen::VectorXd> mpqc::lcao::pno::semi_canonicalize ( RowMatrixXd F)
inline

◆ SymmEVD()

std::pair< RowMatrixXd, VectorD > mpqc::lcao::pno::SymmEVD ( RowMatrixXd A)

Computes the eigenvectors and eigenvalues of a symmetric matrix

Parameters
[in,out]AIn: matrix whose lower triangle specifies the symmetric input matrix; Out: A is in a valid but not defined state
Returns
eigenvectors and eigenvalues of the symmetric matric specified by the lower triangle of A
Note
If NDEBUG is defined, this uses dsyevr, otherwise uses dsyev to avoid floating-point exception issues

◆ Zia()

template<typename Tile , typename Policy >
TA::DistArray<Tile, Policy> mpqc::lcao::pno::Zia ( gaussian::AOFactory< Tile, Policy > &  aof,
TA::DistArray< Tile, Policy > const &  Ci,
TA::DistArray< Tile, Policy > const &  P,
SparseMap const &  IX,
SparseMap const &  IA,
SparseMap const &  IJ,
bool  fastE,
bool  fastZir,
bool  fastZia,
double  tcutRS,
double  tcutScreen,
bool  diagonalIJ = false 
)

Function that take LMOs, the PAO projector and a AOFactory and will apply various screening of the three center (X | i a) build.

Parameters
aofis an AO factory
Cithe localized occupied orbitals (already truncated by tC)
Pis the PAO projector
IXis a sparse map connecting (I -> X) the occupied orbital blocks with the their important auxiliary basis set blocks
IAis the map of orbital specific PAO domains
IJis the important pair map.
[in]fastEif true, utilize the maps to reduce the number of computed (X | μ ν) integrals
[in]fastZirif true, a priori reduce the number of target (X | i μ) = (X | μ ν) * Ci(ν,i)
[in]fastZiagoverns if we attempt to set the shape on the (X | i a) = (X | i μ) * P(μ,a)
[in]tcutRSbuilds a map RS connecting (μ -> ν)
[in]tcutScreenis the screening threshold for the Schwarz Screener in the AO integrals, it is only used if FastE is true
[in]diagonalIJif this is true then we don't form unions for IX and IA, this is useful because in the initial OSV construction we don't actually need unions
Note
when none of the fast options are set this will compute just like the AO factory would. This is nice for timing and debugging purposes

◆ ZirToZia()

template<typename Tile , typename Policy >
void mpqc::lcao::pno::ZirToZia ( TA::DistArray< Tile, Policy > &  Zir,
TA::DistArray< Tile, Policy > const &  P,
SparseMap const &  IX,
SparseMap const &  IA 
)

Screen the construction of (X | i a) using the sparse maps IX and IA.

Variable Documentation

◆ fl1

mpqc::detail::ForceLink<CCSD_PNO<TA::TensorD, TA::SparsePolicy> > mpqc::lcao::pno::fl1