00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020 #ifndef QC_FOCK_GTR_H_
00021 #define QC_FOCK_GTR_H_
00022
00023
00024 #include "QCMatElemGtr.hpp"
00025 #include "QCHamiltonGtr.hpp"
00026
00027
00033 template <class TPMatrix>
00034 class QCFockGtr :
00035 public QCMatElemGtr<TPMatrix>
00036 {
00037
00039 public:
00040
00041
00045 QCFockGtr (void);
00046
00047
00048
00052 QCFockGtr (int dimMatrix);
00053
00054
00055
00059 virtual ~QCFockGtr (void);
00060
00061
00062
00067 template <class TPManager>
00068 void completeElems (TPManager& manager,
00069 typename TPManager::TSystem::QCIterator& workingSystem,
00070 const bool& isItfirstCall);
00071
00072
00073
00074
00078 template <class TPParam>
00079 void completeElems (const TPParam * QCRestrict params,
00080 const QCSubDomain& QCRestrict workingDomain,
00081 const QCSubDomain& QCRestrict remoteDomain,
00082 const QCFloat * QCRestrict remoteDensity,
00083 QCRepInterElec& QCRestrict repInterElecIntegrals,
00084 QCSymMatrix& QCRestrict fockFAA,
00085 const QCGeneralData& data,
00086 int step,
00087 int nbDomains,
00088 QCIntgAcquisitionMethod intgAcquisitionMethod,
00089 bool isFirstCall);
00090
00091
00092
00093
00099 template <class TPManager>
00100 void diagonalize (TPManager& manager,
00101 typename TPManager::TSystem::QCIterator& workingSystem,
00102 const int& nbIter);
00103
00104
00105
00106
00111 template <class TPIterator>
00112 void levelShifting (TPIterator& workingSystem,
00113 const QCFloat& doubleGapShift);
00114
00115
00116
00123 template <class TPMatrix2>
00124 inline void copyMatrix (QCHamiltonGtr<TPMatrix2>& hamiltonH);
00125
00126
00127
00131 template <class TPMatrix2>
00132 inline void copyMatrix (QCFockGtr<TPMatrix2>& fockF);
00133
00134
00136 protected:
00137
00138
00140 private:
00141
00142
00143
00144
00147 public:
00148 protected:
00149 private:
00150
00151 };
00152
00153
00154
00155
00156
00163 template <class TPMatrix>
00164 template <class TPMatrix2>
00165 inline void
00166 QCFockGtr<TPMatrix>::copyMatrix (QCHamiltonGtr<TPMatrix2>& hamiltonH) {
00167 this->matrix.copy (hamiltonH.getMatrix() );
00168 }
00169
00170
00171
00175 template <class TPMatrix>
00176 template <class TPMatrix2>
00177 inline void
00178 QCFockGtr<TPMatrix>::copyMatrix (QCFockGtr<TPMatrix2>& fockF) {
00179 this->matrix.copy (fockF.getMatrix() );
00180 }
00181
00182
00183
00184
00185
00186
00187 #endif // QC_FOCK_GTR_H_