Skip to content

Commit ec9b2dd

Browse files
authored
Merge pull request #110 from roseane-reis/hippo-dev
Added HIPPO energy terms and unit tests
2 parents 94c9f6d + 7fc4937 commit ec9b2dd

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

58 files changed

+6709
-2299
lines changed

ext/ext/yaml/echgtrn_cu1.yaml

Lines changed: 44 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -58,17 +58,53 @@ K_VARIABLES:
5858
- def: register real chgk from:chgct
5959
- def: register real alphak from:dmpct
6060

61-
#SCALED_PAIRWISE_INTERACTION: |
61+
SCALED_PAIRWISE_INTERACTION: |
62+
real xr = xk - @xi@;
63+
real yr = yk - @yi@;
64+
real zr = zk - @zi@;
65+
real r2 = image2(xr, yr, zr);
66+
if (r2 <= off * off and incl) {
67+
real r = REAL_SQRT(r2);
68+
e_prec e, de;
69+
pair_chgtrn<do_g>(r, cut, off, scalea, f, @alphai@, @chgi@, alphak, chgk, e, de);
70+
if CONSTEXPR (do_a)
71+
if (e != 0 and scalea != 0)
72+
nctl += 1;
73+
if CONSTEXPR (do_e)
74+
ectl += cvt_to<ebuf_prec>(e);
75+
if CONSTEXPR (do_g) {
76+
de *= REAL_RECIP(r);
77+
real dedx = de * xr;
78+
real dedy = de * yr;
79+
real dedz = de * zr;
80+
81+
@gxi@ -= dedx;
82+
@gyi@ -= dedy;
83+
@gzi@ -= dedz;
84+
gxk += dedx;
85+
gyk += dedy;
86+
gzk += dedz;
87+
88+
if CONSTEXPR (do_v) {
89+
vctlxx += cvt_to<vbuf_prec>(xr * dedx);
90+
vctlyx += cvt_to<vbuf_prec>(yr * dedx);
91+
vctlzx += cvt_to<vbuf_prec>(zr * dedx);
92+
vctlyy += cvt_to<vbuf_prec>(yr * dedy);
93+
vctlzy += cvt_to<vbuf_prec>(zr * dedy);
94+
vctlzz += cvt_to<vbuf_prec>(zr * dedz);
95+
}
96+
}
97+
} // end if (include)
6298
6399
FULL_PAIRWISE_INTERACTION: |
64-
real xr = xk - xi;
65-
real yr = yk - yi;
66-
real zr = zk - zi;
100+
real xr = xk - @xi@;
101+
real yr = yk - @yi@;
102+
real zr = zk - @zi@;
67103
real r2 = image2(xr, yr, zr);
68104
if (r2 <= off * off and incl) {
69105
real r = REAL_SQRT(r2);
70106
e_prec e, de;
71-
pair_chgtrn<do_g>(r, cut, off, scalea, f, alphai, chgi, alphak, chgk, e, de);
107+
pair_chgtrn<do_g>(r, cut, off, 1, f, @alphai@, @chgi@, alphak, chgk, e, de);
72108
if CONSTEXPR (do_a)
73109
if (e != 0)
74110
nctl += 1;
@@ -80,9 +116,9 @@ FULL_PAIRWISE_INTERACTION: |
80116
real dedy = de * yr;
81117
real dedz = de * zr;
82118
83-
shgxi -= dedx;
84-
shgyi -= dedy;
85-
shgzi -= dedz;
119+
@gxi@ -= dedx;
120+
@gyi@ -= dedy;
121+
@gzi@ -= dedz;
86122
gxk += dedx;
87123
gyk += dedy;
88124
gzk += dedz;

ext/ext/yaml/empole_chgpen_cu1.yaml

Lines changed: 69 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
KERNEL_NAME: empole_chgpen_cu1
2-
TEMPLATE_PARAMS: template <class Ver, class ETYP, int CFLX>
2+
TEMPLATE_PARAMS: template <class Ver, class ETYP, bool CFLX>
33
CONSTEXPR_FLAGS: |
44
constexpr bool do_a = Ver::a;
55
constexpr bool do_e = Ver::e;
@@ -53,15 +53,15 @@ I_FORCE:
5353
- def: shared real txi addto:trqx
5454
- def: shared real tyi addto:trqy
5555
- def: shared real tzi addto:trqz
56-
- def: shared real poti addto:pot
56+
- def: shared real poti addto:pot onlyif:CFLX
5757
K_FORCE:
5858
- def: register real gxk addto:gx
5959
- def: register real gyk addto:gy
6060
- def: register real gzk addto:gz
6161
- def: register real txk addto:trqx
6262
- def: register real tyk addto:trqy
6363
- def: register real tzk addto:trqz
64-
- def: register real potk addto:pot
64+
- def: register real potk addto:pot onlyif:CFLX
6565

6666
I_VARIABLES:
6767
- def: shared real ci from:rpole,mpl_pme_0
@@ -92,12 +92,64 @@ K_VARIABLES:
9292
- def: register real alphak from:palpha
9393
- def: register real valk from:pval
9494

95-
#SCALED_PAIRWISE_INTERACTION: |
95+
SCALED_PAIRWISE_INTERACTION: |
96+
real xr = xk - @xi@;
97+
real yr = yk - @yi@;
98+
real zr = zk - @zi@;
99+
100+
real e;
101+
real pota, potb;
102+
PairMPoleGrad pgrad;
103+
zero(pgrad);
104+
105+
real r2 = image2(xr, yr, zr);
106+
if (r2 <= off * off and incl) {
107+
pair_mpole_chgpen<do_e, do_g, ETYP, CFLX>(
108+
r2, xr, yr, zr, scalea, //
109+
@ci@, @dix@, @diy@, @diz@, @corei@, @vali@, @alphai@, //
110+
@qixx@, @qixy@, @qixz@, @qiyy@, @qiyz@, @qizz@, //
111+
ck, dkx, dky, dkz, corek, valk, alphak, //
112+
qkxx, qkxy, qkxz, qkyy, qkyz, qkzz, //
113+
f, aewald, e, pota, potb, pgrad);
114+
115+
if CONSTEXPR (do_a)
116+
if (e != 0 and scalea != 0)
117+
nemtl += 1;
118+
if CONSTEXPR (do_e)
119+
emtl += cvt_to<ebuf_prec>(e);
120+
if CONSTEXPR (do_g) {
121+
@gxi@ += pgrad.frcx;
122+
@gyi@ += pgrad.frcy;
123+
@gzi@ += pgrad.frcz;
124+
gxk -= pgrad.frcx;
125+
gyk -= pgrad.frcy;
126+
gzk -= pgrad.frcz;
127+
128+
@txi@ += pgrad.ttmi[0];
129+
@tyi@ += pgrad.ttmi[1];
130+
@tzi@ += pgrad.ttmi[2];
131+
txk += pgrad.ttmk[0];
132+
tyk += pgrad.ttmk[1];
133+
tzk += pgrad.ttmk[2];
134+
}
135+
if CONSTEXPR (do_v) {
136+
vemtlxx += cvt_to<vbuf_prec>(-xr * pgrad.frcx);
137+
vemtlyx += cvt_to<vbuf_prec>(-0.5f * (yr * pgrad.frcx + xr * pgrad.frcy));
138+
vemtlzx += cvt_to<vbuf_prec>(-0.5f * (zr * pgrad.frcx + xr * pgrad.frcz));
139+
vemtlyy += cvt_to<vbuf_prec>(-yr * pgrad.frcy);
140+
vemtlzy += cvt_to<vbuf_prec>(-0.5f * (zr * pgrad.frcy + yr * pgrad.frcz));
141+
vemtlzz += cvt_to<vbuf_prec>(-zr * pgrad.frcz);
142+
}
143+
if CONSTEXPR (CFLX) {
144+
@poti@ += pota;
145+
potk += potb;
146+
}
147+
} // end if (include)
96148
97149
FULL_PAIRWISE_INTERACTION: |
98-
real xr = xk - xi;
99-
real yr = yk - yi;
100-
real zr = zk - zi;
150+
real xr = xk - @xi@;
151+
real yr = yk - @yi@;
152+
real zr = zk - @zi@;
101153
102154
real e;
103155
real pota, potb;
@@ -107,9 +159,9 @@ FULL_PAIRWISE_INTERACTION: |
107159
real r2 = image2(xr, yr, zr);
108160
if (r2 <= off * off and incl) {
109161
pair_mpole_chgpen<do_e, do_g, ETYP, CFLX>(
110-
r2, xr, yr, zr, scalea, //
111-
ci, dix, diy, diz, corei, vali, alphai, //
112-
qixx, qixy, qixz, qiyy, qiyz, qizz, //
162+
r2, xr, yr, zr, 1, //
163+
@ci@, @dix@, @diy@, @diz@, @corei@, @vali@, @alphai@, //
164+
@qixx@, @qixy@, @qixz@, @qiyy@, @qiyz@, @qizz@, //
113165
ck, dkx, dky, dkz, corek, valk, alphak, //
114166
qkxx, qkxy, qkxz, qkyy, qkyz, qkzz, //
115167
f, aewald, e, pota, potb, pgrad);
@@ -120,16 +172,16 @@ FULL_PAIRWISE_INTERACTION: |
120172
if CONSTEXPR (do_e)
121173
emtl += cvt_to<ebuf_prec>(e);
122174
if CONSTEXPR (do_g) {
123-
shgxi[klane] += pgrad.frcx;
124-
shgyi[klane] += pgrad.frcy;
125-
shgzi[klane] += pgrad.frcz;
175+
@gxi@ += pgrad.frcx;
176+
@gyi@ += pgrad.frcy;
177+
@gzi@ += pgrad.frcz;
126178
gxk -= pgrad.frcx;
127179
gyk -= pgrad.frcy;
128180
gzk -= pgrad.frcz;
129181
130-
shtxi[klane] += pgrad.ttmi[0];
131-
shtyi[klane] += pgrad.ttmi[1];
132-
shtzi[klane] += pgrad.ttmi[2];
182+
@txi@ += pgrad.ttmi[0];
183+
@tyi@ += pgrad.ttmi[1];
184+
@tzi@ += pgrad.ttmi[2];
133185
txk += pgrad.ttmk[0];
134186
tyk += pgrad.ttmk[1];
135187
tzk += pgrad.ttmk[2];
@@ -143,7 +195,7 @@ FULL_PAIRWISE_INTERACTION: |
143195
vemtlzz += cvt_to<vbuf_prec>(-zr * pgrad.frcz);
144196
}
145197
if CONSTEXPR (CFLX) {
146-
shpoti[klane] += pota;
198+
@poti@ += pota;
147199
potk += potb;
148200
}
149201
} // end if (include)

ext/ext/yaml/epolar_chgpen_cu1.yaml

Lines changed: 69 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -110,7 +110,74 @@ K_VARIABLES:
110110
- def: register real alphak from:palpha
111111
- def: register real valk from:pval
112112

113-
#SCALED_PAIRWISE_INTERACTION: |
113+
SCALED_PAIRWISE_INTERACTION: |
114+
real xr = xk - @xi@;
115+
real yr = yk - @yi@;
116+
real zr = zk - @zi@;
117+
118+
real e;
119+
real pota, potb;
120+
PairPolarGrad pgrad;
121+
zero(pgrad);
122+
123+
real r2 = image2(xr, yr, zr);
124+
if (r2 <= off * off and incl) {
125+
pair_polar_chgpen<do_e, do_g, ETYP, CFLX>( //
126+
r2, xr, yr, zr, scaleb, scalec, //
127+
@ci@, @dix@, @diy@, @diz@, @corei@, @vali@, @alphai@,
128+
@qixx@, @qixy@, @qixz@, @qiyy@, @qiyz@, @qizz@, @uix@, @uiy@, @uiz@, //
129+
ck, dkx, dky, dkz, corek, valk, alphak,
130+
qkxx, qkxy, qkxz, qkyy, qkyz, qkzz, ukx, uky, ukz, f, aewald, //
131+
e, pota, potb, pgrad);
132+
133+
if CONSTEXPR (do_a)
134+
if (e != 0 and scaleb != 0)
135+
nptl += 1;
136+
if CONSTEXPR (do_e)
137+
eptl += cvt_to<ebuf_prec>(e);
138+
if CONSTEXPR (do_g) {
139+
@gxi@ += pgrad.frcx;
140+
@gyi@ += pgrad.frcy;
141+
@gzi@ += pgrad.frcz;
142+
gxk -= pgrad.frcx;
143+
gyk -= pgrad.frcy;
144+
gzk -= pgrad.frcz;
145+
146+
147+
@txi@ += pgrad.ufldi[0];
148+
@tyi@ += pgrad.ufldi[1];
149+
@tzi@ += pgrad.ufldi[2];
150+
txk += pgrad.ufldk[0];
151+
tyk += pgrad.ufldk[1];
152+
tzk += pgrad.ufldk[2];
153+
154+
155+
@dui0@ += pgrad.dufldi[0];
156+
@dui1@ += pgrad.dufldi[1];
157+
@dui2@ += pgrad.dufldi[2];
158+
@dui3@ += pgrad.dufldi[3];
159+
@dui4@ += pgrad.dufldi[4];
160+
@dui5@ += pgrad.dufldi[5];
161+
duk0 += pgrad.dufldk[0];
162+
duk1 += pgrad.dufldk[1];
163+
duk2 += pgrad.dufldk[2];
164+
duk3 += pgrad.dufldk[3];
165+
duk4 += pgrad.dufldk[4];
166+
duk5 += pgrad.dufldk[5];
167+
}
168+
if CONSTEXPR (do_v) {
169+
vptlxx += cvt_to<vbuf_prec>(-xr * pgrad.frcx);
170+
vptlyx += cvt_to<vbuf_prec>(-0.5f * (yr * pgrad.frcx + xr * pgrad.frcy));
171+
vptlzx += cvt_to<vbuf_prec>(-0.5f * (zr * pgrad.frcx + xr * pgrad.frcz));
172+
vptlyy += cvt_to<vbuf_prec>(-yr * pgrad.frcy);
173+
vptlzy += cvt_to<vbuf_prec>(-0.5f * (zr * pgrad.frcy + yr * pgrad.frcz));
174+
vptlzz += cvt_to<vbuf_prec>(-zr * pgrad.frcz);
175+
}
176+
if CONSTEXPR (CFLX) {
177+
@poti@ += pota;
178+
potk += potb;
179+
}
180+
} // end if (include)
114181
115182
FULL_PAIRWISE_INTERACTION: |
116183
real xr = xk - @xi@;
@@ -125,7 +192,7 @@ FULL_PAIRWISE_INTERACTION: |
125192
real r2 = image2(xr, yr, zr);
126193
if (r2 <= off * off and incl) {
127194
pair_polar_chgpen<do_e, do_g, ETYP, CFLX>( //
128-
r2, xr, yr, zr, scaleb, scalec, //
195+
r2, xr, yr, zr, 1, 1, //
129196
@ci@, @dix@, @diy@, @diz@, @corei@, @vali@, @alphai@,
130197
@qixx@, @qixy@, @qixz@, @qiyy@, @qiyz@, @qizz@, @uix@, @uiy@, @uiz@, //
131198
ck, dkx, dky, dkz, corek, valk, alphak,

ext/ext/yaml/erepel_cu1.yaml

Lines changed: 12 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -94,9 +94,9 @@ K_VARIABLES:
9494
#SCALED_PAIRWISE_INTERACTION: |
9595

9696
FULL_PAIRWISE_INTERACTION: |
97-
real xr = xk - xi;
98-
real yr = yk - yi;
99-
real zr = zk - zi;
97+
real xr = xk - @xi@;
98+
real yr = yk - @yi@;
99+
real zr = zk - @zi@;
100100
101101
real e;
102102
PairRepelGrad pgrad;
@@ -105,9 +105,9 @@ FULL_PAIRWISE_INTERACTION: |
105105
real r2 = image2(xr, yr, zr);
106106
if (r2 <= off * off and incl) {
107107
pair_repel<do_g>( //
108-
r2, scalea, cut, off, xr, yr, zr, sizi,
109-
dmpi, vali, ci, dix, diy, diz, qixx, qixy,
110-
qixz, qiyy, qiyz, qizz, sizk, dmpk, valk, ck,
108+
r2, scalea, cut, off, xr, yr, zr, @sizi@,
109+
@dmpi@, @vali@, @ci@, @dix@, @diy@, @diz@, @qixx@, @qixy@,
110+
@qixz@, @qiyy@, @qiyz@, @qizz@, sizk, dmpk, valk, ck,
111111
dkx, dky, dkz, qkxx, qkxy, qkxz, qkyy,
112112
qkyz, qkzz, e, pgrad);
113113
@@ -117,17 +117,17 @@ FULL_PAIRWISE_INTERACTION: |
117117
if CONSTEXPR (do_e)
118118
ertl += cvt_to<ebuf_prec>(e);
119119
if CONSTEXPR (do_g) {
120-
shgxi[klane] += pgrad.frcx;
121-
shgyi[klane] += pgrad.frcy;
122-
shgzi[klane] += pgrad.frcz;
120+
@gxi@ += pgrad.frcx;
121+
@gyi@ += pgrad.frcy;
122+
@gzi@ += pgrad.frcz;
123123
gxk -= pgrad.frcx;
124124
gyk -= pgrad.frcy;
125125
gzk -= pgrad.frcz;
126126
127127
128-
shtxi[klane] += pgrad.ttqi[0];
129-
shtyi[klane] += pgrad.ttqi[1];
130-
shtzi[klane] += pgrad.ttqi[2];
128+
@txi@ += pgrad.ttqi[0];
129+
@tyi@ += pgrad.ttqi[1];
130+
@tzi@ += pgrad.ttqi[2];
131131
txk += pgrad.ttqk[0];
132132
tyk += pgrad.ttqk[1];
133133
tzk += pgrad.ttqk[2];

include/echgtrn.h

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -11,4 +11,5 @@ namespace tinker {
1111
void echgtrn_data(rc_op op);
1212
void echgtrn(int vers);
1313
void echgtrn_cu(int);
14+
void echgtrn_acc(int);
1415
}

include/empole_chgpen.h

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -15,9 +15,9 @@ void empole_chgpen_ewald_real_self(int vers, int use_cf);
1515
void empole_chgpen_ewald_recip(int vers, int use_cf);
1616

1717

18-
void empole_chgpen_nonewald_acc(int vers);
18+
void empole_chgpen_nonewald_acc(int vers, int use_cf);
1919
void empole_chgpen_ewald_recip_acc(int vers, int use_cf);
20-
void empole_chgpen_ewald_real_self_acc(int vers);
20+
void empole_chgpen_ewald_real_self_acc(int vers, int use_cf);
2121
void empole_chgpen_nonewald_cu(int vers, int use_cf);
2222
void empole_chgpen_ewald_real_self_cu(int vers, int use_cf);
2323
}

include/epolar_chgpen.h

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -22,8 +22,8 @@ void epolar_chgpen_ewald_recip_self(int vers, int use_cf);
2222

2323
// see also subroutine epolar0e in epolar.f
2424

25-
void epolar_chgpen_nonewald_acc(int vers, const real (*d)[3]);
26-
void epolar_chgpen_ewald_real_acc(int vers, const real (*d)[3]);
25+
void epolar_chgpen_nonewald_acc(int vers, int use_cf, const real (*d)[3]);
26+
void epolar_chgpen_ewald_real_acc(int vers, int use_cf, const real (*d)[3]);
2727
void epolar_chgpen_ewald_recip_self_acc(int vers, int use_cf,
2828
const real (*d)[3]);
2929
void epolar_chgpen_nonewald_cu(int vers, int use_cf, const real (*d)[3]);

include/erepel.h

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -9,4 +9,5 @@ namespace tinker {
99
void erepel_data(rc_op op);
1010
void erepel(int vers);
1111
void erepel_cu(int);
12+
void erepel_acc(int);
1213
}

0 commit comments

Comments
 (0)