ergo
LR::VarVector Class Reference

Vector of variables parametrising the solution to the linear response equations. More...

#include <slr.h>

Public Member Functions

 VarVector (const VarVector &a)
 
 VarVector ()
 
 VarVector (int nbast, int nocc, const ergo_real *full_mat)
 Creates a vector from a full matrix. More...
 
 ~VarVector ()
 
ergo_realx () const
 return the X part of the vector. More...
 
ergo_realy () const
 returns the Y part. More...
 
void symorth (void)
 Uses symmetric orthogonalization to orthonormalize itself (x y) with the swapped vector (y x). More...
 
void setSize (int n)
 
int size () const
 
void print (const char *comment=NULL)
 
void setFromFull (int nbast, int nocc, const ergo_real *full_mat)
 
void setFull (int nbast, int nocc, ergo_real *full_mat) const
 
const ergo_realoperator[] (int i) const
 
ergo_realoperator[] (int i)
 
VarVectoroperator= (ergo_real scalar)
 
VarVectoroperator= (const VarVector &b)
 
VarVectoroperator= (const VarVectorProxyOp< false, false > &proxy)
 
VarVectoroperator= (const VarVectorProxyOp< false, true > &proxy)
 
void load (const char *tmpdir)
 Load the object to memory. More...
 
void save (const char *tmpdir)
 Save the object. More...
 
void release (const char *tmpdir)
 Releases the memory, saving if necessary. More...
 

Public Attributes

char * fName
 Present in secondary storage (i.e. More...
 
int nvar
 nvar := nocc*nvirt. More...
 
unsigned onDisk:1
 valid representation on disk More...
 
unsigned inMemory:1
 valid representation in memory More...
 

Private Attributes

ergo_realv
 vector coefficients More...
 

Friends

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)
 

Detailed Description

Vector of variables parametrising the solution to the linear response equations.

It provides some handy operations for compact notation.

Constructor & Destructor Documentation

LR::VarVector::VarVector ( const VarVector a)
inline

References v.

LR::VarVector::VarVector ( )
inline
LR::VarVector::VarVector ( int  nbast,
int  nocc,
const ergo_real full_mat 
)
inline

Creates a vector from a full matrix.

LR::VarVector::~VarVector ( )
inline

Member Function Documentation

void LR::VarVector::load ( const char *  tmpdir)

Load the object to memory.

References do_output(), fName, inMemory, LOG_AREA_LR, LOG_CAT_INFO, nvar, and v.

VarVector& LR::VarVector::operator= ( ergo_real  scalar)
inline
VarVector& LR::VarVector::operator= ( const VarVector b)
inline

References nvar, and v.

VarVector& LR::VarVector::operator= ( const VarVectorProxyOp< false, false > &  proxy)
inline
VarVector& LR::VarVector::operator= ( const VarVectorProxyOp< false, true > &  proxy)
inline
const ergo_real& LR::VarVector::operator[] ( int  i) const
inline
ergo_real& LR::VarVector::operator[] ( int  i)
inline
void LR::VarVector::print ( const char *  comment = NULL)
inline
void LR::VarVector::release ( const char *  tmpdir)

Releases the memory, saving if necessary.

References inMemory, nvar, onDisk, save(), LR::VarVectorCollection::tmpdir, and v.

Referenced by LR::VarVectorCollection::operator[]().

void LR::VarVector::save ( const char *  tmpdir)

Save the object.

Probably does not need be done explicitly.

References do_output(), fName, LOG_AREA_LR, LOG_CAT_INFO, nvar, onDisk, and v.

Referenced by release().

void LR::VarVector::setFromFull ( int  nbast,
int  nocc,
const ergo_real full_mat 
)
void LR::VarVector::setFull ( int  nbast,
int  nocc,
ergo_real full_mat 
) const
void LR::VarVector::setSize ( int  n)
inline

< sets the size. Reallocates if needed.

Referenced by LR::LRSolver::buildVector(), LR::LRSolver::computeExactE2Diag(), and LR::SetOfEqSolver::getInitialGuess().

int LR::VarVector::size ( ) const
inline
void LR::VarVector::symorth ( void  )

Uses symmetric orthogonalization to orthonormalize itself (x y) with the swapped vector (y x).

It is achieved by performing a following transformation: av = [ x y; y x]; s = av'av [v, e] = eig(s); e=diag(e)' a = av v*diag(e.^-0.5)*v'.

It may happen that X=Y (ovl=0) - one such case is running Hartree approximation. In that case we set Y=0.

References do_output(), LR::dot(), LOG_AREA_LR, and LOG_CAT_INFO.

ergo_real* LR::VarVector::x ( ) const
inline

return the X part of the vector.

Referenced by LR::precondition(), and LR::LRSolver::projectOnSubspace().

ergo_real* LR::VarVector::y ( ) const
inline

returns the Y part.

Referenced by LR::precondition(), and LR::LRSolver::projectOnSubspace().

Friends And Related Function Documentation

ergo_real operator* ( const VarVector a,
const VarVector b 
)
friend
ergo_real operator* ( const VarVector a,
const VarVectorProxyOp< false, false > &  b 
)
friend
ergo_real operator* ( const VarVector a,
const VarVectorProxyOp< true, false > &  b 
)
friend

Member Data Documentation

char* LR::VarVector::fName

Present in secondary storage (i.e.

disk) under given file name.

Referenced by load(), LR::VarVectorCollection::release(), and save().

unsigned LR::VarVector::onDisk

valid representation on disk

Referenced by LR::precondition(), release(), and save().

ergo_real* LR::VarVector::v
private

vector coefficients

Referenced by load(), LR::operator*(), operator=(), release(), save(), and VarVector().


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