Skip to content

Commit 5df4b15

Browse files
committed
Update erepel and edisp
1 parent 21fd0d5 commit 5df4b15

File tree

14 files changed

+166
-160
lines changed

14 files changed

+166
-160
lines changed

ext/ext/y3/edisp_cu1.yaml

Lines changed: 14 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -30,19 +30,19 @@ EXTRA_PARAMS: |
3030
# IMPLICIT_PARAMS:
3131

3232
I_VARIABLES:
33-
- register real xi from:x
34-
- register real yi from:y
35-
- register real zi from:z
36-
- register real ci from:csix
37-
- register real ai from:adisp
38-
- register int imut from:mut
33+
- register real xi from:x
34+
- register real yi from:y
35+
- register real zi from:z
36+
- register real ci from:csix
37+
- register real ai from:adisp
38+
- register int imut from:mut
3939
K_VARIABLES:
40-
- register real xk from:x
41-
- register real yk from:y
42-
- register real zk from:z
43-
- register real ck from:csix
44-
- register real ak from:adisp
45-
- register int kmut from:mut
40+
- register real xk from:x
41+
- register real yk from:y
42+
- register real zk from:z
43+
- register real ck from:csix
44+
- register real ak from:adisp
45+
- register int kmut from:mut
4646
I_FORCE:
4747
- register real gxi addto:gx
4848
- register real gyi addto:gy
@@ -61,8 +61,7 @@ SCALED_PAIRWISE_INTERACTION: |
6161
real r = REAL_SQRT(r2);
6262
real rr1 = REAL_RECIP(r);
6363
real e, de;
64-
real vlambda = 1;
65-
vlambda = pair_vlambda(vlam, vcouple, @imut@, @kmut@);
64+
real vlambda = pair_vlambda(vlam, vcouple, @imut@, @kmut@);
6665
pair_disp<do_g, DTYP, 0, 1>(r, r2, rr1,
6766
scalea, aewald, @ci@, @ai@, @ck@, @ak@, vlambda, cut, off, e, de);
6867
if CONSTEXPR (do_e) {
@@ -103,8 +102,7 @@ FULL_PAIRWISE_INTERACTION: |
103102
real r = REAL_SQRT(r2);
104103
real rr1 = REAL_RECIP(r);
105104
real e, de;
106-
real vlambda = 1;
107-
vlambda = pair_vlambda(vlam, vcouple, @imut@, @kmut@);
105+
real vlambda = pair_vlambda(vlam, vcouple, @imut@, @kmut@);
108106
pair_disp<do_g, DTYP, 1, 1>(r, r2, rr1,
109107
1, aewald, @ci@, @ai@, @ck@, @ak@, vlambda, cut, off, e, de);
110108
if CONSTEXPR (do_e) {

ext/ext/y3/erepel_cu1.yaml

Lines changed: 8 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -29,10 +29,10 @@ EXTRA_PARAMS: |
2929
, real *restrict trqy
3030
, real *restrict trqz
3131
, const real(*restrict rpole)[10]
32-
, const real *restrict sizpr
33-
, const real *restrict elepr
32+
, const real* restrict sizpr
33+
, const real* restrict elepr
3434
, const real* restrict dmppr
35-
, const int* restrict mut
35+
, const int* restrict mut
3636
, real vlam
3737
, Vdw vcouple
3838
# IMPLICIT_PARAMS:
@@ -54,7 +54,7 @@ I_VARIABLES:
5454
- shared real sizi from:sizpr
5555
- shared real dmpi from:dmppr
5656
- shared real vali from:elepr
57-
- shared int imut from:mut
57+
- shared int imut from:mut
5858
K_VARIABLES:
5959
- shared real xk from:x
6060
- shared real yk from:y
@@ -72,7 +72,7 @@ K_VARIABLES:
7272
- register real sizk from:sizpr
7373
- register real dmpk from:dmppr
7474
- register real valk from:elepr
75-
- register int kmut from:mut
75+
- register int kmut from:mut
7676
I_FORCE:
7777
- register real gxi addto:gx
7878
- register real gyi addto:gy
@@ -100,14 +100,13 @@ FULL_PAIRWISE_INTERACTION: |
100100
101101
real r2 = image2(xr, yr, zr);
102102
if (r2 <= off * off and incl) {
103-
real vlambda = 1;
104-
vlambda = pair_vlambda(vlam, vcouple, @imut@, @kmut@);
103+
real vlambda = pair_vlambda(vlam, vcouple, @imut@, @kmut@);
105104
pair_repel<do_g, 1>( //
106-
r2, scalea, cut, off, xr, yr, zr,
105+
r2, scalea, vlambda, cut, off, xr, yr, zr,
107106
@sizi@, @dmpi@, @vali@, @ci@, @dix@, @diy@, @diz@, @qixx@, @qixy@,
108107
@qixz@, @qiyy@, @qiyz@, @qizz@,
109108
@sizk@, @dmpk@, @valk@, @ck@, @dkx@, @dky@, @dkz@, @qkxx@, @qkxy@,
110-
@qkxz@, @qkyy@, @qkyz@, @qkzz@, vlambda,
109+
@qkxz@, @qkyy@, @qkyz@, @qkzz@,
111110
e, pgrad);
112111
113112
if CONSTEXPR (do_a)

include/ff/evdw.h

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -59,7 +59,7 @@ enum class Vdw : int
5959

6060
namespace tinker {
6161
/// \ingroup vdw
62-
void softcoreData(RcOp);
62+
void vdwSoftcoreData(RcOp);
6363
/// \ingroup vdw
6464
void evdwData(RcOp);
6565
/// \ingroup vdw

include/seq/pair_disp.h

Lines changed: 52 additions & 26 deletions
Original file line numberDiff line numberDiff line change
@@ -4,19 +4,31 @@
44
#include "math/switch.h"
55
#include "seq/add.h"
66
#include "seq/damp_hippodisp.h"
7+
#include "seq/pair_vlambda.h"
78
#include "seq/seq.h"
89

910
namespace tinker {
1011
#pragma acc routine seq
1112
template <bool DO_G, class DTYP, int SCALE>
1213
SEQ_CUDA
13-
void pair_disp_obsolete(real r, real r2, real rr1, //
14-
real dspscale, real aewald, real ci, real ai, real ck, real ak,
15-
real edcut, real edoff, real& restrict e, real& restrict de)
14+
void pair_disp_obsolete(real r,
15+
real r2,
16+
real rr1,
17+
real dspscale,
18+
real aewald,
19+
real ci,
20+
real ai,
21+
real ck,
22+
real ak,
23+
real edcut,
24+
real edoff,
25+
real& restrict e,
26+
real& restrict de)
1627
{
1728
if (r > edoff) {
1829
e = 0;
19-
if CONSTEXPR (DO_G) de = 0;
30+
if CONSTEXPR (DO_G)
31+
de = 0;
2032
return;
2133
}
2234

@@ -62,10 +74,12 @@ void pair_disp_obsolete(real r, real r2, real rr1, //
6274
expi = REAL_EXP(-di);
6375
real term = ((((di + 5) * di + 17) * di / 96 + 0.5f) * di + 1) * di + 1;
6476
damp = 1 - term * expi;
65-
if CONSTEXPR (DO_G) ddamp = ai * expi * di2 * ((di2 - 3) * di - 3) / 96;
77+
if CONSTEXPR (DO_G)
78+
ddamp = ai * expi * di2 * ((di2 - 3) * di - 3) / 96;
6679
}
6780

68-
if CONSTEXPR (SCALE == 1) dspscale = 1;
81+
if CONSTEXPR (SCALE == 1)
82+
dspscale = 1;
6983

7084
if CONSTEXPR (eq<DTYP, DEWALD>()) {
7185
real ralpha2 = r2 * aewald * aewald;
@@ -75,8 +89,7 @@ void pair_disp_obsolete(real r, real r2, real rr1, //
7589
e = -ci * ck * rr6 * (dspscale * damp * damp + expa - 1);
7690
if CONSTEXPR (DO_G) {
7791
real rterm = -ralpha2 * ralpha2 * ralpha2 * rr1 * expterm;
78-
de = -6 * e * rr1
79-
- ci * ck * rr6 * (rterm + 2 * dspscale * damp * ddamp);
92+
de = -6 * e * rr1 - ci * ck * rr6 * (rterm + 2 * dspscale * damp * ddamp);
8093
}
8194
} else if CONSTEXPR (eq<DTYP, NON_EWALD_TAPER>()) {
8295
e = -ci * ck * rr6;
@@ -88,24 +101,38 @@ void pair_disp_obsolete(real r, real r2, real rr1, //
88101
if (r > edcut) {
89102
real taper, dtaper;
90103
switchTaper5<DO_G>(r, edcut, edoff, taper, dtaper);
91-
if CONSTEXPR (DO_G) de = e * dtaper + de * taper;
104+
if CONSTEXPR (DO_G)
105+
de = e * dtaper + de * taper;
92106
e = e * taper;
93107
}
94108
e *= dspscale;
95-
if CONSTEXPR (DO_G) de *= dspscale;
109+
if CONSTEXPR (DO_G)
110+
de *= dspscale;
96111
}
97112
}
98113

99114
#pragma acc routine seq
100-
template <bool DO_G, class DTYP, int SCALE, bool SOFTCORE>
115+
template <bool DO_G, class DTYP, int SCALE, int SOFTCORE>
101116
SEQ_CUDA
102-
void pair_disp(real r, real r2, real rr1, //
103-
real dspscale, real aewald, real ci, real ai, real ck, real ak, real vlambda,
104-
real edcut, real edoff, real& restrict e, real& restrict de)
117+
void pair_disp(real r,
118+
real r2,
119+
real rr1,
120+
real dspscale,
121+
real aewald,
122+
real ci,
123+
real ai,
124+
real ck,
125+
real ak,
126+
real vlambda,
127+
real edcut,
128+
real edoff,
129+
real& restrict e,
130+
real& restrict de)
105131
{
106132
if (r > edoff) {
107133
e = 0;
108-
if CONSTEXPR (DO_G) de = 0;
134+
if CONSTEXPR (DO_G)
135+
de = 0;
109136
return;
110137
}
111138

@@ -114,35 +141,32 @@ void pair_disp(real r, real r2, real rr1, //
114141
real dmpik[2], damp, ddamp;
115142
damp_hippodisp<DO_G>(dmpik, r, rr1, ai, ak);
116143
damp = dmpik[0];
117-
if CONSTEXPR (DO_G) ddamp = dmpik[1];
144+
if CONSTEXPR (DO_G)
145+
ddamp = dmpik[1];
118146

119-
if CONSTEXPR (SCALE == 1) dspscale = 1;
147+
if CONSTEXPR (SCALE == 1)
148+
dspscale = 1;
120149

121150
// set use of lambda scaling for decoupling or annihilation
122-
real vterm = 1;
123151
if CONSTEXPR (SOFTCORE) {
124152
real vlambda2 = vlambda * vlambda;
125153
real vlambda3 = vlambda2 * vlambda;
126-
vterm = (vlambda2 * vlambda2) / REAL_SQRT(1.0 + vlambda2 - vlambda3);
154+
real vterm = (vlambda2 * vlambda2) / REAL_SQRT(1.0 + vlambda2 - vlambda3);
127155
dspscale *= vterm;
128156
}
129157

130-
131158
if CONSTEXPR (eq<DTYP, DEWALD>()) {
132159
real ralpha2 = r2 * aewald * aewald;
133160
real term = 1 + ralpha2 + 0.5f * ralpha2 * ralpha2;
134161
real expterm = REAL_EXP(-ralpha2);
135162
real expa = expterm * term;
136-
137163
e = -ci * ck * rr6 * (dspscale * damp * damp + expa - 1);
138164
if CONSTEXPR (DO_G) {
139165
real rterm = -ralpha2 * ralpha2 * ralpha2 * rr1 * expterm;
140-
de = -6 * e * rr1
141-
- ci * ck * rr6 * (rterm + 2 * dspscale * damp * ddamp);
166+
de = -6 * e * rr1 - ci * ck * rr6 * (rterm + 2 * dspscale * damp * ddamp);
142167
}
143168
} else if CONSTEXPR (eq<DTYP, NON_EWALD_TAPER>()) {
144169
e = -ci * ck * rr6;
145-
146170
if CONSTEXPR (DO_G) {
147171
de = -6 * e * rr1;
148172
de = de * damp * damp + 2 * e * damp * ddamp;
@@ -151,11 +175,13 @@ void pair_disp(real r, real r2, real rr1, //
151175
if (r > edcut) {
152176
real taper, dtaper;
153177
switchTaper5<DO_G>(r, edcut, edoff, taper, dtaper);
154-
if CONSTEXPR (DO_G) de = e * dtaper + de * taper;
178+
if CONSTEXPR (DO_G)
179+
de = e * dtaper + de * taper;
155180
e = e * taper;
156181
}
157182
e *= dspscale;
158-
if CONSTEXPR (DO_G) de *= dspscale;
183+
if CONSTEXPR (DO_G)
184+
de *= dspscale;
159185
}
160186
}
161187
}

0 commit comments

Comments
 (0)