QCSymMatrix Class Reference

#include <QCSymMatrix.hpp>

Inheritance diagram for QCSymMatrix:

Inheritance graph
[legend]
List of all members.

Detailed Description

class QCSymMatrix

Definition at line 35 of file QCSymMatrix.hpp.

Public Member Functions

void changeComputedSystem (void)
void completeSubTriangle (const QCSymMatrix &__restrict__ subMatrix, int row, int nbRows)
void copy (const QCMatrix &otherMatrix) const
void copyIn (const QCMatrix &otherMatrix) const
void copyInAndFill (const QCMatrix &otherMatrix) const
bool diagonalize (QCMemory &__restrict__ memoryInst, QCDiagoAlgorithm &diagoAlgorithm, const QCFloat &toleranceFactor, QCFloat *__restrict__ eigenVal, int *__restrict__ degener, QCFloat *__restrict__ eigenVect, const int &nbIte)
void extractSubTriangle (QCSymMatrix &__restrict__ subMatrix, int row, int nbRows) const
void extractSubTriangleInSquare (QCMatrix &__restrict__ subSquare, int row, int nbRows) const
void insertSubTriangle (const QCSymMatrix &__restrict__ subMatrix, int row, int nbRows)
QCFloat *__restrict__ operator[] (int i) const
void power (QCMemory &__restrict__ memoryInst, const QCSymMatrix &matrixA, const int &dimToMultiplyOfA, const QCFloat &alpha=QC_ONE)
void power (QCMemory &__restrict__ memoryInst, const QCSymMatrix &matrixA, const QCFloat &alpha=QC_ONE)
void print (char *matrixName, const int &dim1) const
void print (const std::string &matrixName, std::ofstream &out)
void print (char *matrixName) const
void printFullInFile (const char *preFileName)
void printInFile (const char *preFileName, bool date=true)
 QCSymMatrix (const int &dimMatrix)
 QCSymMatrix (void)
void setDim (const int &dimMatrix)
bool setDimAndAllocate (const int &dimMatrix)
bool setDimAndElems (const int &dimMatrix, QCFloat *extElems)
bool takeTmpMem (QCMemory &__restrict__ memoryInst)
QCFloat traceProduct (const QCSymMatrix &otherMatrix) const
void unsetElems (void)
template<class TPManager>
void writeLikeBlocks (TPManager &QCRestrict managerInst) const
template<class TPManager>
void writeLikeBlocks (TPManager &__restrict__ managerInst) const
virtual ~QCSymMatrix (void)

Private Member Functions

void updateDiagonalizeLocalVar (QCDiagoAlgorithm &diagoAlgorithm, const int &dimOfThePartToDiago, int &nb, int &workingDim, int &workingArray1Size, int &workingArray2Size)

Private Attributes

bool computedSystemHasChanged


Constructor & Destructor Documentation

QCSymMatrix::QCSymMatrix void   ) 
 

Definition at line 31 of file QCSymMatrix.cpp.

QCSymMatrix::QCSymMatrix const int &  dimMatrix  ) 
 

Constructor with one parameter, it takes charge of the sizing and of the memory allocation because it recieves the dim.

Definition at line 42 of file QCSymMatrix.cpp.

References setDimAndAllocate().

Here is the call graph for this function:

QCSymMatrix::~QCSymMatrix void   )  [virtual]
 

Definition at line 60 of file QCSymMatrix.cpp.


Member Function Documentation

void QCSymMatrix::changeComputedSystem void   )  [inline]
 

Set computedSystemHasChanged to true.

Definition at line 205 of file QCSymMatrix.hpp.

References computedSystemHasChanged.

void QCSymMatrix::completeSubTriangle const QCSymMatrix &__restrict__  subMatrix,
int  row,
int  nbRows
[inline]
 

Complete a 1/2 diagonal block in this QCSymMatrix.

Definition at line 454 of file QCSymMatrix.hpp.

References QCMatrix::vectorPtr.

void QCSymMatrix::copy const QCMatrix otherMatrix  )  const [inline]
 

The reciprocal : copy of a CQCSymMatrix in a CQCMatrix. This is useful to interface with the blas function that don't use symetric matrix storage format.

Definition at line 296 of file QCSymMatrix.hpp.

References QCMatrix::dim, QCMatrix::elems, QCMatrix::getDim(), QCMatrix::getElems(), QCMatrix::getVectorPtr(), and QCMatrix::vectorPtr.

Referenced by QCMDSystem< TPSolver >::completeDensityMatrices(), QCSCFAlgo::fixPoint(), and QCSCFAlgo::optimalDamping().

Here is the call graph for this function:

void QCSymMatrix::copyIn const QCMatrix otherMatrix  )  const [inline]
 

Be careful, the 2 matrices must be of the same size otherwise, it aborts. Copy of a QCSymMatrix in a QCMatrix. I can't locate that method in QCMatrix otherwise, problem of mutual inclusion between QCMatrix.h and QCSymMatrix.hpp. To solve it, necessity to create a file dedicated to inline methods. Too loud solution for the development team actually.

Definition at line 265 of file QCSymMatrix.hpp.

References QCMatrix::dim, QCMatrix::elems, QCMatrix::getDim(), QCMatrix::getElems(), QCMatrix::getVectorPtr(), and QCMatrix::vectorPtr.

Referenced by copyInAndFill().

Here is the call graph for this function:

void QCSymMatrix::copyInAndFill const QCMatrix otherMatrix  )  const [inline]
 

Copy of a CQCSymMatrix in a CQCMatrix and fill the dense QCMatrix.

Definition at line 328 of file QCSymMatrix.hpp.

References copyIn(), QCMatrix::dim, and QCMatrix::vectorPtr.

Here is the call graph for this function:

bool QCSymMatrix::diagonalize QCMemory &__restrict__  memoryInst,
QCDiagoAlgorithm diagoAlgorithm,
const QCFloat toleranceFactor,
QCFloat *__restrict__  eigenVal,
int *__restrict__  degener,
QCFloat *__restrict__  eigenVect,
const int &  nbIte
 

Method to diagonalise the matrix. This method is const because the matrix is copied in a working array before the diagonalisation.

void QCSymMatrix::extractSubTriangle QCSymMatrix &__restrict__  subMatrix,
int  row,
int  nbRows
const [inline]
 

Extract a 1/2 diagonal block (triangle) of the QCSymMatrix.

Definition at line 349 of file QCSymMatrix.hpp.

References QCMatrix::vectorPtr.

void QCSymMatrix::extractSubTriangleInSquare QCMatrix &__restrict__  subSquare,
int  row,
int  nbRows
const [inline]
 

Extract a 1/2 diagonal block of the QCSymMatrix in a square symetric block.

Definition at line 387 of file QCSymMatrix.hpp.

References QCMatrix::vectorPtr.

void QCSymMatrix::insertSubTriangle const QCSymMatrix &__restrict__  subMatrix,
int  row,
int  nbRows
[inline]
 

Insert a 1/2 diagonal block in this QCSymMatrix.

Definition at line 415 of file QCSymMatrix.hpp.

References QCMatrix::vectorPtr.

QCFloat* __restrict__ QCSymMatrix::operator[] int  i  )  const [inline]
 

The operator []. I do an overload of this operator to obtain the right behavior for the [][].

Reimplemented from QCMatrix.

Definition at line 105 of file QCSymMatrix.hpp.

References QCMatrix::vectorPtr.

void QCSymMatrix::power QCMemory &__restrict__  memoryInst,
const QCSymMatrix matrixA,
const int &  dimToMultiplyOfA,
const QCFloat alpha = QC_ONE
 

Multiplication of matrices. performs C <- alpha * A^2

void QCSymMatrix::power QCMemory &__restrict__  memoryInst,
const QCSymMatrix matrixA,
const QCFloat alpha = QC_ONE
[inline]
 

Multiplication of matrices. performs C <- alpha * A^2

Definition at line 478 of file QCSymMatrix.hpp.

References QCMatrix::dim.

void QCSymMatrix::print char *  matrixName,
const int &  dim1
const
 

Definition at line 228 of file QCSymMatrix.cpp.

References QCMatrix::vectorPtr.

void QCSymMatrix::print const std::string &  matrixName,
std::ofstream &  out
 

Write matrix in stream out

Definition at line 216 of file QCSymMatrix.cpp.

References QCMatrix::dim, and QCMatrix::vectorPtr.

void QCSymMatrix::print char *  matrixName  )  const
 

Methods for printing

Reimplemented from QCMatrix.

Definition at line 203 of file QCSymMatrix.cpp.

References QCMatrix::dim, and QCMatrix::vectorPtr.

Referenced by QCTrace::writeDensityMatrix(), QCTrace::writeFockMatrix(), QCTrace::writeHamiltonMatrix(), and QCTrace::writeReducedDensityMatrix().

void QCSymMatrix::printFullInFile const char *  preFileName  ) 
 

Method to print in a file in a dense format; that means the 2 symetric elements of a matrix are printed.

Definition at line 281 of file QCSymMatrix.cpp.

References QCMatrix::dim, QCCommon::getTimeStr(), OUTPUT_SUFFIX(), and QCMatrix::vectorPtr.

Here is the call graph for this function:

void QCSymMatrix::printInFile const char *  preFileName,
bool  date = true
 

Methode d affichage dans un fichier, on passe une string pour caracteriser le nom du fichier

Reimplemented from QCMatrix.

Definition at line 246 of file QCSymMatrix.cpp.

References QCMatrix::dim, QCCommon::getTimeStr(), QCCommon::outdir, OUTPUT_SUFFIX(), PATH_SEPARATOR(), and QCMatrix::vectorPtr.

Referenced by QCMDSystem< TPSolver >::completeDensityMatrices(), QCMDSystem< TPSolver >::completeFockMatricesAndElecEnergy(), QCMDSystem< TPSolver >::completeHamiltonMatrices(), and QCOverlapGtr< TPMatrix >::computeDerivatives().

Here is the call graph for this function:

void QCSymMatrix::setDim const int &  dimMatrix  ) 
 

Assign dim and nbElems.

Reimplemented from QCMatrix.

Definition at line 69 of file QCSymMatrix.cpp.

References QCMatrix::dim, and QCMatrix::nbElems.

bool QCSymMatrix::setDimAndAllocate const int &  dimMatrix  ) 
 

Method to assign dim and to reserve the space memory.

Reimplemented from QCMatrix.

Definition at line 84 of file QCSymMatrix.cpp.

References QCMatrix::dim, QCMatrix::elems, QCMatrix::initClean(), QCMatrix::nbElems, and QCMatrix::vectorPtr.

Referenced by QCSubDomain::allocStructures(), and QCSymMatrix().

Here is the call graph for this function:

bool QCSymMatrix::setDimAndElems const int &  dimMatrix,
QCFloat extElems
 

Method to assign dim and elems.

Definition at line 116 of file QCSymMatrix.cpp.

References QCMatrix::dim, QCMatrix::elems, QCMatrix::nbElems, and QCMatrix::vectorPtr.

bool QCSymMatrix::takeTmpMem QCMemory &__restrict__  memoryInst  ) 
 

Demand of temp memory for the matrix

Reimplemented from QCMatrix.

Referenced by QCModelMatrices::buildMatrices(), QCGlobalSystem< TPSolver >::computeEnergyDerivatives(), and QCSCFAlgo::optimalDamping().

QCFloat QCSymMatrix::traceProduct const QCSymMatrix otherMatrix  )  const
 

Return the trace of the product of *this by otherMatrix

Definition at line 440 of file QCSymMatrix.cpp.

References QCMatrix::dim, QCMatrix::elems, QCMatrix::getDim(), QCMatrix::getElems(), QCMatrix::getNbElems(), QCMatrix::nbElems, QC_TWO, QC_ZERO, QCCBlas, QCMatrix::trace(), and QCMatrix::vectorPtr.

Referenced by QCSubDomain::modifyMatricesAndEnergy().

Here is the call graph for this function:

void QCSymMatrix::unsetElems void   ) 
 

Definition at line 151 of file QCSymMatrix.cpp.

References QCMatrix::dim, QCMatrix::elems, and QCMatrix::nbElems.

void QCSymMatrix::updateDiagonalizeLocalVar QCDiagoAlgorithm diagoAlgorithm,
const int &  dimOfThePartToDiago,
int &  nb,
int &  workingDim,
int &  workingArray1Size,
int &  workingArray2Size
[private]
 

Update of the static local variables of the diagonalise method.

template<class TPManager>
void QCSymMatrix::writeLikeBlocks TPManager &QCRestrict  managerInst  )  const
 

Definition at line 540 of file QCSymMatrix.cpp.

template<class TPManager>
void QCSymMatrix::writeLikeBlocks TPManager &__restrict__  managerInst  )  const
 

Writing of the matrix in a sub-block format. Each sub-block describe an atom-atom interaction.


Member Data Documentation

bool QCSymMatrix::computedSystemHasChanged [private]
 

Flag to mark that the computed system has changed. Then the static local variables of the diagonalise method must be updated.

Definition at line 252 of file QCSymMatrix.hpp.

Referenced by changeComputedSystem().


The documentation for this class was generated from the following files:
Generated on Sat Jan 28 21:07:34 2006 for QC++ by  doxygen 1.4.4