Tinker9 70bd052 (Thu Nov 9 12:11:35 2023 -0800)
Loading...
Searching...
No Matches
pair_hal.h
1#pragma once
2#include "math/libfunc.h"
3#include "math/switch.h"
4#include "seq/seq.h"
5
6namespace tinker {
10#pragma acc routine seq
11template <bool DO_G>
13void pair_hal(real rik, real rv, real eps, real vscalek, real vlambda, //
15 real& restrict e, real& restrict de)
16{
17 eps *= vscalek;
18 real rho = rik * REAL_RECIP(rv);
19 real rho6 = REAL_POW(rho, 6);
20 real rho7 = rho6 * rho;
21 eps *= REAL_POW(vlambda, scexp);
22 real scal = scalpha * REAL_POW(1 - vlambda, 2);
23 real s1 = REAL_RECIP(scal + REAL_POW(rho + dhal, 7));
24 real s2 = REAL_RECIP(scal + rho7 + ghal);
25 real t1 = REAL_POW(1 + dhal, 7) * s1;
26 real t2 = (1 + ghal) * s2;
27 e = eps * t1 * (t2 - 2);
28 if CONSTEXPR (DO_G) {
29 real dt1drho = -7 * REAL_POW(rho + dhal, 6) * t1 * s1;
30 real dt2drho = -7 * rho6 * t2 * s2;
31 de = eps * (dt1drho * (t2 - 2) + t1 * dt2drho) * REAL_RECIP(rv);
32 }
33}
34
38#pragma acc routine seq
39template <bool DO_G, int SCALE>
41void pair_hal_v2(real r, real vscale, real rv, real eps, real evcut, real evoff,
43 real& restrict e, real& restrict de)
44{
45 if CONSTEXPR (SCALE != 1) eps *= vscale;
46 real rho = r * REAL_RECIP(rv);
47 real rho6 = REAL_POW(rho, 6);
48 real rho7 = rho6 * rho;
49 eps *= REAL_POW(vlambda, scexp);
50 real scal = scalpha * REAL_POW(1 - vlambda, 2);
51 real s1 = REAL_RECIP(scal + REAL_POW(rho + dhal, 7));
52 real s2 = REAL_RECIP(scal + rho7 + ghal);
53 real t1 = REAL_POW(1 + dhal, 7) * s1;
54 real t2 = (1 + ghal) * s2;
55 e = eps * t1 * (t2 - 2);
56 if CONSTEXPR (DO_G) {
57 real dt1drho = -7 * REAL_POW(rho + dhal, 6) * t1 * s1;
58 real dt2drho = -7 * rho6 * t2 * s2;
59 de = eps * (dt1drho * (t2 - 2) + t1 * dt2drho) * REAL_RECIP(rv);
60 }
61 if (r > evcut) {
62 real taper, dtaper;
63 switchTaper5<DO_G>(r, evcut, evoff, taper, dtaper);
64 if CONSTEXPR (DO_G) de = e * dtaper + de * taper;
65 e = e * taper;
66 }
67}
68}
#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 dhal
Value of in buffered 14-7 vdw potential.
real scalpha
Scale factor for soft core buffered 14-7 potential.
__device__ void pair_hal(real rik, real rv, real eps, real vscalek, real vlambda, real ghal, real dhal, real scexp, real scalpha, real &__restrict__ e, real &__restrict__ de)
Definition: pair_hal.h:13
__device__ void pair_hal_v2(real r, real vscale, real rv, real eps, real evcut, real evoff, real vlambda, real ghal, real dhal, real scexp, real scalpha, real &__restrict__ e, real &__restrict__ de)
Definition: pair_hal.h:41
real ghal
Value of in buffered 14-7 vdw potential.
real scexp
Exponential factor for soft core buffered 14-7 potential.
Definition: testrt.h:9