ergo
LR Namespace Reference

Classes

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

Functions

ergo_real dot (int len, const ergo_real *a, const ergo_real *b)
 returns dot_product(a, b) More...
 
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. More...
 
const VarVectorProxyOp< true, false > sTimes (const VarVector &arg)
 returns a proxy object corresponding to a vector multiplied by S[2], i.e. More...
 
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. More...
 
static void commuteWithDMO (int nbast, int nocc, ergo_real *mat)
 mat := [mat, D_MO] More...
 
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] More...
 

Function Documentation

◆ commute()

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().

◆ commuteWithDMO()

static void LR::commuteWithDMO ( int  nbast,
int  nocc,
ergo_real mat 
)
static

◆ dot()

◆ gemm()

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

◆ operator*() [1/6]

ergo_real LR::operator* ( const VarVector a,
const VarVector b 
)
inline

◆ operator*() [2/6]

◆ operator*() [3/6]

◆ operator*() [4/6]

◆ operator*() [5/6]

VarVectorProxyOp<false, false> LR::operator* ( ergo_real  s,
const VarVector v 
)
inline

◆ operator*() [6/6]

template<bool MultByS, bool SwapXY>
VarVectorProxyOp<MultByS, SwapXY> LR::operator* ( ergo_real  s,
const VarVectorProxyOp< MultByS, SwapXY > &  v 
)
inline

◆ operator+=() [1/4]

◆ operator+=() [2/4]

◆ operator+=() [3/4]

◆ operator+=() [4/4]

◆ precondition()

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, template_blas_fabs(), LR::VarVector::x(), and LR::VarVector::y().

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

◆ sTimes() [1/2]

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().

◆ sTimes() [2/2]

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

◆ swapXY()

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().