QCSubDomain Class Reference

#include <QCSubDomain.hpp>

Inheritance diagram for QCSubDomain:

Inheritance graph
[legend]
List of all members.

Detailed Description

A sub system of the molecule in the Divide and Conquer method.

The class of the sub-domains. These sub-domains are used in the Divide And Conquer approach. Each sub-domain contains a part of the global atomic system. It appplies a such like SCF algorithm to that local sud-domain and get a local solution that can be merged with other local solutions to obtain the global solution.

Definition at line 80 of file QCSubDomain.hpp.

Public Member Functions

void addOverlpIndirectionInfo (int remoteSbdId, int atomIdx, int remoteAtomIdx, QCSubDomainZone remoteZone)
void allocStructures (QCPartSubDomain &domain)
 Allocate the structures of subdomain and neigboors.
void allocStructures (int nbatoms, int nbao, int nbovrlp, const int *sbdIds, const int *nbshared)
 Allocate the structures of subdomain and neigboors.
template<class TPParam>
void computeBFactor (const TPParam *QCRestrict parameters)
template<class TPParam>
void computeBFactor (const TPParam *__restrict__ parameters)
bool containsNonShell2 (int mapidx) const
void copyAtomOverlpInto (QCFloat *atomsBuff, int *orderBuff, int *ovrlpBuff, QCSubDomainZone *zoneBuff, int *blockBuff=NULL)
void fillAtomInStructure (std::vector< std::vector< QCAtomIn > > &v)
template<class TPParam>
void fillDensityArray (const TPParam *QCRestrict parameters, QCFloat *QCRestrict &densityArray, bool alloc)
template<class TPParam>
void fillDensityArray (const TPParam *__restrict__ parameters, QCFloat *__restrict__ &densityArray, bool alloc=false)
void fillWeight (const QCGeneralData &data)
QCFloat getBFactor (int idx) const
QCFloatgetBFactor (void)
int getDensityBlockCount (void) const
int getDensityBlockIdx (int idx) const
int getGlobalIdx (const int idx) const
 return the global index (in the whole molecule) of local index idx.
const int * getGlobalIdxs (void) const
int getId (void) const
 Return the Id of the sub domain.
int getIndLocalIdx (int mapidx, int cellidx)
int getIndRemoteIdx (int mapidx, int cellidx)
int getMapOffset (int sbdId) const
QCModelMatricesgetMatrices (void)
int getNbAOCoreShell1 (void) const
int getNbAOShell2 (void) const
int getNbAtomCoreShell1 (void) const
int getNbAtomShell2 (void) const
int getNbFilledOM (void) const
int getNbOccupiedOM (void) const
int getNbOverlpSD (void) const
int getNbSharedAtoms (int mapidx) const
QCFloat getOrbitalOccupN (int idx) const
QCFloatgetOrbitalOccupN (void)
int * getOverlapMap (void)
int getOverlapMapSize (void) const
int getRemDomainId (int mapidx) const
int getRemoteIdx (int sbdId, int atomIdx) const
const QCSystemgetRootSystem (void) const
const QCSystemgetSystem (void) const
QCSystemgetSystem (void)
QCSubDomainZonegetZone () const
 return the array of zone type
QCSubDomainZone getZone (int idx) const
 return the zone type of atoms idx
template<class TPParam>
void initWeightedDensity (const TPParam *QCRestrict parameters)
template<class TPParam>
void initWeightedDensity (const TPParam *__restrict__)
void modifyMatricesAndEnergy (const QCFloat &lambdaOpt)
void printHeadOfInternalStructure ()
 QCSubDomain (const QCSystem *root)
 QCSubDomain (void)
void setAtomOverlpFrom (QCFloat *atomsBuff, int *orderBuff, int *ovrlpBuff, QCSubDomainZone *zoneBuff, int *blockBuff=NULL)
void setDensityBlockIdx (int idx, int val)
void setGlobalIdx (int idx, int val)
void setGlobalIndex (const int id)
void setId (int id)
void setNbFilledOccupiedOM (int filled, int occup)
void setOrbitalOccupN (int idx, QCFloat val)
void setRootSystem (const QCSystem *root)
template<class TPParam>
void setSystemNumbers (const TPParam *QCRestrict parameters)
template<class TPParam>
void setSystemNumbers (const TPParam *__restrict__ parameters)
void setZone (int idx, QCSubDomainZone val)
void sortOverlapments (void)
template<class TPParam>
QCFloat traceProductCoreShell1 (const TPParam *QCRestrict parameters, QCSymMatrix &QCRestrict fockMatrix, QCSymMatrix &QCRestrict densityMatrix)
template<class TPParam>
QCFloat traceProductCoreShell1 (const TPParam *__restrict__ parameters, QCSymMatrix &__restrict__ fockMatrix, QCSymMatrix &__restrict__ densityMatrix)
void unsetAtomOverlp (void)
void updateInternalStructure ()
 Update the head of the overlapMap structure.
void writeInFileNew (std::ofstream &out)
 Write the new format of the description of the subdomain.
void writeOverlapStructure ()
void writeSubDomainHeader (std::ofstream &out)
 Write the Partition Description of the current subdomain.
 ~QCSubDomain (void)

Private Member Functions

void sort (int offset)
void swap (int i, int j)

Private Attributes

QCFloatbFactor
int densityBlockCount
int * densityBlockIdx
int domainId
int globalDomainId
int * globalIdx
int nbAOCoreShell1
int nbAOShell2
int nbAtomCoreShell1
int nbAtomShell2
int nbFilledOM
int nbOccupiedOM
QCFloat *__restrict__ orbitalOccupN
int * overlapMap
int overlapMapSize
const QCSystemrootSystem
QCSymMatrix weight
QCSubDomainZonezone

Friends

ostream & operator<< (ostream &out, const QCSubDomain &domain)


Constructor & Destructor Documentation

QCSubDomain::QCSubDomain void   ) 
 

Basic constructor

Definition at line 48 of file QCSubDomain.cpp.

QCSubDomain::QCSubDomain const QCSystem root  ) 
 

Definition at line 34 of file QCSubDomain.cpp.

QCSubDomain::~QCSubDomain void   ) 
 

Definition at line 62 of file QCSubDomain.cpp.

References bFactor, densityBlockIdx, globalIdx, orbitalOccupN, overlapMap, QC_TRACE_END, and zone.


Member Function Documentation

void QCSubDomain::addOverlpIndirectionInfo int  remoteSbdId,
int  atomIdx,
int  remoteAtomIdx,
QCSubDomainZone  remoteZone
 

Definition at line 189 of file QCSubDomain.cpp.

References getMapOffset(), IND_MAP_CELL, IND_MAP_HEAD, LOCAL_IND_IDX, NB_SHARED_ATOM_IDX, overlapMap, REMOTE_IND_IDX, and REMOTE_ZONE_IDX.

Referenced by QCMDSystem< TPSolver >::fillMaps().

Here is the call graph for this function:

void QCSubDomain::allocStructures QCPartSubDomain domain  ) 
 

Allocate the structures of subdomain and neigboors.

Allocate the structures of subdomain and neigboors.

Parameters:
domain 

Definition at line 139 of file QCSubDomain.cpp.

References QCAtoms::allocateAtoms(), QCOrdering::allocateCells(), bFactor, densityBlockIdx, QCPartSubDomain::getLoad(), QCPartSubDomain::getNbAtoms(), QCPartSubDomain::getNbAtomsShell1(), QCPartSubDomain::getNbAtomsShell2(), QCPartSubDomain::getNbNeighbors(), QCPartSubDomain::getNeighborIdx(), globalIdx, IND_MAP_CELL, IND_MAP_HEAD, NB_AO_SHELL1_IDX, NB_AO_SHELL2_IDX, NB_ATOM_SHELL1_IDX, NB_ATOM_SHELL2_IDX, NB_OVRLP_IDX, NB_SHARED_AO_IDX, NB_SHARED_ATOM_IDX, QCAtoms::nbAtoms, orbitalOccupN, overlapMap, overlapMapSize, OVRLP_MAP_DECL, OVRLP_MAP_HEAD, printHeadOfInternalStructure(), QC_TRACE_INIT, SBD_ID_IDX, QCSymMatrix::setDimAndAllocate(), weight, and zone.

Here is the call graph for this function:

void QCSubDomain::allocStructures int  nbatoms,
int  nbao,
int  nbovrlp,
const int *  sbdIds,
const int *  nbshared
 

Allocate the structures of subdomain and neigboors.

Allocate the structures of subdomain and neigboors.

Parameters:
nbatoms the number of atoms in the subdomain.
nbao the number of overlap in the subdomain.
nbovrlp the number of subdomains which intercep this subdomain.
sbdIds an array of the Ids of subdomains which intercep this subdomain.
nbshared an array of the number of atoms shared (nbshared[i]) by the current subdomain and sbdIds[i] subdomains

Definition at line 92 of file QCSubDomain.cpp.

References QCAtoms::allocateAtoms(), QCOrdering::allocateCells(), bFactor, densityBlockIdx, domainId, globalIdx, IND_MAP_CELL, IND_MAP_HEAD, NB_AO_SHELL1_IDX, NB_AO_SHELL2_IDX, NB_ATOM_SHELL1_IDX, NB_ATOM_SHELL2_IDX, NB_OVRLP_IDX, NB_SHARED_AO_IDX, NB_SHARED_ATOM_IDX, orbitalOccupN, overlapMap, overlapMapSize, OVRLP_MAP_DECL, OVRLP_MAP_HEAD, QC_TRACE_INIT, SBD_ID_IDX, QCSymMatrix::setDimAndAllocate(), weight, and zone.

Referenced by QCMDSystem< TPSolver >::allocStructures().

Here is the call graph for this function:

template<class TPParam>
void QCSubDomain::computeBFactor const TPParam *QCRestrict  parameters  ) 
 

Suppression du double [] possible ici au profit d'un ++ sur le tableau elems de localEigenvectCMtx[i][mu].

Attention, c est la matrice transposee que l on a en retour de la fonction fortran, donc |cmu_i|^2 a les indices inverses dans l instruction ci-dessous

Definition at line 431 of file QCSubDomain.cpp.

References bFactor, QCModelMatrices::getEigenVectCt(), QCOrdering::getFirstAOAt(), QCMatElemGtr< TPMatrix >::getMatrix(), QCSystem::getNbAtomicOrbitals(), QCAtoms::getNbAtoms(), QCOrdering::getParamIndexAt(), QC_ZERO, QCRestrict, and weight.

Here is the call graph for this function:

template<class TPParam>
void QCSubDomain::computeBFactor const TPParam *__restrict__  parameters  ) 
 

bool QCSubDomain::containsNonShell2 int  mapidx  )  const [inline]
 

Definition at line 251 of file QCSubDomain.hpp.

References getZone(), IND_MAP_CELL, IND_MAP_HEAD, LOCAL_IND_IDX, NB_SHARED_ATOM_IDX, overlapMap, OVRLP_MAP_HEAD, and QC_SHELL2.

Here is the call graph for this function:

void QCSubDomain::copyAtomOverlpInto QCFloat atomsBuff,
int *  orderBuff,
int *  ovrlpBuff,
QCSubDomainZone zoneBuff,
int *  blockBuff = NULL
[inline]
 

Definition at line 346 of file QCSubDomain.hpp.

References ATOM_OFFSET, QCAtoms::atoms, QCOrdering::cells, densityBlockIdx, QCAtoms::DIMENSION, DOM_ID_IDX, domainId, QCAtoms::getNbAtoms(), getOverlapMapSize(), NB_ATOM_IDX, QCAtoms::nbAtoms, ORDR_CELL_SIZE, overlapMap, and zone.

Here is the call graph for this function:

void QCSubDomain::fillAtomInStructure std::vector< std::vector< QCAtomIn > > &  v  ) 
 

Definition at line 880 of file QCSubDomain.cpp.

References domainId, QCAtoms::getNbAtoms(), globalIdx, QCAtomIn::localNum, QCAtomIn::numDomain, QC_TRACE, QCAtomIn::typeZone, and zone.

Here is the call graph for this function:

template<class TPParam>
void QCSubDomain::fillDensityArray const TPParam *QCRestrict  parameters,
QCFloat *QCRestrict &  densityArray,
bool  alloc
 

Definition at line 329 of file QCSubDomain.cpp.

References densityBlockCount, QCModelMatrices::getDensityP(), QCOrdering::getFirstAOAt(), QCMatElemGtr< TPMatrix >::getMatrix(), QCOrdering::getParamIndexAt(), QCAtoms::nbAtoms, and QCRestrict.

Here is the call graph for this function:

template<class TPParam>
void QCSubDomain::fillDensityArray const TPParam *__restrict__  parameters,
QCFloat *__restrict__ &  densityArray,
bool  alloc = false
 

Referenced by QCMDSystem< TPSolver >::completeFockMatricesAndElecEnergy().

void QCSubDomain::fillWeight const QCGeneralData data  ) 
 

Filling of the matrix of coefficient of partitioning

Definition at line 256 of file QCSubDomain.cpp.

References QCAtoms::getNbAtoms(), getNbOverlpSD(), QCGeneralData::getPartitionType(), IND_MAP_CELL, IND_MAP_HEAD, LOCAL_IND_IDX, NB_SHARED_ATOM_IDX, overlapMap, OVRLP_MAP_HEAD, QC_DIXON_PART, QC_ONE, QC_SHELL1, QC_SHELL2, QC_STANDARD_PART, QC_ZERO, weight, and zone.

Here is the call graph for this function:

QCFloat QCSubDomain::getBFactor int  idx  )  const [inline]
 

Definition at line 134 of file QCSubDomain.hpp.

References bFactor.

QCFloat* QCSubDomain::getBFactor void   )  [inline]
 

Definition at line 133 of file QCSubDomain.hpp.

References bFactor.

Referenced by QCMDSystem< TPSolver >::addLevels(), QCMDSystem< TPSolver >::adjustFermiEnergy(), QCMDSystem< TPSolver >::adjustFermiEnergyDichotomy(), and QCMDSystem< TPSolver >::removeLevels().

int QCSubDomain::getDensityBlockCount void   )  const [inline]
 

Definition at line 127 of file QCSubDomain.hpp.

References densityBlockCount.

int QCSubDomain::getDensityBlockIdx int  idx  )  const [inline]
 

Definition at line 126 of file QCSubDomain.hpp.

References densityBlockIdx.

int QCSubDomain::getGlobalIdx const int  idx  )  const [inline]
 

return the global index (in the whole molecule) of local index idx.

Definition at line 114 of file QCSubDomain.hpp.

References globalIdx.

Referenced by operator<<(), and QCMDSystem< TPSolver >::writeDensityOnFileAscii().

const int* QCSubDomain::getGlobalIdxs void   )  const [inline]
 

Definition at line 132 of file QCSubDomain.hpp.

References globalIdx.

Referenced by QCMDSystem< TPSolver >::writeDensityOnFileAscii(), QCPartitioner< TPSystem >::writeInFileVTK(), QCMDSystem< TPSolver >::writeLocalDensityOnFilesAscii(), and QCMDSystem< TPSolver >::writeOrbitalPartition().

int QCSubDomain::getId void   )  const [inline]
 

Return the Id of the sub domain.

Accessors

Definition at line 107 of file QCSubDomain.hpp.

References domainId.

Referenced by QCMDSystem< TPSolver >::adjustFermiEnergyDichotomy(), QCMDSystem< TPSolver >::completeDensityMatrices(), QCMDSystem< TPSolver >::completeFockMatricesAndElecEnergy(), QCMDSystem< TPSolver >::completeHamiltonMatrices(), and operator<<().

int QCSubDomain::getIndLocalIdx int  mapidx,
int  cellidx
[inline]
 

Definition at line 201 of file QCSubDomain.hpp.

References IND_MAP_CELL, IND_MAP_HEAD, LOCAL_IND_IDX, overlapMap, and OVRLP_MAP_HEAD.

int QCSubDomain::getIndRemoteIdx int  mapidx,
int  cellidx
[inline]
 

Definition at line 209 of file QCSubDomain.hpp.

References IND_MAP_CELL, IND_MAP_HEAD, overlapMap, OVRLP_MAP_HEAD, and REMOTE_IND_IDX.

int QCSubDomain::getMapOffset int  sbdId  )  const [inline]
 

Definition at line 218 of file QCSubDomain.hpp.

References getNbOverlpSD(), overlapMap, OVRLP_MAP_HEAD, and SBD_ID_IDX.

Referenced by addOverlpIndirectionInfo(), and getRemoteIdx().

Here is the call graph for this function:

QCModelMatrices& QCSubDomain::getMatrices void   )  [inline]
 

Definition at line 174 of file QCSubDomain.hpp.

References QCModelMatrices::asBase().

Here is the call graph for this function:

int QCSubDomain::getNbAOCoreShell1 void   )  const [inline]
 

Definition at line 124 of file QCSubDomain.hpp.

References nbAOCoreShell1.

Referenced by operator<<().

int QCSubDomain::getNbAOShell2 void   )  const [inline]
 

Definition at line 125 of file QCSubDomain.hpp.

References nbAOShell2.

Referenced by operator<<().

int QCSubDomain::getNbAtomCoreShell1 void   )  const [inline]
 

Definition at line 122 of file QCSubDomain.hpp.

References nbAtomCoreShell1.

Referenced by operator<<().

int QCSubDomain::getNbAtomShell2 void   )  const [inline]
 

Definition at line 123 of file QCSubDomain.hpp.

References nbAtomShell2.

Referenced by operator<<().

int QCSubDomain::getNbFilledOM void   )  const [inline]
 

Definition at line 135 of file QCSubDomain.hpp.

References nbFilledOM.

Referenced by QCMDSystem< TPSolver >::adjustFermiEnergy(), and QCMDSystem< TPSolver >::adjustFermiEnergyDichotomy().

int QCSubDomain::getNbOccupiedOM void   )  const [inline]
 

Definition at line 136 of file QCSubDomain.hpp.

References nbOccupiedOM.

Referenced by QCMDSystem< TPSolver >::adjustFermiEnergy(), QCMDSystem< TPSolver >::adjustFermiEnergyDichotomy(), and QCMDSystem< TPSolver >::adjustFermiEnergyNew().

int QCSubDomain::getNbOverlpSD void   )  const [inline]
 

return the number of neighbors

Definition at line 111 of file QCSubDomain.hpp.

References NB_OVRLP_IDX, and overlapMap.

Referenced by fillWeight(), getMapOffset(), and sortOverlapments().

int QCSubDomain::getNbSharedAtoms int  mapidx  )  const [inline]
 

Definition at line 186 of file QCSubDomain.hpp.

References NB_SHARED_ATOM_IDX, overlapMap, and OVRLP_MAP_HEAD.

QCFloat QCSubDomain::getOrbitalOccupN int  idx  )  const [inline]
 

Definition at line 138 of file QCSubDomain.hpp.

References orbitalOccupN.

QCFloat* QCSubDomain::getOrbitalOccupN void   )  [inline]
 

Definition at line 137 of file QCSubDomain.hpp.

References orbitalOccupN.

Referenced by QCMDSystem< TPSolver >::adjustFermiEnergy(), QCMDSystem< TPSolver >::adjustFermiEnergyDichotomy(), and QCMDSystem< TPSolver >::adjustFermiEnergyNew().

int* QCSubDomain::getOverlapMap void   )  [inline]
 

Definition at line 140 of file QCSubDomain.hpp.

References overlapMap.

int QCSubDomain::getOverlapMapSize void   )  const [inline]
 

Definition at line 139 of file QCSubDomain.hpp.

References overlapMapSize.

Referenced by copyAtomOverlpInto().

int QCSubDomain::getRemDomainId int  mapidx  )  const [inline]
 

Definition at line 194 of file QCSubDomain.hpp.

References overlapMap, OVRLP_MAP_HEAD, and SBD_ID_IDX.

Referenced by QCMDSystem< TPSolver >::completeDensityMatrices().

int QCSubDomain::getRemoteIdx int  sbdId,
int  atomIdx
const [inline]
 

Return the remote index in subdomain sbdId of atom of index atomIdx.

Definition at line 234 of file QCSubDomain.hpp.

References getMapOffset(), IND_MAP_CELL, IND_MAP_HEAD, LOCAL_IND_IDX, NB_SHARED_ATOM_IDX, overlapMap, and REMOTE_IND_IDX.

Referenced by operator<<().

Here is the call graph for this function:

const QCSystem& QCSubDomain::getRootSystem void   )  const [inline]
 

Definition at line 170 of file QCSubDomain.hpp.

References rootSystem.

const QCSystem& QCSubDomain::getSystem void   )  const [inline]
 

Definition at line 166 of file QCSubDomain.hpp.

References QCSystem::asBase().

Here is the call graph for this function:

QCSystem& QCSubDomain::getSystem void   )  [inline]
 

Definition at line 162 of file QCSubDomain.hpp.

References QCSystem::asBase().

Here is the call graph for this function:

QCSubDomainZone* QCSubDomain::getZone  )  const [inline]
 

return the array of zone type

Definition at line 131 of file QCSubDomain.hpp.

References zone.

Referenced by containsNonShell2(), and traceProductCoreShell1().

QCSubDomainZone QCSubDomain::getZone int  idx  )  const [inline]
 

return the zone type of atoms idx

Reimplemented from QCSystem.

Definition at line 129 of file QCSubDomain.hpp.

References zone.

Referenced by operator<<(), QCMDSystem< TPSolver >::writeDensityOnFileAscii(), QCMDSystem< TPSolver >::writeLocalDensityOnFilesAscii(), QCMDSystem< TPSolver >::writeOrbitalPartition(), and QCPartitioner< TPSystem >::writeSubDomainVTK().

template<class TPParam>
void QCSubDomain::initWeightedDensity const TPParam *QCRestrict  parameters  ) 
 

Multiplication des elements de la matrice densite par les elements correspondants de la matrice de coef de partitionnement Stockage du resultat dans weightedDensityP

Definition at line 369 of file QCSubDomain.cpp.

References QCModelMatrices::densityP, QCModelMatrices::getDensityP(), QCOrdering::getFirstAOAt(), QCMatElemGtr< TPMatrix >::getMatrix(), QCAtoms::getNbAtoms(), QCOrdering::getParamIndexAt(), QCModelMatrices::getWeightedDensityP(), QCRestrict, weight, and QCModelMatrices::weightedDensityP.

Here is the call graph for this function:

template<class TPParam>
void QCSubDomain::initWeightedDensity const TPParam *  __restrict__  ) 
 

Referenced by QCMDSystem< TPSolver >::completeFockMatricesAndElecEnergy().

void QCSubDomain::modifyMatricesAndEnergy const QCFloat lambdaOpt  ) 
 

Definition at line 582 of file QCSubDomain.cpp.

References QCMatrix::axpy(), QCFockGtr< TPMatrix >::copyMatrix(), QCModelMatrices::densityP, QCModelMatrices::densityPTild, QCEnergies::elecEnergyETild, QCEnergies::elecEnergyETild1e, QCModelMatrices::fockF, QCModelMatrices::fockFTild, QCMatElemGtr< TPMatrix >::getMatrix(), QCModelMatrices::hamiltonH, QC_HALF, QC_ONE, QCMatrix::scale(), and QCSymMatrix::traceProduct().

Referenced by QCMDSystem< TPSolver >::applyOptimalDamping().

Here is the call graph for this function:

void QCSubDomain::printHeadOfInternalStructure  ) 
 

Display the glabal information of the internal structure overlapMap

Definition at line 830 of file QCSubDomain.cpp.

References domainId, globalDomainId, NB_AO_SHELL1_IDX, NB_AO_SHELL2_IDX, NB_ATOM_SHELL1_IDX, NB_ATOM_SHELL2_IDX, NB_OVRLP_IDX, NB_SHARED_AO_IDX, NB_SHARED_ATOM_IDX, nbAOCoreShell1, nbAOShell2, nbAtomCoreShell1, nbAtomShell2, overlapMap, OVRLP_MAP_HEAD, QC_TRACE, and SBD_ID_IDX.

Referenced by allocStructures(), setSystemNumbers(), updateInternalStructure(), and writeInFileNew().

void QCSubDomain::setAtomOverlpFrom QCFloat atomsBuff,
int *  orderBuff,
int *  ovrlpBuff,
QCSubDomainZone zoneBuff,
int *  blockBuff = NULL
[inline]
 

Definition at line 376 of file QCSubDomain.hpp.

References ATOM_OFFSET, QCAtoms::atoms, QCOrdering::cells, densityBlockIdx, DOM_ID_IDX, domainId, NB_ATOM_IDX, QCAtoms::nbAtoms, overlapMap, and zone.

void QCSubDomain::setDensityBlockIdx int  idx,
int  val
[inline]
 

Definition at line 149 of file QCSubDomain.hpp.

References densityBlockIdx.

Referenced by setSystemNumbers().

void QCSubDomain::setGlobalIdx int  idx,
int  val
[inline]
 

Definition at line 148 of file QCSubDomain.hpp.

References globalIdx.

Referenced by QCMDSystem< TPSolver >::addAtom().

void QCSubDomain::setGlobalIndex const int  id  )  [inline]
 

Definition at line 151 of file QCSubDomain.hpp.

References globalDomainId.

Referenced by QCMDSystem< TPSolver >::allocStructures().

void QCSubDomain::setId int  id  )  [inline]
 

Definition at line 150 of file QCSubDomain.hpp.

References domainId.

Referenced by QCMDSystem< TPSolver >::allocDomains().

void QCSubDomain::setNbFilledOccupiedOM int  filled,
int  occup
[inline]
 

Definition at line 156 of file QCSubDomain.hpp.

References nbFilledOM, and nbOccupiedOM.

Referenced by QCMDSystem< TPSolver >::addLevels(), QCMDSystem< TPSolver >::adjustFermiEnergyDichotomy(), and QCMDSystem< TPSolver >::removeLevels().

void QCSubDomain::setOrbitalOccupN int  idx,
QCFloat  val
[inline]
 

Definition at line 154 of file QCSubDomain.hpp.

References orbitalOccupN.

Referenced by QCMDSystem< TPSolver >::addLevels(), and QCMDSystem< TPSolver >::removeLevels().

void QCSubDomain::setRootSystem const QCSystem root  )  [inline]
 

Mutators

Definition at line 146 of file QCSubDomain.hpp.

References rootSystem.

Referenced by QCMDSystem< TPSolver >::allocDomains().

template<class TPParam>
void QCSubDomain::setSystemNumbers const TPParam *QCRestrict  parameters  ) 
 

On affecte les startOrb, soit l'indice de depart des OA de l'atome courant dans les matrices du systeme traite.

On est dans un sous domaine

Reimplemented from QCSystem.

Definition at line 215 of file QCSubDomain.cpp.

References densityBlockCount, QCSystem::getNbElectrons(), QCOrdering::getParamIndexAt(), QCSystem::getSpinMultiplicity(), nbAtomCoreShell1, QCSystem::nbAtomicOrbitals, QCAtoms::nbAtoms, nbAtomShell2, QCSystem::nbElectrons, printHeadOfInternalStructure(), QC_TRACE_INIT, rootSystem, setDensityBlockIdx(), QCOrdering::setFirstAOAt(), QCSystem::spinMultiplicity, and QCSystem::systemCharge.

Here is the call graph for this function:

template<class TPParam>
void QCSubDomain::setSystemNumbers const TPParam *__restrict__  parameters  ) 
 

Reimplemented from QCSystem.

void QCSubDomain::setZone int  idx,
QCSubDomainZone  val
[inline]
 

Definition at line 147 of file QCSubDomain.hpp.

References zone.

Referenced by QCMDSystem< TPSolver >::addAtom().

void QCSubDomain::sort int  offset  )  [inline, private]
 

Definition at line 453 of file QCSubDomain.hpp.

References IND_MAP_CELL, IND_MAP_HEAD, NB_SHARED_ATOM_IDX, overlapMap, REMOTE_IND_IDX, and swap().

Referenced by sortOverlapments().

Here is the call graph for this function:

void QCSubDomain::sortOverlapments void   )  [inline]
 

Definition at line 268 of file QCSubDomain.hpp.

References getNbOverlpSD(), overlapMap, OVRLP_MAP_HEAD, and sort().

Here is the call graph for this function:

void QCSubDomain::swap int  i,
int  j
[inline, private]
 

Swap the two atoms of index1 and index2 in the QCAtoms structure.

Reimplemented from QCAtoms.

Definition at line 435 of file QCSubDomain.hpp.

References LOCAL_IND_IDX, overlapMap, REMOTE_IND_IDX, and REMOTE_ZONE_IDX.

Referenced by sort().

template<class TPParam>
QCFloat QCSubDomain::traceProductCoreShell1 const TPParam *QCRestrict  parameters,
QCSymMatrix &QCRestrict  fockMatrix,
QCSymMatrix &QCRestrict  densityMatrix
 

Definition at line 481 of file QCSubDomain.cpp.

References QCOrdering::getFirstAOAt(), QCAtoms::getNbAtoms(), QCOrdering::getParamIndexAt(), getZone(), QC_CORE, QC_HALF, QC_SHELL2, QC_ZERO, QCRestrict, and weight.

Here is the call graph for this function:

template<class TPParam>
QCFloat QCSubDomain::traceProductCoreShell1 const TPParam *__restrict__  parameters,
QCSymMatrix &__restrict__  fockMatrix,
QCSymMatrix &__restrict__  densityMatrix
 

Referenced by QCMDSystem< TPSolver >::applyOptimalDamping().

void QCSubDomain::unsetAtomOverlp void   )  [inline]
 

Definition at line 394 of file QCSubDomain.hpp.

References QCAtoms::atoms, QCOrdering::cells, densityBlockIdx, overlapMap, and zone.

void QCSubDomain::updateInternalStructure  ) 
 

Update the head of the overlapMap structure.

Definition at line 769 of file QCSubDomain.cpp.

References QCAtoms::getNbAtoms(), QCAtoms::getType(), globalDomainId, IND_MAP_CELL, IND_MAP_HEAD, LOCAL_IND_IDX, NB_AO_SHELL1_IDX, NB_AO_SHELL2_IDX, NB_ATOM_SHELL1_IDX, NB_ATOM_SHELL2_IDX, NB_OVRLP_IDX, NB_SHARED_AO_IDX, NB_SHARED_ATOM_IDX, nbAOCoreShell1, nbAOShell2, nbAtomCoreShell1, nbAtomShell2, overlapMap, OVRLP_MAP_HEAD, printHeadOfInternalStructure(), QC_SHELL1, QC_SHELL2, and QC_TRACE_INIT.

Here is the call graph for this function:

void QCSubDomain::writeInFileNew std::ofstream &  out  ) 
 

Write the new format of the description of the subdomain.

Definition at line 690 of file QCSubDomain.cpp.

References domainId, QCAtoms::getNbAtoms(), globalIdx, IND_MAP_CELL, IND_MAP_HEAD, LOCAL_IND_IDX, NB_ATOM_SHELL1_IDX, NB_ATOM_SHELL2_IDX, NB_OVRLP_IDX, NB_SHARED_ATOM_IDX, overlapMap, OVRLP_MAP_DECL, OVRLP_MAP_HEAD, printHeadOfInternalStructure(), QC_CORE, QC_SHELL1, QC_SHELL2, QC_TRACE_OUT, SBD_ID_IDX, and zone.

Here is the call graph for this function:

void QCSubDomain::writeOverlapStructure  )  [inline]
 

Definition at line 177 of file QCSubDomain.hpp.

References overlapMap, and overlapMapSize.

void QCSubDomain::writeSubDomainHeader std::ofstream &  out  ) 
 

Write the Partition Description of the current subdomain.

Definition at line 862 of file QCSubDomain.cpp.

References domainId, NB_OVRLP_IDX, NB_SHARED_ATOM_IDX, nbAOCoreShell1, nbAOShell2, nbAtomCoreShell1, nbAtomShell2, overlapMap, OVRLP_MAP_HEAD, QC_TRACE, and SBD_ID_IDX.


Friends And Related Function Documentation

ostream& operator<< ostream &  out,
const QCSubDomain domain
[friend]
 

Definition at line 611 of file QCSubDomain.cpp.


Member Data Documentation

QCFloat* QCSubDomain::bFactor [private]
 

The array of B factor of the sub-domains. This is the sum of the
electronic density provided by the atomic orbitals weighted by the partitioning
coefficient. Then, B[i] is the density of probability of presence of an electron
on the molecular orbital weighted by the implication of that molecular orbital
in the global system.

Definition at line 533 of file QCSubDomain.hpp.

Referenced by allocStructures(), computeBFactor(), getBFactor(), and ~QCSubDomain().

int QCSubDomain::densityBlockCount [private]
 

No idea today

Definition at line 515 of file QCSubDomain.hpp.

Referenced by fillDensityArray(), getDensityBlockCount(), and setSystemNumbers().

int* QCSubDomain::densityBlockIdx [private]
 

No idea today

Definition at line 511 of file QCSubDomain.hpp.

Referenced by allocStructures(), copyAtomOverlpInto(), getDensityBlockIdx(), setAtomOverlpFrom(), setDensityBlockIdx(), unsetAtomOverlp(), and ~QCSubDomain().

int QCSubDomain::domainId [private]
 

Id (number) of the subdomain

Definition at line 476 of file QCSubDomain.hpp.

Referenced by allocStructures(), copyAtomOverlpInto(), fillAtomInStructure(), getId(), printHeadOfInternalStructure(), setAtomOverlpFrom(), setId(), writeInFileNew(), and writeSubDomainHeader().

int QCSubDomain::globalDomainId [private]
 

Definition at line 477 of file QCSubDomain.hpp.

Referenced by printHeadOfInternalStructure(), setGlobalIndex(), and updateInternalStructure().

int* QCSubDomain::globalIdx [private]
 

Array of size number of atoms in the subdomain. globalIdx[i] specifies the global index (index in the whole molecule) of atom i

Definition at line 507 of file QCSubDomain.hpp.

Referenced by allocStructures(), fillAtomInStructure(), getGlobalIdx(), getGlobalIdxs(), operator<<(), setGlobalIdx(), writeInFileNew(), and ~QCSubDomain().

int QCSubDomain::nbAOCoreShell1 [private]
 

Number of orbitals in the buffer 1

Definition at line 489 of file QCSubDomain.hpp.

Referenced by getNbAOCoreShell1(), printHeadOfInternalStructure(), updateInternalStructure(), and writeSubDomainHeader().

int QCSubDomain::nbAOShell2 [private]
 

Number of orbitals in the buffer 2

Definition at line 497 of file QCSubDomain.hpp.

Referenced by getNbAOShell2(), printHeadOfInternalStructure(), updateInternalStructure(), and writeSubDomainHeader().

int QCSubDomain::nbAtomCoreShell1 [private]
 

Number of atoms in the buffer 1

Definition at line 485 of file QCSubDomain.hpp.

Referenced by getNbAtomCoreShell1(), printHeadOfInternalStructure(), setSystemNumbers(), updateInternalStructure(), and writeSubDomainHeader().

int QCSubDomain::nbAtomShell2 [private]
 

Number of atoms in the buffer 2

Definition at line 493 of file QCSubDomain.hpp.

Referenced by getNbAtomShell2(), printHeadOfInternalStructure(), setSystemNumbers(), updateInternalStructure(), and writeSubDomainHeader().

int QCSubDomain::nbFilledOM [private]
 

The number of filled orbitals i.e. whose occupation number is equal to 2.

Definition at line 538 of file QCSubDomain.hpp.

Referenced by getNbFilledOM(), and setNbFilledOccupiedOM().

int QCSubDomain::nbOccupiedOM [private]
 

The number of occupied orbitals i.e. whose occupation number is superior to 0.

Definition at line 543 of file QCSubDomain.hpp.

Referenced by getNbOccupiedOM(), and setNbFilledOccupiedOM().

QCFloat* __restrict__ QCSubDomain::orbitalOccupN [private]
 

The molecular orbital occupation number. In a classic calculation, those number are always equal to 0 or 2. In a Divide And Conquer approach, the homo carries a fraction of electron to keep as a constant the global number of electrons of the system.

Definition at line 550 of file QCSubDomain.hpp.

Referenced by allocStructures(), getOrbitalOccupN(), setOrbitalOccupN(), and ~QCSubDomain().

int* QCSubDomain::overlapMap [private]
 

Array of information on the structure of neighboors.

Definition at line 519 of file QCSubDomain.hpp.

Referenced by addOverlpIndirectionInfo(), allocStructures(), containsNonShell2(), copyAtomOverlpInto(), fillWeight(), getIndLocalIdx(), getIndRemoteIdx(), getMapOffset(), getNbOverlpSD(), getNbSharedAtoms(), getOverlapMap(), getRemDomainId(), getRemoteIdx(), operator<<(), printHeadOfInternalStructure(), setAtomOverlpFrom(), sort(), sortOverlapments(), swap(), unsetAtomOverlp(), updateInternalStructure(), writeInFileNew(), writeOverlapStructure(), writeSubDomainHeader(), and ~QCSubDomain().

int QCSubDomain::overlapMapSize [private]
 

Size of the array of integer called overlapMap

Definition at line 523 of file QCSubDomain.hpp.

Referenced by allocStructures(), getOverlapMapSize(), and writeOverlapStructure().

const QCSystem* QCSubDomain::rootSystem [private]
 

Definition at line 481 of file QCSubDomain.hpp.

Referenced by getRootSystem(), setRootSystem(), and setSystemNumbers().

QCSymMatrix QCSubDomain::weight [private]
 

This is the partitioning coefficient array.
weight[a][b] is the reverse of number of sub-domains containing the atoms a and b
together.

Definition at line 527 of file QCSubDomain.hpp.

Referenced by allocStructures(), computeBFactor(), fillWeight(), initWeightedDensity(), and traceProductCoreShell1().

QCSubDomainZone* QCSubDomain::zone [private]
 

Array of size number of atoms in the subdomain. zone[i] specifies in which region (core, buffer1 or buffer2) the atom i is located

Definition at line 502 of file QCSubDomain.hpp.

Referenced by allocStructures(), copyAtomOverlpInto(), fillAtomInStructure(), fillWeight(), getZone(), setAtomOverlpFrom(), setZone(), unsetAtomOverlp(), writeInFileNew(), and ~QCSubDomain().


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