📄 ukstmpl.h
字号:
namespace sc {class LocalUKSContribution { private: double * const gmata; double * const gmatb; double * const pmata; double * const pmatb; double a0; public: LocalUKSContribution(double *ga, double *pa, double *gb, double *pb, double a) : gmata(ga), gmatb(gb), pmata(pa), pmatb(pb), a0(a) {} ~LocalUKSContribution() {} void set_bound(double, double) {} inline void cont1(int ij, int kl, double val) { gmata[ij] += val*(pmata[kl]+pmatb[kl]); gmata[kl] += val*(pmata[ij]+pmatb[ij]); gmatb[ij] += val*(pmata[kl]+pmatb[kl]); gmatb[kl] += val*(pmata[ij]+pmatb[ij]); } inline void cont2(int ij, int kl, double val) { val *= a0*0.5; gmata[ij] -= val*pmata[kl]; gmata[kl] -= val*pmata[ij]; gmatb[ij] -= val*pmatb[kl]; gmatb[kl] -= val*pmatb[ij]; } inline void cont3(int ij, int kl, double val) { val *= a0; gmata[ij] -= val*pmata[kl]; gmata[kl] -= val*pmata[ij]; gmatb[ij] -= val*pmatb[kl]; gmatb[kl] -= val*pmatb[ij]; } inline void cont4(int ij, int kl, double val) { cont1(ij,kl,val); cont2(ij,kl,val); } inline void cont5(int ij, int kl, double val) { cont1(ij,kl,val); cont3(ij,kl,val); }};class LocalUKSEnergyContribution { private: double * const pmata; double * const pmatb; double a0; public: double ec; double ex; LocalUKSEnergyContribution(double *a, double *b, double an) : pmata(a), pmatb(b), a0(an) { ec=ex=0; } ~LocalUKSEnergyContribution() {} void set_bound(double, double) {} inline void cont1(int ij, int kl, double val) { ec += val*(pmata[ij]+pmatb[ij])*(pmata[kl]+pmatb[kl]); } inline void cont2(int ij, int kl, double val) { ex -= a0*0.5*val*(pmata[ij]*pmata[kl]+pmatb[ij]*pmatb[kl]); } inline void cont3(int ij, int kl, double val) { ex -= a0*val*(pmata[ij]*pmata[kl]+pmatb[ij]*pmatb[kl]); } inline void cont4(int ij, int kl, double val) { cont1(ij,kl,val); cont2(ij,kl,val); } inline void cont5(int ij, int kl, double val) { cont1(ij,kl,val); cont3(ij,kl,val); }};}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -