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

hsoskstmpl.h

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

Generated at Thu Oct 4 18:08:44 2001 for MPQC 2.0.0 using the documentation package Doxygen 1.2.5.