ergo
LR Namespace Reference

Classes

class  VarVectorProxyOp
 template based proxy object that uses bool-valued policies to perform the assignments. More...
class  VarVector
 Vector of variables parametrising the solution to the linear response equations. More...
class  E2Evaluator
 E2Evaluator interface provides a way to perform a linear transformation of supplied transition density matrix. More...
class  VarVectorCollection
 a collection of vectors, usually handled at once. More...
class  OneElOperator
 Abstract interface to a one electron operator. More...
class  SmallMatrix
 a class implementing dynamic resized two dimensional arrays. More...
class  LRSolver
 Linear Response iterative solver using a variant of the Davidson method. More...
class  SetOfEqSolver
 Iterative Set Of Linear Equations solver, extending the generic LRSolver. More...
class  EigenSolver
 Iterative Eigenvalue solver, extending the generic LRSolver. More...

Functions

ergo_real dot (int len, const ergo_real *a, const ergo_real *b)
 returns dot_product(a, b)
ergo_real operator* (const VarVector &a, const VarVector &b)
ergo_real operator* (const VarVector &a, const VarVectorProxyOp< false, false > &b)
ergo_real operator* (const VarVector &a, const VarVectorProxyOp< true, false > &b)
ergo_real operator* (const VarVector &a, const VarVectorProxyOp< false, true > &b)
VarVectorProxyOp< false, false > operator* (ergo_real s, const VarVector &v)
template<bool MultByS, bool SwapXY>
VarVectorProxyOp< MultByS, SwapXY > operator* (ergo_real s, const VarVectorProxyOp< MultByS, SwapXY > &v)
VarVectoroperator+= (VarVector &a, const VarVectorProxyOp< false, false > &proxy)
VarVectoroperator+= (VarVector &a, const VarVectorProxyOp< true, false > &proxy)
VarVectoroperator+= (VarVector &a, const VarVectorProxyOp< false, true > &proxy)
VarVectoroperator+= (VarVector &a, const VarVectorProxyOp< true, true > &proxy)
const VarVectorProxyOp< false,
true > 
swapXY (const VarVector &arg)
 returns a proxy object corresponding to a swapped vector.
const VarVectorProxyOp< true,
false > 
sTimes (const VarVector &arg)
 returns a proxy object corresponding to a vector multiplied by S[2], i.e.
template<bool SwapXY>
VarVectorProxyOp< true, SwapXY > sTimes (const VarVectorProxyOp< false, SwapXY > &arg)
static void precondition (VarVector &v, const VarVector &e2diag, ergo_real shift)
 pre-condition a vector given an approximation of the E[2] operator diagonal and a shift of the S[2] operator.
static void commuteWithDMO (int nbast, int nocc, ergo_real *mat)
 mat := [mat, D_MO]
static void gemm (int n, const char *at, const ergo_real *a, const char *bt, const ergo_real *b, ergo_real alpha, ergo_real beta, ergo_real *c)
static void commute (int nbast, const ergo_real *a, const ergo_real *b, ergo_real f, ergo_real *res)
 res := f*res + [a, b]

Function Documentation

static void LR::commute ( int  nbast,
const ergo_real a,
const ergo_real b,
ergo_real  f,
ergo_real res 
)
static

res := f*res + [a, b]

References gemm().

Referenced by LR::LRSolver::lintrans().

static void LR::commuteWithDMO ( int  nbast,
int  nocc,
ergo_real mat 
)
static
static void LR::gemm ( int  n,
const char *  at,
const ergo_real a,
const char *  bt,
const ergo_real b,
ergo_real  alpha,
ergo_real  beta,
ergo_real c 
)
inlinestatic
ergo_real LR::operator* ( const VarVector &  a,
const VarVector &  b 
)
inline
ergo_real LR::operator* ( const VarVector &  a,
const VarVectorProxyOp< false, false > &  b 
)
inline
ergo_real LR::operator* ( const VarVector &  a,
const VarVectorProxyOp< true, false > &  b 
)
inline
ergo_real LR::operator* ( const VarVector &  a,
const VarVectorProxyOp< false, true > &  b 
)
inline
VarVectorProxyOp<false, false> LR::operator* ( ergo_real  s,
const VarVector &  v 
)
inline
template<bool MultByS, bool SwapXY>
VarVectorProxyOp<MultByS, SwapXY> LR::operator* ( ergo_real  s,
const VarVectorProxyOp< MultByS, SwapXY > &  v 
)
inline
VarVector& LR::operator+= ( VarVector &  a,
const VarVectorProxyOp< false, false > &  proxy 
)
inline
VarVector& LR::operator+= ( VarVector &  a,
const VarVectorProxyOp< true, false > &  proxy 
)
inline
VarVector& LR::operator+= ( VarVector &  a,
const VarVectorProxyOp< false, true > &  proxy 
)
inline
VarVector& LR::operator+= ( VarVector &  a,
const VarVectorProxyOp< true, true > &  proxy 
)
inline
static void LR::precondition ( VarVector &  v,
const VarVector &  e2diag,
ergo_real  shift 
)
static

pre-condition a vector given an approximation of the E[2] operator diagonal and a shift of the S[2] operator.

References LR::VarVector::nvar, LR::VarVector::onDisk, LR::VarVector::x(), and LR::VarVector::y().

Referenced by LR::LRSolver::addToSpace().

const VarVectorProxyOp<true,false> LR::sTimes ( const VarVector &  arg)

returns a proxy object corresponding to a vector multiplied by S[2], i.e.

v -> S[2]*v.

Referenced by LR::LRSolver::addToSpace(), and LR::LRSolver::getAvMinusFreqSv().

template<bool SwapXY>
VarVectorProxyOp<true, SwapXY> LR::sTimes ( const VarVectorProxyOp< false, SwapXY > &  arg)
const VarVectorProxyOp<false,true> LR::swapXY ( const VarVector &  arg)

returns a proxy object corresponding to a swapped vector.

Referenced by LR::LRSolver::addToSpace(), and LR::LRSolver::getAvMinusFreqSv().