00001 //*****************************************************************************// 00002 // // 00003 // Copyright (c) 2001 // 00004 // INRIA // 00005 // 54600 VILLERS LES NANCY // 00006 // France // 00007 // // 00008 //*****************************************************************************// 00009 // // 00010 // *** NOTICE OF PROPRIETARY INFORMATION *** // 00011 // // 00012 // The information contained in this file is considered proprietary and the // 00013 // exclusive property of INRIA. This information may not be disclosed, // 00014 // duplicated or used, in whole or in part, for any purpose whatsoever // 00015 // without express written authorization from INRIA // 00016 // // 00017 //*****************************************************************************// 00018 00019 00020 #ifndef QC_MODEL_MATRICES_H_ 00021 #define QC_MODEL_MATRICES_H_ 00022 00023 00024 #include "QCMatElemGtr.hpp" 00025 #include "QCOverlapGtr.hpp" 00026 #include "QCHamiltonGtr.hpp" 00027 #include "QCFockGtr.hpp" 00028 #include "QCDensityGtr.hpp" 00029 #include "QCRepInterElec.hpp" 00030 #include "QCSymMatrix.hpp" 00031 00032 00033 00039 class QCModelMatrices 00040 { 00041 00043 public: 00044 00045 00049 QCOverlapGtr<QCSymMatrix> * getOverlapS (void) { return overlapS; } 00050 QCHamiltonGtr<QCSymMatrix>& getHamiltonH (void) { return hamiltonH; } 00051 QCDensityGtr<QCSymMatrix>& getDensityP (void) { return densityP; } 00052 QCDensityGtr<QCSymMatrix> * getWeightedDensityP (void) { return weightedDensityP; } 00053 QCFockGtr<QCSymMatrix>& getFockF (void) { return fockF; } 00054 QCMatElemGtr<QCMatrix>& getEigenVectCt (void) { return eigenVectCt; } 00055 QCFloat *& getEigenVal (void) { return eigenVal; } 00056 QCFloat getEigenVal (int idx) const { return eigenVal[idx]; } 00057 int *& getDegener (void) { return degener; } 00058 QCRepInterElec& getRepInterElecIntegrals (void) { return *repInterElecIntegrals; } 00059 QCDensityGtr<QCSymMatrix>& getDensityPnm1 (void) { return densityPnm1; } 00060 QCDensityGtr<QCSymMatrix> * getDensityPTild (void) { return densityPTild; } 00061 QCFockGtr<QCSymMatrix> * getFockFTild (void) { return fockFTild; } 00062 QCOverlapGtr<QCSymMatrix> * getDOverlapSOnDr (void) { return dOverlapSOnDr; } 00063 QCRepInterElec * getDRepInterElecIntegrals (void) { return dRepInterElecIntgOnDCoord; } 00064 00065 00066 00070 template <class TPManager> 00071 void allocateMatrices (TPManager& manager, int nbAtomicOrbitals); 00072 00077 template <class TPManager> 00078 void buildMatrices (TPManager& manager, typename TPManager::TSystem::QCIterator& workingSystem); 00079 00083 template <class TPManager> 00084 void prepareIterations (TPManager& manager); 00085 00087 protected: 00088 00092 QCModelMatrices (void); 00093 00097 virtual ~QCModelMatrices (void); 00098 00102 QCModelMatrices& asBase (void) { return *this; } 00103 00105 private: 00106 00109 public: 00110 protected: 00111 00118 QCOverlapGtr<QCSymMatrix> *overlapS; 00119 00123 QCHamiltonGtr<QCSymMatrix> hamiltonH; 00124 00128 QCDensityGtr<QCSymMatrix> densityP; 00129 00133 QCDensityGtr<QCSymMatrix> densityPnm1; 00134 00139 QCFockGtr<QCSymMatrix> fockF; 00140 00145 QCFockGtr<QCSymMatrix> * fockFTild; 00146 00151 QCDensityGtr<QCSymMatrix> * densityPTild; 00152 00157 QCMatElemGtr<QCMatrix> eigenVectCt; 00158 00162 QCFloat * eigenVal; 00163 00167 int * degener; 00168 00174 QCDensityGtr<QCSymMatrix> * weightedDensityP; 00175 00179 QCDensityGtr<QCSymMatrix> * squareDensityP; 00180 00184 QCDensityGtr<QCSymMatrix> * threeIdMDensityP; 00185 00194 QCRepInterElec * repInterElecIntegrals; 00195 00201 QCRepInterElec * dRepInterElecIntgOnDCoord; 00202 00206 QCOverlapGtr<QCSymMatrix> * dOverlapSOnDr; 00207 00208 private: 00209 00210 }; 00211 00212 #endif // QC_MODEL_MATRICES_H_