QCLinearPartitioner< TPSystem > Class Template Reference

#include <QCLinearPartitioner.hpp>

Inheritance diagram for QCLinearPartitioner< TPSystem >:

Inheritance graph
[legend]
List of all members.

Detailed Description

template<class TPSystem>
class QCLinearPartitioner< TPSystem >

class QCLinearPartitioner

Definition at line 40 of file QCLinearPartitioner.hpp.

Public Member Functions

const std::vector< QCAtomIn > & getAtomsInZone (int i) const
QCPartSubDomaingetDomain (int i)
virtual void initData (const QCGeneralData &data, const QCFiles &files, const int *load, const int sizeLoad)
virtual void partitioning (TPSystem &mdsystem)
 QCLinearPartitioner (void)
virtual ~QCLinearPartitioner (void)

Protected Member Functions

void computeInnerReference (const QCSystem &system)
bool equilibrateAOs (QCFloat buffer1, QCFloat buffer2)
void extractDomains (TPSystem &system)
void projectOnInnerReference (QCSystem &system)
void resetData (void)
void setAtomsInBuffers (const QCSystem &system)
void setAtomsInKernel (const QCSystem &system)
void setAtomZones (int nbAtoms)
void setLoad (const QCSystem &system)
void setNeighbors (void)
void setToZero (void)
void setXMinXMax (const QCSystem &root)
void sortEigenVects (QCFloat *eigenVals, QCFloat **eigenVects, int dim)
void sortFirstAxis (QCSystem &system)

Protected Attributes

std::vector< QCAtomIn > * atomsInZone
QCPartSubDomaindomains
QCPoint3D gravityCenter
QCFloat inertiaMatrix [DIM][DIM]
int partitionGrid [DIM]
QCPoint3D xAxis
QCPoint3D yAxis
QCPoint3D zAxis

Static Protected Attributes

static const int DIM = QCAtoms::DIMENSION


Constructor & Destructor Documentation

template<class TPSystem>
QCLinearPartitioner< TPSystem >::QCLinearPartitioner void   ) 
 

Definition at line 41 of file QCLinearPartitioner.cpp.

References QCLinearPartitioner< TPSystem >::DIM, QCLinearPartitioner< TPSystem >::inertiaMatrix, QCLinearPartitioner< TPSystem >::partitionGrid, and QC_ZERO.

template<class TPSystem>
QCLinearPartitioner< TPSystem >::~QCLinearPartitioner void   )  [virtual]
 

Definition at line 61 of file QCLinearPartitioner.cpp.

References QCLinearPartitioner< TPSystem >::atomsInZone, and QCLinearPartitioner< TPSystem >::domains.


Member Function Documentation

template<class TPSystem>
void QCLinearPartitioner< TPSystem >::computeInnerReference const QCSystem system  )  [protected]
 

Calcul des valeurs/vecteurs propres

Preparation des structures fortran

Retour aux structures C/C++

trie des valeurs/vecteurs propres

Les axes

Liberation memoire

Rapport

Definition at line 468 of file QCLinearPartitioner.cpp.

References QCAtoms::buildGravityCenter(), COORDX, COORDY, COORDZ, QCLinearPartitioner< TPSystem >::DIM, QCAtoms::getCoordsAt(), QCAtoms::getNbAtoms(), QCLinearPartitioner< TPSystem >::gravityCenter, QCLinearPartitioner< TPSystem >::inertiaMatrix, QC_TRACE_PART, QCLapack, QCLinearPartitioner< TPSystem >::sortEigenVects(), QCPoint< dim >::vect(), QCLinearPartitioner< TPSystem >::xAxis, QCLinearPartitioner< TPSystem >::yAxis, and QCLinearPartitioner< TPSystem >::zAxis.

Referenced by QCLinearPartitioner< TPSystem >::partitioning().

Here is the call graph for this function:

template<class TPSystem>
bool QCLinearPartitioner< TPSystem >::equilibrateAOs QCFloat  buffer1,
QCFloat  buffer2
[protected]
 

Calcul des nouveaux wideSD[i] : Nouveaux wideSD[i] temporaires :

Convergence si on a une erreur de 5% sur la charge

Move xmin and xmax

Definition at line 809 of file QCLinearPartitioner.cpp.

References COORDX, COORDY, COORDZ, QCLinearPartitioner< TPSystem >::domains, FQCAbs(), FQCMax(), QCPartSubDomain::getLoad(), QCPartSubDomain::getNbNeighbors(), QCPartSubDomain::getXLength(), QCPartSubDomain::getXMax(), QCPartSubDomain::getXMin(), QCPartitioner< TPSystem >::nbPartitions, QCLinearPartitioner< TPSystem >::partitionGrid, QC_TRACE_PART, QCPartSubDomain::setXMax(), and QCPartSubDomain::setXMin().

Referenced by QCLinearPartitioner< TPSystem >::partitioning().

Here is the call graph for this function:

template<class TPSystem>
void QCLinearPartitioner< TPSystem >::extractDomains TPSystem &  system  )  [protected]
 

Build subdomain of QC++ with sub domain of the partitionner

Definition at line 376 of file QCLinearPartitioner.cpp.

References QCLinearPartitioner< TPSystem >::getAtomsInZone(), QCLinearPartitioner< TPSystem >::getDomain(), QCPartitioner< TPSystem >::nbPartitions, and QC_TRACE_PART.

Referenced by QCLinearPartitioner< TPSystem >::partitioning().

Here is the call graph for this function:

template<class TPSystem>
const std::vector<QCAtomIn>& QCLinearPartitioner< TPSystem >::getAtomsInZone int  i  )  const [inline]
 

Definition at line 93 of file QCLinearPartitioner.hpp.

References QCLinearPartitioner< TPSystem >::atomsInZone.

Referenced by QCLinearPartitioner< TPSystem >::extractDomains().

template<class TPSystem>
QCPartSubDomain& QCLinearPartitioner< TPSystem >::getDomain int  i  )  [inline]
 

Definition at line 66 of file QCLinearPartitioner.hpp.

References QCLinearPartitioner< TPSystem >::domains.

Referenced by QCLinearPartitioner< TPSystem >::extractDomains().

template<class TPSystem>
void QCLinearPartitioner< TPSystem >::initData const QCGeneralData data,
const QCFiles files,
const int *  load,
const int  sizeLoad
[virtual]
 

Initialize the internal data

data : data read fron the configuration files files : Object that contains all files needed by QC++

Definition at line 77 of file QCLinearPartitioner.cpp.

References COORDX, COORDY, COORDZ, QCLinearPartitioner< TPSystem >::domains, QCPartitioner< TPSystem >::initData(), QCPartitioner< TPSystem >::nbPartitions, QCLinearPartitioner< TPSystem >::partitionGrid, and QC_TRACE_INIT.

Here is the call graph for this function:

template<class TPSystem>
void QCLinearPartitioner< TPSystem >::partitioning TPSystem &  system  )  [virtual]
 

Mise en place de la numerotation original

Calcul du repere local de la molecule et projection sur ce repere

Tri des atomes selon la coordonee X de ce nouveau repere

Init neighbors

Size domain cores

Add atoms in the kernel

Add atoms in the buffers

Initialisation des poids

Equilibrage de charge

Reset domain data

Set the structure of QC++

Reimplemented from QCPartitioner< TPSystem >.

Definition at line 97 of file QCLinearPartitioner.cpp.

References QCPartitioner< TPSystem >::_ordering, QCLinearPartitioner< TPSystem >::computeInnerReference(), QCPartSubDomain::computeNumbers(), COORDX, COORDY, COORDZ, QCLinearPartitioner< TPSystem >::domains, QCLinearPartitioner< TPSystem >::equilibrateAOs(), QCLinearPartitioner< TPSystem >::extractDomains(), QCAtoms::getNbAtoms(), QCPartitioner< TPSystem >::nbPartitions, QCLinearPartitioner< TPSystem >::partitionGrid, QCLinearPartitioner< TPSystem >::projectOnInnerReference(), QC_TRACE_PART, QCLinearPartitioner< TPSystem >::resetData(), QCLinearPartitioner< TPSystem >::setAtomsInBuffers(), QCLinearPartitioner< TPSystem >::setAtomsInKernel(), QCLinearPartitioner< TPSystem >::setAtomZones(), QCLinearPartitioner< TPSystem >::setLoad(), QCLinearPartitioner< TPSystem >::setNeighbors(), QCLinearPartitioner< TPSystem >::setXMinXMax(), QCLinearPartitioner< TPSystem >::sortFirstAxis(), and QCPartitioner< TPSystem >::updateInternalStructure().

Here is the call graph for this function:

template<class TPSystem>
void QCLinearPartitioner< TPSystem >::projectOnInnerReference QCSystem system  )  [protected]
 

Definition at line 597 of file QCLinearPartitioner.cpp.

References COORDX, COORDY, COORDZ, QCLinearPartitioner< TPSystem >::DIM, QCPoint< dim >::dot(), QCAtoms::getNbAtoms(), QCAtoms::getPointAt(), QCLinearPartitioner< TPSystem >::gravityCenter, QC_TRACE_PART, QCAtoms::setPointAt(), QCLinearPartitioner< TPSystem >::xAxis, QCLinearPartitioner< TPSystem >::yAxis, and QCLinearPartitioner< TPSystem >::zAxis.

Referenced by QCLinearPartitioner< TPSystem >::partitioning().

Here is the call graph for this function:

template<class TPSystem>
void QCLinearPartitioner< TPSystem >::resetData void   )  [protected]
 

reset internal data of all the subdomains

Definition at line 451 of file QCLinearPartitioner.cpp.

References QCLinearPartitioner< TPSystem >::domains, QCPartitioner< TPSystem >::nbPartitions, and QCPartSubDomain::resetData().

Referenced by QCLinearPartitioner< TPSystem >::partitioning().

Here is the call graph for this function:

template<class TPSystem>
void QCLinearPartitioner< TPSystem >::setAtomsInBuffers const QCSystem system  )  [protected]
 

Definition at line 785 of file QCLinearPartitioner.cpp.

References QCPartSubDomain::addAtomsInBuffers(), QCLinearPartitioner< TPSystem >::domains, QCAtoms::getAtoms(), QCPartSubDomain::getNeighborIdx(), QCPartitioner< TPSystem >::nbPartitions, QC_TRACE_PART, QCPartitioner< TPSystem >::radius1, QCPartitioner< TPSystem >::radius2, and QCPartitioner< TPSystem >::useFrag.

Referenced by QCLinearPartitioner< TPSystem >::partitioning().

Here is the call graph for this function:

template<class TPSystem>
void QCLinearPartitioner< TPSystem >::setAtomsInKernel const QCSystem system  )  [protected]
 

Definition at line 751 of file QCLinearPartitioner.cpp.

References QCPartSubDomain::addAtomsInKernel(), QCLinearPartitioner< TPSystem >::domains, QCAtoms::getAtoms(), QCAtoms::getNbAtoms(), QCPartSubDomain::getNbAtomsKernel(), QCPartitioner< TPSystem >::nbPartitions, QC_TRACE_PART, and QCPartitioner< TPSystem >::useFrag.

Referenced by QCLinearPartitioner< TPSystem >::partitioning().

Here is the call graph for this function:

template<class TPSystem>
void QCLinearPartitioner< TPSystem >::setAtomZones int  nbAtoms  )  [protected]
 

Definition at line 183 of file QCLinearPartitioner.cpp.

References QCLinearPartitioner< TPSystem >::atomsInZone, QCLinearPartitioner< TPSystem >::domains, QCPartSubDomain::getAtomsInKernel(), QCPartSubDomain::getAtomsInShell1(), QCPartSubDomain::getAtomsInShell2(), QCPartSubDomain::getNbOverlp(), QCPartSubDomain::getSharedAtomsVect(), QCAtomIn::localNum, QCPartitioner< TPSystem >::nbPartitions, QCAtomIn::numDomain, QC_CORE, QC_SHELL1, QC_SHELL2, QC_TRACE_PART, and QCAtomIn::typeZone.

Referenced by QCLinearPartitioner< TPSystem >::partitioning().

Here is the call graph for this function:

template<class TPSystem>
void QCLinearPartitioner< TPSystem >::setLoad const QCSystem system  )  [protected]
 

Definition at line 294 of file QCLinearPartitioner.cpp.

References QCPartitioner< TPSystem >::charge, QCLinearPartitioner< TPSystem >::domains, QCPartSubDomain::getAtomsInKernel(), QCPartSubDomain::getAtomsInShell1(), QCPartSubDomain::getAtomsInShell2(), QCAtoms::getNbAtoms(), QCAtoms::getType(), QCPartitioner< TPSystem >::nbPartitions, QC_TRACE_PART, QCPartSubDomain::setLoadInKernel(), QCPartSubDomain::setLoadInShell1(), QCPartSubDomain::setLoadInShell2(), and table.

Referenced by QCLinearPartitioner< TPSystem >::partitioning().

Here is the call graph for this function:

template<class TPSystem>
void QCLinearPartitioner< TPSystem >::setNeighbors void   )  [protected]
 

Definition at line 629 of file QCLinearPartitioner.cpp.

References QCPartSubDomain::addNeighbor(), QCLinearPartitioner< TPSystem >::domains, QCPartSubDomain::initNbOverlapDomain(), QCPartitioner< TPSystem >::nbPartitions, QC_TRACE_PART, and QCPartSubDomain::setIds().

Referenced by QCLinearPartitioner< TPSystem >::partitioning().

Here is the call graph for this function:

template<class TPSystem>
void QCLinearPartitioner< TPSystem >::setToZero void   )  [protected]
 

Definition at line 432 of file QCLinearPartitioner.cpp.

References COORDX, COORDY, COORDZ, QCLinearPartitioner< TPSystem >::DIM, QCLinearPartitioner< TPSystem >::gravityCenter, QCLinearPartitioner< TPSystem >::inertiaMatrix, QC_ZERO, QCLinearPartitioner< TPSystem >::xAxis, QCLinearPartitioner< TPSystem >::yAxis, and QCLinearPartitioner< TPSystem >::zAxis.

template<class TPSystem>
void QCLinearPartitioner< TPSystem >::setXMinXMax const QCSystem root  )  [protected]
 

Definition at line 669 of file QCLinearPartitioner.cpp.

References COORDX, COORDY, COORDZ, QCLinearPartitioner< TPSystem >::DIM, QCLinearPartitioner< TPSystem >::domains, QCAtoms::findMinMax(), QCLinearPartitioner< TPSystem >::partitionGrid, QC_TRACE_PART, QCPartSubDomain::setXMax(), and QCPartSubDomain::setXMin().

Referenced by QCLinearPartitioner< TPSystem >::partitioning().

Here is the call graph for this function:

template<class TPSystem>
void QCLinearPartitioner< TPSystem >::sortEigenVects QCFloat eigenVals,
QCFloat **  eigenVects,
int  dim
[protected]
 

Definition at line 971 of file QCLinearPartitioner.cpp.

References FQCAbs(), QC_TRACE, and QC_TRACE_PART.

Referenced by QCLinearPartitioner< TPSystem >::computeInnerReference().

Here is the call graph for this function:

template<class TPSystem>
void QCLinearPartitioner< TPSystem >::sortFirstAxis QCSystem system  )  [protected]
 

Sort atoms by the fisrt coordonate in the internal reper

Definition at line 937 of file QCLinearPartitioner.cpp.

References QCPartitioner< TPSystem >::_ordering, QCPartitioner< TPSystem >::charge, COORDX, QCAtoms::getCoordsAt(), QCAtoms::getNbAtoms(), QC_TRACE_PART, and QCAtoms::swap().

Referenced by QCLinearPartitioner< TPSystem >::partitioning().

Here is the call graph for this function:


Member Data Documentation

template<class TPSystem>
std::vector<QCAtomIn>* QCLinearPartitioner< TPSystem >::atomsInZone [protected]
 

Definition at line 202 of file QCLinearPartitioner.hpp.

Referenced by QCLinearPartitioner< TPSystem >::getAtomsInZone(), QCLinearPartitioner< TPSystem >::setAtomZones(), and QCLinearPartitioner< TPSystem >::~QCLinearPartitioner().

template<class TPSystem>
const int QCLinearPartitioner< TPSystem >::DIM = QCAtoms::DIMENSION [static, protected]
 

Definition at line 190 of file QCLinearPartitioner.hpp.

Referenced by QCLinearPartitioner< TPSystem >::computeInnerReference(), QCLinearPartitioner< TPSystem >::projectOnInnerReference(), QCLinearPartitioner< TPSystem >::QCLinearPartitioner(), QCLinearPartitioner< TPSystem >::setToZero(), and QCLinearPartitioner< TPSystem >::setXMinXMax().

template<class TPSystem>
QCPartSubDomain* QCLinearPartitioner< TPSystem >::domains [protected]
 

Definition at line 201 of file QCLinearPartitioner.hpp.

Referenced by QCLinearPartitioner< TPSystem >::equilibrateAOs(), QCLinearPartitioner< TPSystem >::getDomain(), QCLinearPartitioner< TPSystem >::initData(), QCLinearPartitioner< TPSystem >::partitioning(), QCLinearPartitioner< TPSystem >::resetData(), QCLinearPartitioner< TPSystem >::setAtomsInBuffers(), QCLinearPartitioner< TPSystem >::setAtomsInKernel(), QCLinearPartitioner< TPSystem >::setAtomZones(), QCLinearPartitioner< TPSystem >::setLoad(), QCLinearPartitioner< TPSystem >::setNeighbors(), QCLinearPartitioner< TPSystem >::setXMinXMax(), and QCLinearPartitioner< TPSystem >::~QCLinearPartitioner().

template<class TPSystem>
QCPoint3D QCLinearPartitioner< TPSystem >::gravityCenter [protected]
 

Definition at line 194 of file QCLinearPartitioner.hpp.

Referenced by QCLinearPartitioner< TPSystem >::computeInnerReference(), QCLinearPartitioner< TPSystem >::projectOnInnerReference(), and QCLinearPartitioner< TPSystem >::setToZero().

template<class TPSystem>
QCFloat QCLinearPartitioner< TPSystem >::inertiaMatrix[DIM][DIM] [protected]
 

Definition at line 199 of file QCLinearPartitioner.hpp.

Referenced by QCLinearPartitioner< TPSystem >::computeInnerReference(), QCLinearPartitioner< TPSystem >::QCLinearPartitioner(), and QCLinearPartitioner< TPSystem >::setToZero().

template<class TPSystem>
int QCLinearPartitioner< TPSystem >::partitionGrid[DIM] [protected]
 

Definition at line 195 of file QCLinearPartitioner.hpp.

Referenced by QCLinearPartitioner< TPSystem >::equilibrateAOs(), QCLinearPartitioner< TPSystem >::initData(), QCLinearPartitioner< TPSystem >::partitioning(), QCLinearPartitioner< TPSystem >::QCLinearPartitioner(), and QCLinearPartitioner< TPSystem >::setXMinXMax().

template<class TPSystem>
QCPoint3D QCLinearPartitioner< TPSystem >::xAxis [protected]
 

Definition at line 196 of file QCLinearPartitioner.hpp.

Referenced by QCLinearPartitioner< TPSystem >::computeInnerReference(), QCLinearPartitioner< TPSystem >::projectOnInnerReference(), and QCLinearPartitioner< TPSystem >::setToZero().

template<class TPSystem>
QCPoint3D QCLinearPartitioner< TPSystem >::yAxis [protected]
 

Definition at line 197 of file QCLinearPartitioner.hpp.

Referenced by QCLinearPartitioner< TPSystem >::computeInnerReference(), QCLinearPartitioner< TPSystem >::projectOnInnerReference(), and QCLinearPartitioner< TPSystem >::setToZero().

template<class TPSystem>
QCPoint3D QCLinearPartitioner< TPSystem >::zAxis [protected]
 

Definition at line 198 of file QCLinearPartitioner.hpp.

Referenced by QCLinearPartitioner< TPSystem >::computeInnerReference(), QCLinearPartitioner< TPSystem >::projectOnInnerReference(), and QCLinearPartitioner< TPSystem >::setToZero().


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