mpqc::lcao::cc::detail Namespace Reference

Classes

struct  R1SquaredNormReductionOp
 
struct  R2SquaredNormReductionOp
 

Functions

void print_ccsd (int iter, double dE, double error, double E1, double time_total)
 
void print_ccsd_direct (int iter, double dE, double error, double E1, double time_u, double time_total)
 
void print_CCSDT (int iter, double dE, double error, double E1, double time)
 
void print_CCSDT_direct (int iter, double dE, double error, double E1, double time1, double time2)
 
template<typename... Ts, class Array >
auto direct_u2_u11 (const CCSDT< Ts... > &cc, const Array &t2, const Array &t1)
 
void print_local (TiledArray::World &world, const std::shared_ptr< TiledArray::Pmap > &pmap)
 
template<typename Tile , typename Policy >
TA::DistArray< Tile, Policy > jacobi_update_t3_abcijk (const TA::DistArray< Tile, Policy > &r3_abcijk, const EigenVector< typename Tile::numeric_type > &ens_occ, const EigenVector< typename Tile::numeric_type > &ens_uocc)
 
template<typename Tile , typename Policy >
TA::DistArray< Tile, Policy > jacobi_update_t2_abij (const TA::DistArray< Tile, Policy > &r2_abij, const EigenVector< typename Tile::numeric_type > &ens_occ, const EigenVector< typename Tile::numeric_type > &ens_uocc)
 
template<typename Tile , typename Policy >
TA::DistArray< Tile, Policy > jacobi_update_t1_ai (const TA::DistArray< Tile, Policy > &r1_ai, const EigenVector< typename Tile::numeric_type > &ens_occ, const EigenVector< typename Tile::numeric_type > &ens_uocc)
 
template<typename Tile , typename Policy >
TA::DistArray< Tile, Policy > pno_jacobi_update_t2 (const TA::DistArray< Tile, Policy > &r2_abij, const EigenVector< typename Tile::numeric_type > &eps_occ_act, const std::vector< EigenVector< typename Tile::numeric_type >> &eps_pno, const std::vector< RowMatrix< typename Tile::numeric_type >> &pnos, typename Tile::numeric_type shift=0.0)
 
template<typename Tile , typename Policy >
TA::DistArray< Tile, Policy > pno_jacobi_update_t1 (const TA::DistArray< Tile, Policy > &r1_ai, const EigenVector< typename Tile::numeric_type > &eps_occ_act, const std::vector< EigenVector< typename Tile::numeric_type >> &eps_osv, const std::vector< RowMatrix< typename Tile::numeric_type >> &osvs, typename Tile::numeric_type shift=0.0)
 
template<typename Tile , typename Policy >
TA::DistArray< Tile, Policy > pno_transform_abij (const TA::DistArray< Tile, Policy > &abij, const std::vector< RowMatrix< typename Tile::numeric_type >> &pnos)
 
template<typename Tile , typename Policy >
TA::DistArray< Tile, Policy > osv_transform_ai (const TA::DistArray< Tile, Policy > &ai, const std::vector< RowMatrix< typename Tile::numeric_type >> &osvs)
 
template<typename Tile , typename Policy >
TA::DistArray< Tile, Policy > t2_project_pno (const TA::DistArray< Tile, Policy > &t2, std::vector< RowMatrix< typename Tile::numeric_type >> &pnos)
 
template<typename Tile , typename Policy >
TA::DistArray< Tile, Policy > reblock_t2 (const TA::DistArray< Tile, Policy > &t2, const TA::DistArray< Tile, Policy > &i_block, const TA::DistArray< Tile, Policy > &a_block)
 
template<typename Tile , typename Policy >
TA::DistArray< Tile, Policy > unblock_t2 (const TA::DistArray< Tile, Policy > &t2, const TA::DistArray< Tile, Policy > &i_block, const TA::DistArray< Tile, Policy > &a_block)
 
template<typename Tile , typename Policy >
TA::DistArray< Tile, Policy > reblock_t1 (const TA::DistArray< Tile, Policy > &t1, const TA::DistArray< Tile, Policy > &i_block, const TA::DistArray< Tile, Policy > &a_block)
 
template<typename Tile , typename Policy >
TA::DistArray< Tile, Policy > unblock_t1 (const TA::DistArray< Tile, Policy > &t1, const TA::DistArray< Tile, Policy > &i_block, const TA::DistArray< Tile, Policy > &a_block)
 
template<typename Tile , typename Policy >
double compute_mp2 (const TA::DistArray< Tile, Policy > &K, const TA::DistArray< Tile, Policy > &t2)
 
template<typename Tile , typename Policy >
TA::DistArray< Tile, Policy > form_T_from_K (const TA::DistArray< Tile, Policy > &K, const RowMatrix< typename Tile::numeric_type > &F_occ_act, const RowMatrix< typename Tile::numeric_type > &F_uocc, std::vector< RowMatrix< typename Tile::numeric_type >> &pnos, int nocc_act)
 
template<typename Tile , typename Policy >
TA::DistArray< Tile, Policy > construct_density (const TA::DistArray< Tile, Policy > &t2)
 
template<typename Tile , typename Policy >
void construct_pno (const TA::DistArray< Tile, Policy > &D, const RowMatrix< typename Tile::numeric_type > &F_uocc, double tpno, double tosv, std::vector< RowMatrix< typename Tile::numeric_type >> &pnos, std::vector< int > &npnos, std::vector< int > &old_npnos, std::vector< EigenVector< typename Tile::numeric_type >> &F_pno_diag, std::vector< RowMatrix< typename Tile::numeric_type >> &osvs, std::vector< int > &nosvs, std::vector< int > &old_nosvs, std::vector< EigenVector< typename Tile::numeric_type >> &F_osv_diag, std::vector< EigenVector< typename Tile::numeric_type >> &pno_eigvals, bool pno_canonical=false, PNORankUpdateMethod update_pno_rank=PNORankUpdateMethod::standard)
 

Function Documentation

◆ compute_mp2()

template<typename Tile , typename Policy >
double mpqc::lcao::cc::detail::compute_mp2 ( const TA::DistArray< Tile, Policy > &  K,
const TA::DistArray< Tile, Policy > &  t2 
)
Parameters
[in]KT2-like array wth dimension "a,b,i,j"
[in]t2T2-like array with dimension "a,b,i,j"
Returns

◆ construct_density()

template<typename Tile , typename Policy >
TA::DistArray<Tile, Policy> mpqc::lcao::cc::detail::construct_density ( const TA::DistArray< Tile, Policy > &  t2)

Step (2): Transform T to D

◆ construct_pno()

template<typename Tile , typename Policy >
void mpqc::lcao::cc::detail::construct_pno ( const TA::DistArray< Tile, Policy > &  D,
const RowMatrix< typename Tile::numeric_type > &  F_uocc,
double  tpno,
double  tosv,
std::vector< RowMatrix< typename Tile::numeric_type >> &  pnos,
std::vector< int > &  npnos,
std::vector< int > &  old_npnos,
std::vector< EigenVector< typename Tile::numeric_type >> &  F_pno_diag,
std::vector< RowMatrix< typename Tile::numeric_type >> &  osvs,
std::vector< int > &  nosvs,
std::vector< int > &  old_nosvs,
std::vector< EigenVector< typename Tile::numeric_type >> &  F_osv_diag,
std::vector< EigenVector< typename Tile::numeric_type >> &  pno_eigvals,
bool  pno_canonical = false,
PNORankUpdateMethod  update_pno_rank = PNORankUpdateMethod::standard 
)
Template Parameters
Tile
Policy
Parameters
Dpair density
F_uoccunocc-unocc portion of the Fock matrix
tpnoPNO truncation threshold
tosvOSV truncation threshold
pnosvector of PNO matrices
npnosvector of nPNO values
F_pno_diagvector of Vectors, where each Vector contains the diagonal elements of the PNO-transformed Fock matrix
osvsvector of OSV matrices
nosvsvector of nOSV values
F_osv_diagvector of Vectors, where each Vector contains the diagonal elements of the OSV-transformed Fock matrix
pno_canonicalwhether or not to canonicalize the PNOs

◆ direct_u2_u11()

template<typename... Ts, class Array >
auto mpqc::lcao::cc::detail::direct_u2_u11 ( const CCSDT< Ts... > &  cc,
const Array t2,
const Array t1 
)

AO integral-direct computation of (ab|cd) ints contributions to the doubles residual computes $ U^{ij}_{\rho\sigma} \equiv \left( t^{ij}_{\mu \nu} + t^{i}_{\mu} t^{j}_{\nu} \right) (\mu \rho| \nu \sigma) $

Parameters
t2doubles amplitudes in MO basis
t1singles amplitudes in MO basis
Returns
U tensor

◆ form_T_from_K()

template<typename Tile , typename Policy >
TA::DistArray<Tile, Policy> mpqc::lcao::cc::detail::form_T_from_K ( const TA::DistArray< Tile, Policy > &  K,
const RowMatrix< typename Tile::numeric_type > &  F_occ_act,
const RowMatrix< typename Tile::numeric_type > &  F_uocc,
std::vector< RowMatrix< typename Tile::numeric_type >> &  pnos,
int  nocc_act 
)
Template Parameters
Tile
Policy
Parameters
[in]KT2-like array with dimension "a,b,i,j"
[in]F_occ_actactive occ-active occ block of the Fock matrix
[in]F_uoccunocc-unocc block of the Fock matrix
[in]pnosvector of PNO matrices
[in]nocc_actinteger specifying the number of active occupied orbitals
Returns

◆ jacobi_update_t1_ai()

template<typename Tile , typename Policy >
TA::DistArray<Tile, Policy> mpqc::lcao::cc::detail::jacobi_update_t1_ai ( const TA::DistArray< Tile, Policy > &  r1_ai,
const EigenVector< typename Tile::numeric_type > &  ens_occ,
const EigenVector< typename Tile::numeric_type > &  ens_uocc 
)
Template Parameters
Tile
Policy
Parameters
[in]r1_aiT1-like array with dimension "a,i"
[in]ens_occ1-dimensional array consisting of the occ-occ diagonal elements of the Fock matrix or the occupied orbital epsilon values
[in]ens_uocc1-dimensional array consisting of the unocc-unocc diagonal elements of the Fock matrix or the unoccupied orbital epsilong values
Returns

◆ jacobi_update_t2_abij()

template<typename Tile , typename Policy >
TA::DistArray<Tile, Policy> mpqc::lcao::cc::detail::jacobi_update_t2_abij ( const TA::DistArray< Tile, Policy > &  r2_abij,
const EigenVector< typename Tile::numeric_type > &  ens_occ,
const EigenVector< typename Tile::numeric_type > &  ens_uocc 
)

◆ jacobi_update_t3_abcijk()

template<typename Tile , typename Policy >
TA::DistArray<Tile, Policy> mpqc::lcao::cc::detail::jacobi_update_t3_abcijk ( const TA::DistArray< Tile, Policy > &  r3_abcijk,
const EigenVector< typename Tile::numeric_type > &  ens_occ,
const EigenVector< typename Tile::numeric_type > &  ens_uocc 
)

◆ osv_transform_ai()

template<typename Tile , typename Policy >
TA::DistArray<Tile, Policy> mpqc::lcao::cc::detail::osv_transform_ai ( const TA::DistArray< Tile, Policy > &  ai,
const std::vector< RowMatrix< typename Tile::numeric_type >> &  osvs 
)
Parameters
[in]aiT1 like Array with dimension "a,i", it should blocked by V in a,b and 1 in i,j
[in]osvsvector of OSVs, only local i will be initialized
Returns

◆ pno_jacobi_update_t1()

template<typename Tile , typename Policy >
TA::DistArray<Tile, Policy> mpqc::lcao::cc::detail::pno_jacobi_update_t1 ( const TA::DistArray< Tile, Policy > &  r1_ai,
const EigenVector< typename Tile::numeric_type > &  eps_occ_act,
const std::vector< EigenVector< typename Tile::numeric_type >> &  eps_osv,
const std::vector< RowMatrix< typename Tile::numeric_type >> &  osvs,
typename Tile::numeric_type  shift = 0.0 
)
Parameters
[in]r1_aiT1 like Array with dimension "a,i", it should blocked by V in a,b and 1 in i,j
[in]eps_occ_actthe diagonal of active occupied Fock matrix in canonical basis
[in]eps_osvvector of the diagonal of Fock matrix in OSV basis, only local i,j will be initialized
[in]osvsvector of OSVs, only local i will be initialized
[in]shiftvalue of the shift in the denominator (i.e. the demonimator is F[i]-F[a]+shift
Returns

◆ pno_jacobi_update_t2()

template<typename Tile , typename Policy >
TA::DistArray<Tile, Policy> mpqc::lcao::cc::detail::pno_jacobi_update_t2 ( const TA::DistArray< Tile, Policy > &  r2_abij,
const EigenVector< typename Tile::numeric_type > &  eps_occ_act,
const std::vector< EigenVector< typename Tile::numeric_type >> &  eps_pno,
const std::vector< RowMatrix< typename Tile::numeric_type >> &  pnos,
typename Tile::numeric_type  shift = 0.0 
)
Parameters
[in]r2_abijT2 like Array with dimension "a,b,i,j", it should blocked by V in a,b and 1 in i,j
[in]eps_occ_actthe diagonal of active occupied Fock matrix in canonical basis
[in]eps_pnovector of diagonal Fock matrix in PNO basis, only local i,j will be initialized
[in]pnosvector of PNOs, only local i,j will be initialized
[in]shiftvalue of the shift in the denominator (i.e. the demonimator is F[i]+F[j]-F[a]-F[b]+shift
Returns

◆ pno_transform_abij()

template<typename Tile , typename Policy >
TA::DistArray<Tile, Policy> mpqc::lcao::cc::detail::pno_transform_abij ( const TA::DistArray< Tile, Policy > &  abij,
const std::vector< RowMatrix< typename Tile::numeric_type >> &  pnos 
)
Parameters
[in]abijT2 like Array with dimension "a,b,i,j", it should blocked by V in a,b and 1 in i,j
[in]pnosvector of PNOs, only local i,j will be initialized
Returns

◆ print_ccsd()

void mpqc::lcao::cc::detail::print_ccsd ( int  iter,
double  dE,
double  error,
double  E1,
double  time_total 
)
inline

◆ print_ccsd_direct()

void mpqc::lcao::cc::detail::print_ccsd_direct ( int  iter,
double  dE,
double  error,
double  E1,
double  time_u,
double  time_total 
)
inline

◆ print_CCSDT()

void mpqc::lcao::cc::detail::print_CCSDT ( int  iter,
double  dE,
double  error,
double  E1,
double  time 
)
inline

◆ print_CCSDT_direct()

void mpqc::lcao::cc::detail::print_CCSDT_direct ( int  iter,
double  dE,
double  error,
double  E1,
double  time1,
double  time2 
)
inline

◆ print_local()

void mpqc::lcao::cc::detail::print_local ( TiledArray::World &  world,
const std::shared_ptr< TiledArray::Pmap > &  pmap 
)
inline

◆ reblock_t1()

template<typename Tile , typename Policy >
TA::DistArray<Tile, Policy> mpqc::lcao::cc::detail::reblock_t1 ( const TA::DistArray< Tile, Policy > &  t1,
const TA::DistArray< Tile, Policy > &  i_block,
const TA::DistArray< Tile, Policy > &  a_block 
)
Parameters
[in]t1T1-like array with dimension "a,i"
[in]i_blockarray with dimension "i,j" that reblocks occupied dimension i to j
[in]a_blockarray with dimension "a,b" that reblocks unoccupied dimension a to b
Returns

◆ reblock_t2()

template<typename Tile , typename Policy >
TA::DistArray<Tile, Policy> mpqc::lcao::cc::detail::reblock_t2 ( const TA::DistArray< Tile, Policy > &  t2,
const TA::DistArray< Tile, Policy > &  i_block,
const TA::DistArray< Tile, Policy > &  a_block 
)
Parameters
[in]t2T2 like array with dimension "a,b,i,j"
[in]i_blockarray with dimension "i,j" that reblocks occupied dimension i to j
[in]a_blockarray with dimension "a,b" that reblocks unoccupied dimension a to b
Returns

◆ t2_project_pno()

template<typename Tile , typename Policy >
TA::DistArray<Tile, Policy> mpqc::lcao::cc::detail::t2_project_pno ( const TA::DistArray< Tile, Policy > &  t2,
std::vector< RowMatrix< typename Tile::numeric_type >> &  pnos 
)
Template Parameters
Tile
Policy
Parameters
[in]t2T2-like array with dimensions "a,b,i,j"
[in]pnosVector of PNO matrices
Returns

◆ unblock_t1()

template<typename Tile , typename Policy >
TA::DistArray<Tile, Policy> mpqc::lcao::cc::detail::unblock_t1 ( const TA::DistArray< Tile, Policy > &  t1,
const TA::DistArray< Tile, Policy > &  i_block,
const TA::DistArray< Tile, Policy > &  a_block 
)
Parameters
[in]t1T1-like array with dimension "a,i"
[in]i_blockarray with dimension "i,j" that reblocks occupied dimension j to i
[in]a_blockarray with dimension "a,b" that reblocks unoccupied dimension b to a
Returns

◆ unblock_t2()

template<typename Tile , typename Policy >
TA::DistArray<Tile, Policy> mpqc::lcao::cc::detail::unblock_t2 ( const TA::DistArray< Tile, Policy > &  t2,
const TA::DistArray< Tile, Policy > &  i_block,
const TA::DistArray< Tile, Policy > &  a_block 
)
Parameters
[in]t2T2-like array with dimension "a,b,i,j"
[in]i_blockarray with dimension "i,j" that reblocks occupied dimension j to i
[in]a_blockarray with dimension "a,b" that reblocks unoccupied dimension b to a
Returns