1010#include < cassert>
1111
1212namespace tinker {
13- #define DEVICE_PTRS x, y, z, dectx, decty, dectz, chgct, dmpct, nct, ect, vir_ect
13+ #define DEVICE_PTRS x, y, z, dectx, decty, dectz, chgct, dmpct, mut, elam, nct, ect, vir_ect
1414template <class Ver >
1515static void echgtrnAplus_acc1 ()
1616{
@@ -42,6 +42,7 @@ static void echgtrnAplus_acc1()
4242 real zi = z[i];
4343 real chgi = chgct[i];
4444 real alphai = dmpct[i];
45+ int imut = mut[i];
4546
4647 MAYBE_UNUSED real gxi = 0 , gyi = 0 , gzi = 0 ;
4748
@@ -57,12 +58,14 @@ static void echgtrnAplus_acc1()
5758 real zr = z[k] - zi;
5859 real chgk = chgct[k];
5960 real alphak = dmpct[k];
61+ int kmut = mut[k];
6062
6163 real r2 = image2 (xr, yr, zr);
6264 if (r2 <= off2) {
6365 real r = REAL_SQRT (r2);
66+ real elambda = (imut || kmut ? elam : 1 );
6467 MAYBE_UNUSED real e, de;
65- pair_chgtrn_aplus<do_g>(r, cut, off, 1 , f, alphai, chgi, alphak, chgk, e, de);
68+ pair_chgtrn_aplus<do_g>(r, cut, off, 1 , f, alphai, chgi, alphak, chgk, elambda, e, de);
6669
6770 if CONSTEXPR (do_a)
6871 if (e != 0 )
@@ -121,8 +124,10 @@ static void echgtrnAplus_acc1()
121124 real zi = z[i];
122125 real chgi = chgct[i];
123126 real alphai = dmpct[i];
127+ int imut = mut[i];
124128 real chgk = chgct[k];
125129 real alphak = dmpct[k];
130+ int kmut = mut[k];
126131
127132 real xr = x[k] - xi;
128133 real yr = y[k] - yi;
@@ -131,12 +136,13 @@ static void echgtrnAplus_acc1()
131136 real r2 = image2 (xr, yr, zr);
132137 if (r2 <= off2) {
133138 real r = REAL_SQRT (r2);
139+ real elambda = (imut || kmut ? elam : 1 );
134140 MAYBE_UNUSED real e, de;
135- pair_chgtrn_aplus<do_g>(r, cut, off, mscale, f, alphai, chgi, alphak, chgk, e, de);
141+ pair_chgtrn_aplus<do_g>(r, cut, off, mscale, f, alphai, chgi, alphak, chgk, elambda, e, de);
136142
137143 if CONSTEXPR (do_a) {
138144 real e1 , de1;
139- pair_chgtrn_aplus<do_g>(r, cut, off, 1 , f, alphai, chgi, alphak, chgk, e1 , de1);
145+ pair_chgtrn_aplus<do_g>(r, cut, off, 1 , f, alphai, chgi, alphak, chgk, elambda, e1 , de1);
140146
141147 if (mscale == -1 and e1 != 0 )
142148 atomic_add (-1 , nct, offset);
0 commit comments