📄 clkstmpl.h
字号:
namespace sc {class LocalCLKSContribution { private: double * const gmat; double * const pmat; double a0; public: LocalCLKSContribution(double *g, double *p, double a) : gmat(g), pmat(p), a0(a) {} ~LocalCLKSContribution() {} 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]; } inline void cont3(int ij, int kl, double val) { val *= -0.5*a0; gmat[ij] += val*pmat[kl]; gmat[kl] += val*pmat[ij]; } inline void cont4(int ij, int kl, double val) { val *= 1.0 - 0.25*a0; gmat[ij] += val*pmat[kl]; gmat[kl] += val*pmat[ij]; } inline void cont5(int ij, int kl, double val) { val *= 1.0 - 0.5*a0; gmat[ij] += val*pmat[kl]; gmat[kl] += val*pmat[ij]; }};class LocalCLKSEnergyContribution { private: double * const pmat; double a0; public: double ec; double ex; LocalCLKSEnergyContribution(double *p, double a) : pmat(p), a0(a) { ec=ex=0; } ~LocalCLKSEnergyContribution() {} 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]; } inline void cont3(int ij, int kl, double val) { ex -= a0*0.5*val*pmat[ij]*pmat[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]; } inline void cont5(int ij, int kl, double val) { ec += val*pmat[ij]*pmat[kl]; ex -= a0*0.5*val*pmat[ij]*pmat[kl]; }};}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -