Tinker9 70bd052 (Thu Nov 9 12:11:35 2023 -0800)
Loading...
Searching...
No Matches
pair_chgtrn.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(real r, real cut, real off, real mscale, real f, real alphai,
11 real chgi, real alphak, real chgk, real elambda, e_prec& restrict e, e_prec& restrict de)
12{
13 f *= mscale;
14 real expi = REAL_EXP(-alphai * r);
15 real expk = REAL_EXP(-alphak * r);
16 e = -chgi * expk - chgk * expi;
17 e *= f * elambda;
18 if CONSTEXPR (DO_G) {
19 de = chgi * expk * alphak + chgk * expi * alphai;
20 de *= f * elambda;
21 }
22 if (r > cut) {
23 real taper, dtaper;
24 switchTaper5<DO_G>(r, cut, off, taper, dtaper);
25 if CONSTEXPR (DO_G) de = e * dtaper + de * taper;
26 e *= taper;
27 }
28}
29}
#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(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: pair_chgtrn.h:10