Google

Main Page   Class Hierarchy   Compound List   File List   Compound Members   Related Pages  

hsoskstmpl.h

00001 
00002 namespace sc {
00003 
00004 class LocalHSOSKSContribution {
00005   private:
00006     double * const gmat;
00007     double * const gmato;
00008     double * const pmat;
00009     double * const pmato;
00010     double a0;
00011 
00012   public:
00013     LocalHSOSKSContribution(double *g, double *p, double *go, double *po,
00014                           double _a0) :
00015       gmat(g), gmato(go), pmat(p), pmato(po), a0(_a0) {}
00016     ~LocalHSOSKSContribution() {}
00017 
00018     void set_bound(double, double) {}
00019 
00020     inline void cont1(int ij, int kl, double val) {
00021       gmat[ij] += val*pmat[kl];
00022       gmat[kl] += val*pmat[ij];
00023     }
00024     
00025     inline void cont2(int ij, int kl, double val) {
00026       val *= 0.25*a0;
00027       gmat[ij] -= val*pmat[kl];
00028       gmat[kl] -= val*pmat[ij];
00029 
00030       gmato[ij] += val*pmato[kl];
00031       gmato[kl] += val*pmato[ij];
00032     }
00033     
00034     inline void cont3(int ij, int kl, double val) {
00035       val *= 0.5*a0;
00036       gmat[ij] -= val*pmat[kl];
00037       gmat[kl] -= val*pmat[ij];
00038 
00039       gmato[ij] += val*pmato[kl];
00040       gmato[kl] += val*pmato[ij];
00041     }
00042     
00043     inline void cont4(int ij, int kl, double val) {
00044       gmat[ij] += (1.0 - 0.25*a0)*val*pmat[kl];
00045       gmat[kl] += (1.0 - 0.25*a0)*val*pmat[ij];
00046 
00047       gmato[ij] += a0*0.25*val*pmato[kl];
00048       gmato[kl] += a0*0.25*val*pmato[ij];
00049     }
00050     
00051     inline void cont5(int ij, int kl, double val) {
00052       gmat[ij] += (1.0 - 0.5*a0)*val*pmat[kl];
00053       gmat[kl] += (1.0 - 0.5*a0)*val*pmat[ij];
00054 
00055       gmato[ij] += 0.5*a0*val*pmato[kl];
00056       gmato[kl] += 0.5*a0*val*pmato[ij];
00057     }
00058 };
00059 
00060 class LocalHSOSKSEnergyContribution {
00061   private:
00062     double * const pmat;
00063     double * const pmato;
00064     double a0;
00065 
00066   public:
00067     double ec;
00068     double ex;
00069     
00070     LocalHSOSKSEnergyContribution(double *p, double *po,
00071                                 double _a0) : pmat(p), pmato(po), a0(_a0) {
00072       ec=ex=0;
00073     }
00074 
00075     ~LocalHSOSKSEnergyContribution() {}
00076 
00077     void set_bound(double, double) {}
00078 
00079     inline void cont1(int ij, int kl, double val) {
00080       ec += val*pmat[ij]*pmat[kl];
00081     }
00082     
00083     inline void cont2(int ij, int kl, double val) {
00084       ex -= a0*0.25*val*(pmat[ij]*pmat[kl] + pmato[ij]*pmato[kl]);
00085     }
00086     
00087     inline void cont3(int ij, int kl, double val) {
00088       ex -= a0*0.5*val*(pmat[ij]*pmat[kl] + pmato[ij]*pmato[kl]);
00089     }
00090     
00091     inline void cont4(int ij, int kl, double val) {
00092       ec += val*pmat[ij]*pmat[kl];
00093       ex -= a0*0.25*val*(pmat[ij]*pmat[kl] + pmato[ij]*pmato[kl]);
00094     }
00095     
00096     inline void cont5(int ij, int kl, double val) {
00097       ec += val*pmat[ij]*pmat[kl];
00098       ex -= a0*0.5*val*(pmat[ij]*pmat[kl] + pmato[ij]*pmato[kl]);
00099     }
00100 };
00101 
00102 }

Generated at Fri Jan 10 08:14:09 2003 for MPQC 2.1.3 using the documentation package Doxygen 1.2.14.