QCRepInterElec Class Reference

#include <QCRepInterElec.hpp>

Inheritance diagram for QCRepInterElec:

Inheritance graph
[legend]
List of all members.

Detailed Description

class QCRepInterElec

classe de generateur des elements d une matrice representant la repulsion inter electronique entre 2 atomes.

remarque : La matrice contenant ces integrales sera toujours dense et asymetrique; ainsi, la classe courante n est pas template

Definition at line 46 of file QCRepInterElec.hpp.

Public Member Functions

QCIntgReaderallocIntgReader (void)
QCIntgWriterallocIntgWriter (void)
template<class TPParam>
void computeDerivatives (const TPParam *QCRestrict parameterA, const TPParam *QCRestrict parameterB, QCRepInterElec &QCRestrict workingIntg, QCDerivationType derivationType, const QCPoint3D &QCRestrict coordsA, const QCPoint3D &QCRestrict coordsB, const QCPoint3D &shift, bool ssACalc, bool ssBCalc, const QCFloat &QCRestrict inv2DeltaQ)
template<class TPParam>
void computeDerivatives (const TPParam *__restrict__ parameterA, const TPParam *__restrict__ parameterB, QCRepInterElec &__restrict__ workingIntg, QCDerivationType derivationType, const QCPoint3D &coordsA, const QCPoint3D &coordsB, const QCPoint3D &shift, bool ssACalc=false, bool ssBCalc=false, const QCFloat &__restrict__ inv2DeltaQ=QC_ZERO)
template<class TPParam>
void computeElems (const TPParam *QCRestrict parameterA, const TPParam *QCRestrict parameterB, const QCPoint3D &QCRestrict coordsA, const QCPoint3D &QCRestrict coordsB, QCFloat rAB, bool ssACalc, bool ssBCalc, bool compressedFormat, const QCIntgAcquisitionMethod &intgAcquisitionMethod, bool isItfirstCall)
template<class TPParam>
void computeElems (const TPParam *__restrict__ parameterA, const TPParam *__restrict__ parameterB, const QCPoint3D &__restrict__ coordsA, const QCPoint3D &__restrict__ coordsB, QCFloat rAB, bool ssACalc, bool ssBCalc, bool compressedFormat=false, const QCIntgAcquisitionMethod &intgAcquisitionMethod=QC_DIRECT_COMPUTATION, bool isItfirstCall=false)
void expandOverDim16 (const int &nbAOofA, const int &nbAOofB)
QCIntgReadergetIntgReader (void) const
const string & getIntgTmpFile (void) const
QCIntgWritergetIntgWriter (void) const
 QCRepInterElec (const int &dim)
void setIntgTmpFile (const string &extFile)
virtual ~QCRepInterElec (void)

Private Attributes

QCIntgReaderintgReader
string intgTmpFile
QCIntgWriterintgWriter


Constructor & Destructor Documentation

QCRepInterElec::QCRepInterElec const int &  dim  ) 
 

Constructor that enables the memory allocation of the nested matrix.

Definition at line 53 of file QCRepInterElec.cpp.

QCRepInterElec::~QCRepInterElec void   )  [virtual]
 

Definition at line 65 of file QCRepInterElec.cpp.

References intgReader, intgTmpFile, and intgWriter.


Member Function Documentation

QCIntgReader * QCRepInterElec::allocIntgReader void   ) 
 

Definition at line 95 of file QCRepInterElec.cpp.

References intgReader.

Referenced by QCModelMatrices::prepareIterations().

QCIntgWriter * QCRepInterElec::allocIntgWriter void   ) 
 

Allocators

Definition at line 82 of file QCRepInterElec.cpp.

References intgWriter.

Referenced by QCModelMatrices::buildMatrices().

template<class TPParam>
void QCRepInterElec::computeDerivatives const TPParam *QCRestrict  parameterA,
const TPParam *QCRestrict  parameterB,
QCRepInterElec &QCRestrict  workingIntg,
QCDerivationType  derivationType,
const QCPoint3D &QCRestrict  coordsA,
const QCPoint3D &QCRestrict  coordsB,
const QCPoint3D shift,
bool  ssACalc,
bool  ssBCalc,
const QCFloat &QCRestrict  inv2DeltaQ
 

Calcul des derivees des integrales de repulsion inter elec.

On travaille en format compresse pour faire la difference sur le format compresse, ce qui represente moins de calcul avant d'expanser la matrice pour la rendre utilisable par les boucles de calcul.

Si on n'envoie pas deltaQ, c'est qu il ne faut pas diviser. On retarde la division pour etre plus efficace en vitesse de calcul.

Definition at line 373 of file QCRepInterElec.cpp.

References QCMatrix::calculateNumericalDerivatives(), computeElems(), COORDX, COORDY, COORDZ, expandOverDim16(), QCMatElemGtr< QCMatrix >::matrix, QC_DIRECT_COMPUTATION, QC_NUMERICAL_DERIVATION, and QC_ZERO.

Here is the call graph for this function:

template<class TPParam>
void QCRepInterElec::computeDerivatives const TPParam *__restrict__  parameterA,
const TPParam *__restrict__  parameterB,
QCRepInterElec &__restrict__  workingIntg,
QCDerivationType  derivationType,
const QCPoint3D coordsA,
const QCPoint3D coordsB,
const QCPoint3D shift,
bool  ssACalc = false,
bool  ssBCalc = false,
const QCFloat &__restrict__  inv2DeltaQ = QC_ZERO
 

Calculation of the numerical derivatives of the inter-electronic repulsion integrals.

template<class TPParam>
void QCRepInterElec::computeElems const TPParam *QCRestrict  parameterA,
const TPParam *QCRestrict  parameterB,
const QCPoint3D &QCRestrict  coordsA,
const QCPoint3D &QCRestrict  coordsB,
QCFloat  rAB,
bool  ssACalc,
bool  ssBCalc,
bool  compressedFormat,
const QCIntgAcquisitionMethod intgAcquisitionMethod,
bool  isItfirstCall
 

calcul des integrales de repulsion inter elec qui sont stockees dans la matrice de CQCRepInterElec.

Attention, pour le calcul de Hamilton, on n a besoin que du vecteur ss de B. => B apparait comme s il avait une seule OA pour repul.

Et pour le calcul de l energie de repulsion core-core, on n a besoin que de l element <ss|ss> de la matrice de rep inter-elec. On evite de calculer tous les autres elements pour rien. Pas besoin de creer de ssACalcInt. Le param compressedFormatInt sert a controler le format de stockage de la matrice (10 ou 16 en longueur). Ce probleme ne se pose pas quand on demande un seul element.

Calcul des integrales de repulsion inter-electroniques.

Attention, A est le premier param de la fion, donc c est aussi celui dont l indice varie le plus vite.

Definition at line 243 of file QCRepInterElec.cpp.

References COORDX, COORDY, COORDZ, QCMatrix::getElems(), intgReader, intgWriter, QCIntgReader::loadIntegrals(), QCMatElemGtr< QCMatrix >::matrix, QCMatrix::pack(), QC_DIRECT_COMPUTATION, QC_INDIRECT_STORAGE, QCFortran, QCIntgWriter::storeIntegrals(), and QCMatrix::unpack().

Here is the call graph for this function:

template<class TPParam>
void QCRepInterElec::computeElems const TPParam *__restrict__  parameterA,
const TPParam *__restrict__  parameterB,
const QCPoint3D &__restrict__  coordsA,
const QCPoint3D &__restrict__  coordsB,
QCFloat  rAB,
bool  ssACalc,
bool  ssBCalc,
bool  compressedFormat = false,
const QCIntgAcquisitionMethod intgAcquisitionMethod = QC_DIRECT_COMPUTATION,
bool  isItfirstCall = false
 

Calculation of the inter-electronic repulsion integrals stored in the nested matrix of the QCRepInterElec generator.

Referenced by computeDerivatives().

void QCRepInterElec::expandOverDim16 const int &  nbAOofA,
const int &  nbAOofB
 

Expand the inter-electornic repulsion integrals matrix in a QCMatrix whose size equal to 16. On output of the fortran code, we have a compressed format of size 10. This compressed format exploit symetry properties. On the other hand, the expanded format allow longer stride accesses in the calculations.

Definition at line 109 of file QCRepInterElec.cpp.

References QCMatrix::getDim(), QCMatElemGtr< QCMatrix >::matrix, px_px_10, px_px_16, px_py_10, px_py_16, px_pz_10, px_pz_16, px_s_16, py_px_16, py_py_10, py_py_16, py_pz_10, py_pz_16, py_s_16, pz_px_16, pz_py_16, pz_pz_10, pz_pz_16, pz_s_16, s_px_16, s_py_16, and s_pz_10.

Referenced by computeDerivatives().

Here is the call graph for this function:

QCIntgReader* QCRepInterElec::getIntgReader void   )  const [inline]
 

Definition at line 81 of file QCRepInterElec.hpp.

References intgReader.

Referenced by QCMDSystem< TPSolver >::completeFockMatricesAndElecEnergy(), and QCModelMatrices::prepareIterations().

const string& QCRepInterElec::getIntgTmpFile void   )  const [inline]
 

Accessors

Definition at line 79 of file QCRepInterElec.hpp.

References intgTmpFile.

Referenced by QCModelMatrices::prepareIterations().

QCIntgWriter* QCRepInterElec::getIntgWriter void   )  const [inline]
 

Definition at line 80 of file QCRepInterElec.hpp.

References intgWriter.

Referenced by QCModelMatrices::buildMatrices(), and QCModelMatrices::prepareIterations().

void QCRepInterElec::setIntgTmpFile const string &  extFile  )  [inline]
 

Mutators

Definition at line 88 of file QCRepInterElec.hpp.

References intgTmpFile.

Referenced by QCModelMatrices::buildMatrices().


Member Data Documentation

QCIntgReader* QCRepInterElec::intgReader [private]
 

The pointer to the reader. It reads the integrals stored on the hard drive by integralsWriterPtr.

Definition at line 178 of file QCRepInterElec.hpp.

Referenced by allocIntgReader(), computeElems(), getIntgReader(), and ~QCRepInterElec().

string QCRepInterElec::intgTmpFile [private]
 

The name of the repulsion integrals file on the hard drive.

Definition at line 183 of file QCRepInterElec.hpp.

Referenced by getIntgTmpFile(), setIntgTmpFile(), and ~QCRepInterElec().

QCIntgWriter* QCRepInterElec::intgWriter [private]
 

The pointer to the writer that is in charge to write the integrals value on the hard drive in the case of Indirect_Storage tag is choosen for the QCPP INTEGRALS ACQUISITION METHOD field in the input file holding general infromations.

Definition at line 172 of file QCRepInterElec.hpp.

Referenced by allocIntgWriter(), computeElems(), getIntgWriter(), and ~QCRepInterElec().


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