mpqc::lcao::cc::PNOSolver< T, DT > Class Template Reference
Collaboration diagram for mpqc::lcao::cc::PNOSolver< T, DT >:

Documentation

template<typename T, typename DT>
class mpqc::lcao::cc::PNOSolver< T, DT >

PNOSolver updates the CC T amplitudes using standard Jacobi+DIIS in PNO space

Warning
This class assumes that the 1- and 2-body amplitudes/residuals given to Solver::update() are laid out as "a,i" and "a,b,i,j", respectively

Public Types

using Tile = typename T::value_type
 
using Policy = typename T::policy_type
 
using TVec = TA::DistArrayVector< Tile, Policy >
 
using Matrix = RowMatrix< typename Tile::numeric_type >
 
using Vector = EigenVector< typename Tile::numeric_type >
 
using WorldObject_ = madness::WorldObject< PNOSolver< T, DT > >
 
- Public Types inherited from mpqc::cc::DIISSolver< T >
using Tile = typename T::value_type
 
using Policy = typename T::policy_type
 
using TVec = TA::DistArrayVector< Tile, Policy >
 

Public Member Functions

 PNOSolver (const KeyVal &kv, LCAOFactory< Tile, Policy > &factory)
 The KeyVal constructor. More...
 
virtual ~PNOSolver ()=default
 
double tpno () const
 
double tosv () const
 
const auto & pno (int i, int j) const
 
const auto & osv (int i) const
 
const auto & npnos (int i, int j) const
 
virtual double error (const std::vector< std::reference_wrapper< const T >> &r_pack) override
 Overrides Solver<T,T>::error() More...
 
- Public Member Functions inherited from mpqc::cc::DIISSolver< T >
 DIISSolver (const KeyVal &kv)
 The KeyVal constructor. More...
 
virtual ~DIISSolver ()=default
 
void update (std::vector< std::reference_wrapper< T >> &t_pack, const std::vector< std::reference_wrapper< const T >> &r_pack, double dE=0) override
 
bool is_converged (double target_precision, double error, double dE) const override
 
void reset ()
 Resets the DIIS solver; used when switching to a new solver subspace. More...
 

Additional Inherited Members

- Static Public Member Functions inherited from mpqc::cc::DIISSolver< T >
static double precision_margin_energy ()
 
- Protected Member Functions inherited from mpqc::cc::DIISSolver< T >
TA::DIIS< TVec > & diis ()
 

Member Typedef Documentation

◆ Matrix

template<typename T , typename DT >
using mpqc::lcao::cc::PNOSolver< T, DT >::Matrix = RowMatrix<typename Tile::numeric_type>

◆ Policy

template<typename T , typename DT >
using mpqc::lcao::cc::PNOSolver< T, DT >::Policy = typename T::policy_type

◆ Tile

template<typename T , typename DT >
using mpqc::lcao::cc::PNOSolver< T, DT >::Tile = typename T::value_type

◆ TVec

template<typename T , typename DT >
using mpqc::lcao::cc::PNOSolver< T, DT >::TVec = TA::DistArrayVector<Tile, Policy>

◆ Vector

template<typename T , typename DT >
using mpqc::lcao::cc::PNOSolver< T, DT >::Vector = EigenVector<typename Tile::numeric_type>

◆ WorldObject_

template<typename T , typename DT >
using mpqc::lcao::cc::PNOSolver< T, DT >::WorldObject_ = madness::WorldObject<PNOSolver<T, DT> >

Constructor & Destructor Documentation

◆ PNOSolver()

template<typename T , typename DT >
mpqc::lcao::cc::PNOSolver< T, DT >::PNOSolver ( const KeyVal kv,
LCAOFactory< Tile, Policy > &  factory 
)
inline

The KeyVal constructor.

Parameters
kvthe KeyVal object; it will be queried for all keywords of mpqc::cc::DIISSolver , as well as the following additional keywords:
Keyword Type Default Description
tpno double 1e-7 The PNO construction threshold. This non-negative integer specifies the screening threshold for the eigenvalues of the pair density. Setting this to zero will cause the full (untruncated) set of PNOs to be used.
tosv double 1e-9 The OSV construction threshold. This non-negative integer specifies the screening threshold for the eigenvalues of the pair density of the diagonal pairs. Setting this to zero will cause the full (untruncated) set of OSVs to be used.
pno_canonical bool false Whether or not to canonicalize the PNOs and OSVs
pno_guess string scmp1 How to construct the (initial) PNOs; valid values are "scmp1" (semicanonical MP1 amplitudes; exact if using canonical orbitals) and "mp1" (exact MP1 amplitudes)
update_pno bool false Whether or not to recompute the PNOs
min_micro int 3 The minimum number of micro iterations to perform per macro iteration
print_npnos bool false Whether or not to print out nPNOs/pair every time PNOs are updated
micro_ratio double 3.0 How much more tightly to converge w/in a macro iteration

◆ ~PNOSolver()

template<typename T , typename DT >
virtual mpqc::lcao::cc::PNOSolver< T, DT >::~PNOSolver ( )
virtualdefault

Member Function Documentation

◆ error()

template<typename T , typename DT >
virtual double mpqc::lcao::cc::PNOSolver< T, DT >::error ( const std::vector< std::reference_wrapper< const T >> &  r_pack)
inlineoverridevirtual

Overrides Solver<T,T>::error()

◆ npnos()

template<typename T , typename DT >
const auto& mpqc::lcao::cc::PNOSolver< T, DT >::npnos ( int  i,
int  j 
) const
inline

◆ osv()

template<typename T , typename DT >
const auto& mpqc::lcao::cc::PNOSolver< T, DT >::osv ( int  i) const
inline

◆ pno()

template<typename T , typename DT >
const auto& mpqc::lcao::cc::PNOSolver< T, DT >::pno ( int  i,
int  j 
) const
inline

◆ tosv()

template<typename T , typename DT >
double mpqc::lcao::cc::PNOSolver< T, DT >::tosv ( ) const
inline
Returns
OSV truncation threshold

◆ tpno()

template<typename T , typename DT >
double mpqc::lcao::cc::PNOSolver< T, DT >::tpno ( ) const
inline
Returns
PNO truncation threshold

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