hsoskstmpl.h
来自「大型并行量子化学软件;支持密度泛函(DFT)。可以进行各种量子化学计算。支持CH」· C头文件 代码 · 共 103 行
H
103 行
namespace sc {class LocalHSOSKSContribution { private: double * const gmat; double * const gmato; double * const pmat; double * const pmato; double a0; public: LocalHSOSKSContribution(double *g, double *p, double *go, double *po, double _a0) : gmat(g), gmato(go), pmat(p), pmato(po), a0(_a0) {} ~LocalHSOSKSContribution() {} void set_bound(double, double) {} inline void cont1(int ij, int kl, double val) { gmat[ij] += val*pmat[kl]; gmat[kl] += val*pmat[ij]; } inline void cont2(int ij, int kl, double val) { val *= 0.25*a0; gmat[ij] -= val*pmat[kl]; gmat[kl] -= val*pmat[ij]; gmato[ij] += val*pmato[kl]; gmato[kl] += val*pmato[ij]; } inline void cont3(int ij, int kl, double val) { val *= 0.5*a0; gmat[ij] -= val*pmat[kl]; gmat[kl] -= val*pmat[ij]; gmato[ij] += val*pmato[kl]; gmato[kl] += val*pmato[ij]; } inline void cont4(int ij, int kl, double val) { gmat[ij] += (1.0 - 0.25*a0)*val*pmat[kl]; gmat[kl] += (1.0 - 0.25*a0)*val*pmat[ij]; gmato[ij] += a0*0.25*val*pmato[kl]; gmato[kl] += a0*0.25*val*pmato[ij]; } inline void cont5(int ij, int kl, double val) { gmat[ij] += (1.0 - 0.5*a0)*val*pmat[kl]; gmat[kl] += (1.0 - 0.5*a0)*val*pmat[ij]; gmato[ij] += 0.5*a0*val*pmato[kl]; gmato[kl] += 0.5*a0*val*pmato[ij]; }};class LocalHSOSKSEnergyContribution { private: double * const pmat; double * const pmato; double a0; public: double ec; double ex; LocalHSOSKSEnergyContribution(double *p, double *po, double _a0) : pmat(p), pmato(po), a0(_a0) { ec=ex=0; } ~LocalHSOSKSEnergyContribution() {} void set_bound(double, double) {} inline void cont1(int ij, int kl, double val) { ec += val*pmat[ij]*pmat[kl]; } inline void cont2(int ij, int kl, double val) { ex -= a0*0.25*val*(pmat[ij]*pmat[kl] + pmato[ij]*pmato[kl]); } inline void cont3(int ij, int kl, double val) { ex -= a0*0.5*val*(pmat[ij]*pmat[kl] + pmato[ij]*pmato[kl]); } inline void cont4(int ij, int kl, double val) { ec += val*pmat[ij]*pmat[kl]; ex -= a0*0.25*val*(pmat[ij]*pmat[kl] + pmato[ij]*pmato[kl]); } inline void cont5(int ij, int kl, double val) { ec += val*pmat[ij]*pmat[kl]; ex -= a0*0.5*val*(pmat[ij]*pmat[kl] + pmato[ij]*pmato[kl]); }};}
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?