00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020 #ifndef QC_REPINTERELEC_H_
00021 #define QC_REPINTERELEC_H_
00022
00023
00024 #include "QCCommon.hpp"
00025 #include "QCMatElemGtr.hpp"
00026 #include "QCMatrix.hpp"
00027 #include "QCPoint.hpp"
00028
00029
00030 class QCIntgReader;
00031 class QCIntgWriter;
00032 class QCSystem;
00033
00034
00046 class QCRepInterElec :
00047 public QCMatElemGtr<QCMatrix>
00048 {
00049
00051 public:
00052
00057 QCRepInterElec (const int& dim);
00058
00059
00063 virtual ~QCRepInterElec (void);
00064
00065
00066
00070 QCIntgWriter * allocIntgWriter (void);
00071 QCIntgReader * allocIntgReader (void);
00072
00073
00074
00075
00079 const string& getIntgTmpFile (void) const { return intgTmpFile; }
00080 QCIntgWriter * getIntgWriter (void) const { return intgWriter; }
00081 QCIntgReader * getIntgReader (void) const { return intgReader; }
00082
00083
00084
00088 void setIntgTmpFile (const string& extFile) { intgTmpFile = extFile; }
00089
00090
00091
00092
00097 template <class TPParam>
00098 void computeElems (const TPParam* QCRestrict parameterA,
00099 const TPParam* QCRestrict parameterB,
00100 const QCPoint3D& QCRestrict coordsA,
00101 const QCPoint3D& QCRestrict coordsB,
00102 QCFloat rAB,
00103 bool ssACalc,
00104 bool ssBCalc,
00105 bool compressedFormat = false,
00106 const QCIntgAcquisitionMethod& intgAcquisitionMethod = QC_DIRECT_COMPUTATION,
00107 bool isItfirstCall = false);
00108
00109
00110
00111
00116 template <class TPParam>
00117 void computeDerivatives (const TPParam* QCRestrict parameterA,
00118 const TPParam* QCRestrict parameterB,
00119 QCRepInterElec& QCRestrict workingIntg,
00120 QCDerivationType derivationType,
00121 const QCPoint3D& coordsA,
00122 const QCPoint3D& coordsB,
00123 const QCPoint3D& shift,
00124 bool ssACalc = false,
00125 bool ssBCalc = false,
00126 const QCFloat& QCRestrict inv2DeltaQ = QC_ZERO
00127 #ifdef TRACE_COMPUTE_DERIVATIVES
00128 ,
00129 QCChrono * intgChr1Ptr = NULL,
00130 QCChrono * intgChr2Ptr = NULL,
00131 QCChrono * intgChr3Ptr = NULL
00132 #endif
00133 );
00134
00135
00136
00137
00145 void expandOverDim16 (const int& nbAOofA, const int& nbAOofB);
00146
00147
00148
00149
00150
00152 protected:
00153
00154
00156 private:
00157
00158
00159
00162 public:
00163 protected:
00164 private:
00165
00172 QCIntgWriter * intgWriter;
00173
00178 QCIntgReader * intgReader;
00179
00183 string intgTmpFile;
00184
00185 };
00186
00187 #endif // QC_REPINTERELEC_H_