MPQC  3.0.0-alpha
ukstmpl.h
1 
2 namespace sc {
3 
5  private:
6  double * const gmata;
7  double * const gmatb;
8  double * const pmata;
9  double * const pmatb;
10  double a0;
11 
12  public:
13  LocalUKSContribution(double *ga, double *pa, double *gb, double *pb,
14  double a) :
15  gmata(ga), gmatb(gb), pmata(pa), pmatb(pb), a0(a) {}
17 
18  void set_bound(double, double) {}
19 
20  inline void cont1(int ij, int kl, double val) {
21  gmata[ij] += val*(pmata[kl]+pmatb[kl]);
22  gmata[kl] += val*(pmata[ij]+pmatb[ij]);
23 
24  gmatb[ij] += val*(pmata[kl]+pmatb[kl]);
25  gmatb[kl] += val*(pmata[ij]+pmatb[ij]);
26  }
27 
28  inline void cont2(int ij, int kl, double val) {
29  val *= a0*0.5;
30  gmata[ij] -= val*pmata[kl];
31  gmata[kl] -= val*pmata[ij];
32 
33  gmatb[ij] -= val*pmatb[kl];
34  gmatb[kl] -= val*pmatb[ij];
35  }
36 
37  inline void cont3(int ij, int kl, double val) {
38  val *= a0;
39  gmata[ij] -= val*pmata[kl];
40  gmata[kl] -= val*pmata[ij];
41 
42  gmatb[ij] -= val*pmatb[kl];
43  gmatb[kl] -= val*pmatb[ij];
44  }
45 
46  inline void cont4(int ij, int kl, double val) {
47  cont1(ij,kl,val);
48  cont2(ij,kl,val);
49  }
50 
51  inline void cont5(int ij, int kl, double val) {
52  cont1(ij,kl,val);
53  cont3(ij,kl,val);
54  }
55 };
56 
58  private:
59  double * const pmata;
60  double * const pmatb;
61  double a0;
62 
63  public:
64  double ec;
65  double ex;
66 
67  LocalUKSEnergyContribution(double *a, double *b, double an) :
68  pmata(a), pmatb(b), a0(an) {
69  ec=ex=0;
70  }
71 
73 
74  void set_bound(double, double) {}
75 
76  inline void cont1(int ij, int kl, double val) {
77  ec += val*(pmata[ij]+pmatb[ij])*(pmata[kl]+pmatb[kl]);
78  }
79 
80  inline void cont2(int ij, int kl, double val) {
81  ex -= a0*0.5*val*(pmata[ij]*pmata[kl]+pmatb[ij]*pmatb[kl]);
82  }
83 
84  inline void cont3(int ij, int kl, double val) {
85  ex -= a0*val*(pmata[ij]*pmata[kl]+pmatb[ij]*pmatb[kl]);
86  }
87 
88  inline void cont4(int ij, int kl, double val) {
89  cont1(ij,kl,val);
90  cont2(ij,kl,val);
91  }
92 
93  inline void cont5(int ij, int kl, double val) {
94  cont1(ij,kl,val);
95  cont3(ij,kl,val);
96  }
97 };
98 
99 }
sc::LocalUKSContribution
Definition: ukstmpl.h:4
sc
Contains all MPQC code up to version 3.
Definition: mpqcin.h:14
sc::LocalUKSEnergyContribution
Definition: ukstmpl.h:57

Generated at Sun Jan 26 2020 23:23:57 for MPQC 3.0.0-alpha using the documentation package Doxygen 1.8.16.