Tinker9 70bd052 (Thu Nov 9 12:11:35 2023 -0800)
Loading...
Searching...
No Matches
pairchgtrnaplus.h
1#pragma once
2#include "math/libfunc.h"
3#include "math/switch.h"
4#include "seq/seq.h"
5
6namespace tinker {
7#pragma acc routine seq
8template <bool DO_G>
10void pair_chgtrn_aplus(real r, real cut, real off, real mscale, real f,
11 real alphai, real chgi, real alphak, real chgk, real elambda, e_prec& restrict e,
12 e_prec& restrict de)
13{
14 f *= mscale;
15 real alphaik = 0.5 * (alphai + alphak);
16 real chgik = REAL_SQRT(chgi * chgk);
17 e = -chgik * REAL_EXP(-alphaik * r);
18 e *= f * elambda;
19 if CONSTEXPR (DO_G) {
20 de = alphaik * chgik * REAL_EXP(-alphaik * r);
21 de *= f * elambda;
22 }
23 if (r > cut) {
24 real taper, dtaper;
25 switchTaper5<DO_G>(r, cut, off, taper, dtaper);
26 if CONSTEXPR (DO_G) de = e * dtaper + de * taper;
27 e *= taper;
28 }
29}
30}
#define SEQ_CUDA
Definition: acc/seqdef.h:12
#define restrict
Definition: macro.h:51
#define CONSTEXPR
Definition: macro.h:61
float real
Definition: precision.h:80
real e_prec
Floating-point type for the pairwise energy components.
Definition: precision.h:94
Definition: testrt.h:9
__device__ void pair_chgtrn_aplus(real r, real cut, real off, real mscale, real f, real alphai, real chgi, real alphak, real chgk, real elambda, e_prec &__restrict__ e, e_prec &__restrict__ de)
Definition: pairchgtrnaplus.h:10