uhftmpl.h
来自「大型并行量子化学软件;支持密度泛函(DFT)。可以进行各种量子化学计算。支持CH」· C头文件 代码 · 共 114 行
H
114 行
namespace sc {class LocalUHFContribution { private: double * const gmata; double * const gmatb; double * const pmata; double * const pmatb; public: LocalUHFContribution(double *ga, double *pa, double *gb, double *pb) : gmata(ga), gmatb(gb), pmata(pa), pmatb(pb) {} ~LocalUHFContribution() {} 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 *= 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) { 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 LocalUHFEnergyContribution { private: double * const pmata; double * const pmatb; public: double ec; double ex; LocalUHFEnergyContribution(double *a, double *b) : pmata(a), pmatb(b) { ec=ex=0; } ~LocalUHFEnergyContribution() {} 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 -= 0.5*val*(pmata[ij]*pmata[kl]+pmatb[ij]*pmatb[kl]); } inline void cont3(int ij, int kl, double val) { ex -= 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); }};class LocalUHFGradContribution { private: double * const pmata; double * const pmatb; public: LocalUHFGradContribution(double *a, double *b) : pmata(a), pmatb(b) {} ~LocalUHFGradContribution() {} inline double cont1(int ij, int kl) { return (pmata[ij]*pmata[kl])+(pmatb[ij]*pmatb[kl]) + (pmata[ij]*pmatb[kl])+(pmatb[ij]*pmata[kl]); } inline double cont2(int ij, int kl) { return 2*((pmata[ij]*pmata[kl])+(pmatb[ij]*pmatb[kl])); }};}
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?