Skip to content
GitLab
Menu
Projects
Groups
Snippets
Loading...
Help
Help
Support
Community forum
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in
Toggle navigation
Menu
Open sidebar
tsoc
openmm
Commits
cd0ee42e
"wrappers/python/src/vscode:/vscode.git/clone" did not exist on "2fbed592588e968fc244f6a60718db1e7fed2bec"
Commit
cd0ee42e
authored
Apr 09, 2014
by
peastman
Browse files
Fixed bug in OpenCL implementation of GBSA on CPU devices
parent
44d4d6b2
Changes
1
Show whitespace changes
Inline
Side-by-side
Showing
1 changed file
with
21 additions
and
4 deletions
+21
-4
platforms/opencl/src/kernels/gbsaObc_cpu.cl
platforms/opencl/src/kernels/gbsaObc_cpu.cl
+21
-4
No files found.
platforms/opencl/src/kernels/gbsaObc_cpu.cl
View file @
cd0ee42e
...
...
@@ -468,11 +468,16 @@ __kernel void computeGBSAForce1(
real expTerm = EXP(-D_ij);
real denominator2 = r2 + alpha2_ij*expTerm;
real denominator = SQRT(denominator2);
real tempEnergy = (PREFACTOR*posq1.w*posq2.w)*RECIP(denominator);
real scaledChargeProduct = PREFACTOR*posq1.w*posq2.w;
real tempEnergy = scaledChargeProduct*RECIP(denominator);
real Gpol = tempEnergy*RECIP(denominator2);
real dGpol_dalpha2_ij = -0.5f*Gpol*expTerm*(1.0f+D_ij);
real dEdR = Gpol*(1.0f - 0.25f*expTerm);
force.w += dGpol_dalpha2_ij*bornRadius2;
#ifdef USE_CUTOFF
if (atom1 != y*TILE_SIZE+j)
tempEnergy -= scaledChargeProduct/CUTOFF;
#endif
energy += 0.5f*tempEnergy;
delta.xyz *= dEdR;
force.xyz -= delta.xyz;
...
...
@@ -527,11 +532,15 @@ __kernel void computeGBSAForce1(
real expTerm = EXP(-D_ij);
real denominator2 = r2 + alpha2_ij*expTerm;
real denominator = SQRT(denominator2);
real tempEnergy = (PREFACTOR*posq1.w*posq2.w)*RECIP(denominator);
real scaledChargeProduct = PREFACTOR*posq1.w*posq2.w;
real tempEnergy = scaledChargeProduct*RECIP(denominator);
real Gpol = tempEnergy*RECIP(denominator2);
real dGpol_dalpha2_ij = -0.5f*Gpol*expTerm*(1.0f+D_ij);
real dEdR = Gpol*(1.0f - 0.25f*expTerm);
force.w += dGpol_dalpha2_ij*bornRadius2;
#ifdef USE_CUTOFF
tempEnergy -= scaledChargeProduct/CUTOFF;
#endif
energy += tempEnergy;
delta.xyz *= dEdR;
force.xyz -= delta.xyz;
...
...
@@ -684,11 +693,15 @@ __kernel void computeGBSAForce1(
real
expTerm
=
EXP
(
-D_ij
)
;
real
denominator2
=
r2
+
alpha2_ij*expTerm
;
real
denominator
=
SQRT
(
denominator2
)
;
real
tempEnergy
=
(
PREFACTOR*posq1.w*posq2.w
)
*RECIP
(
denominator
)
;
real
scaledChargeProduct
=
PREFACTOR*posq1.w*posq2.w
;
real
tempEnergy
=
scaledChargeProduct*RECIP
(
denominator
)
;
real
Gpol
=
tempEnergy*RECIP
(
denominator2
)
;
real
dGpol_dalpha2_ij
=
-0.5f*Gpol*expTerm*
(
1.0f+D_ij
)
;
real
dEdR
=
Gpol*
(
1.0f
-
0.25f*expTerm
)
;
force.w
+=
dGpol_dalpha2_ij*bornRadius2
;
#
ifdef
USE_CUTOFF
tempEnergy
-=
scaledChargeProduct/CUTOFF
;
#
endif
energy
+=
tempEnergy
;
delta.xyz
*=
dEdR
;
force.xyz
-=
delta.xyz
;
...
...
@@ -744,11 +757,15 @@ __kernel void computeGBSAForce1(
real
expTerm
=
EXP
(
-D_ij
)
;
real
denominator2
=
r2
+
alpha2_ij*expTerm
;
real
denominator
=
SQRT
(
denominator2
)
;
real
tempEnergy
=
(
PREFACTOR*posq1.w*posq2.w
)
*RECIP
(
denominator
)
;
real
scaledChargeProduct
=
PREFACTOR*posq1.w*posq2.w
;
real
tempEnergy
=
scaledChargeProduct*RECIP
(
denominator
)
;
real
Gpol
=
tempEnergy*RECIP
(
denominator2
)
;
real
dGpol_dalpha2_ij
=
-0.5f*Gpol*expTerm*
(
1.0f+D_ij
)
;
real
dEdR
=
Gpol*
(
1.0f
-
0.25f*expTerm
)
;
force.w
+=
dGpol_dalpha2_ij*bornRadius2
;
#
ifdef
USE_CUTOFF
tempEnergy
-=
scaledChargeProduct/CUTOFF
;
#
endif
energy
+=
tempEnergy
;
delta.xyz
*=
dEdR
;
force.xyz
-=
delta.xyz
;
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
.
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment