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
9294047f
"openmmapi/vscode:/vscode.git/clone" did not exist on "077241d4970a5c0395e59a061c8c07e43b28105a"
Commit
9294047f
authored
Jan 31, 2011
by
Mark Friedrichs
Browse files
Fix for GbsaObc Born force w/ cutoffs
parent
b9b7b40d
Changes
2
Show whitespace changes
Inline
Side-by-side
Showing
2 changed files
with
10 additions
and
5 deletions
+10
-5
platforms/opencl/src/kernels/gbsaObc_default.cl
platforms/opencl/src/kernels/gbsaObc_default.cl
+4
-2
platforms/opencl/src/kernels/gbsaObc_nvidia.cl
platforms/opencl/src/kernels/gbsaObc_nvidia.cl
+6
-3
No files found.
platforms/opencl/src/kernels/gbsaObc_default.cl
View file @
9294047f
...
@@ -274,12 +274,13 @@ void computeGBSAForce1(__global float4* forceBuffers, __global float* energyBuff
...
@@ -274,12 +274,13 @@ void computeGBSAForce1(__global float4* forceBuffers, __global float* energyBuff
float
tempEnergy
=
(
PREFACTOR*posq1.w*posq2.w
)
*RECIP
(
denominator
)
;
float
tempEnergy
=
(
PREFACTOR*posq1.w*posq2.w
)
*RECIP
(
denominator
)
;
float
Gpol
=
tempEnergy*RECIP
(
denominator2
)
;
float
Gpol
=
tempEnergy*RECIP
(
denominator2
)
;
float
dGpol_dalpha2_ij
=
-0.5f*Gpol*expTerm*
(
1.0f+D_ij
)
;
float
dGpol_dalpha2_ij
=
-0.5f*Gpol*expTerm*
(
1.0f+D_ij
)
;
force.w
+=
select
(
0.0f,
dGpol_dalpha2_ij*bornRadius2,
includeInteraction
)
;
float
dEdR
=
Gpol*
(
1.0f
-
0.25f*expTerm
)
;
float
dEdR
=
Gpol*
(
1.0f
-
0.25f*expTerm
)
;
#
ifdef
USE_CUTOFF
#
ifdef
USE_CUTOFF
dEdR
=
select
(
dEdR,
0.0f,
r2
>
CUTOFF_SQUARED
)
;
dEdR
=
select
(
dEdR,
0.0f,
r2
>
CUTOFF_SQUARED
)
;
tempEnergy
=
select
(
tempEnergy,
0.0f,
r2
>
CUTOFF_SQUARED
)
;
tempEnergy
=
select
(
tempEnergy,
0.0f,
r2
>
CUTOFF_SQUARED
)
;
dGpol_dalpha2_ij
=
select
(
dGpol_dalpha2_ij,
0.0f,
r2
>
CUTOFF_SQUARED
)
;
#
endif
#
endif
force.w
+=
select
(
0.0f,
dGpol_dalpha2_ij*bornRadius2,
includeInteraction
)
;
energy
+=
select
(
0.0f,
0.5f*tempEnergy,
includeInteraction
)
;
energy
+=
select
(
0.0f,
0.5f*tempEnergy,
includeInteraction
)
;
delta.xyz
*=
select
(
0.0f,
dEdR,
includeInteraction
)
;
delta.xyz
*=
select
(
0.0f,
dEdR,
includeInteraction
)
;
force.xyz
-=
delta.xyz
;
force.xyz
-=
delta.xyz
;
...
@@ -342,12 +343,13 @@ void computeGBSAForce1(__global float4* forceBuffers, __global float* energyBuff
...
@@ -342,12 +343,13 @@ void computeGBSAForce1(__global float4* forceBuffers, __global float* energyBuff
float
tempEnergy
=
(
PREFACTOR*posq1.w*posq2.w
)
*RECIP
(
denominator
)
;
float
tempEnergy
=
(
PREFACTOR*posq1.w*posq2.w
)
*RECIP
(
denominator
)
;
float
Gpol
=
tempEnergy*RECIP
(
denominator2
)
;
float
Gpol
=
tempEnergy*RECIP
(
denominator2
)
;
float
dGpol_dalpha2_ij
=
-0.5f*Gpol*expTerm*
(
1.0f+D_ij
)
;
float
dGpol_dalpha2_ij
=
-0.5f*Gpol*expTerm*
(
1.0f+D_ij
)
;
force.w
+=
select
(
0.0f,
dGpol_dalpha2_ij*bornRadius2,
includeInteraction
)
;
float
dEdR
=
Gpol*
(
1.0f
-
0.25f*expTerm
)
;
float
dEdR
=
Gpol*
(
1.0f
-
0.25f*expTerm
)
;
#
ifdef
USE_CUTOFF
#
ifdef
USE_CUTOFF
dEdR
=
select
(
dEdR,
0.0f,
r2
>
CUTOFF_SQUARED
)
;
dEdR
=
select
(
dEdR,
0.0f,
r2
>
CUTOFF_SQUARED
)
;
tempEnergy
=
select
(
tempEnergy,
0.0f,
r2
>
CUTOFF_SQUARED
)
;
tempEnergy
=
select
(
tempEnergy,
0.0f,
r2
>
CUTOFF_SQUARED
)
;
dGpol_dalpha2_ij
=
select
(
dGpol_dalpha2_ij,
0.0f,
r2
>
CUTOFF_SQUARED
)
;
#
endif
#
endif
force.w
+=
select
(
0.0f,
dGpol_dalpha2_ij*bornRadius2,
includeInteraction
)
;
energy
+=
select
(
0.0f,
tempEnergy,
includeInteraction
)
;
energy
+=
select
(
0.0f,
tempEnergy,
includeInteraction
)
;
delta.xyz
*=
select
(
0.0f,
dEdR,
includeInteraction
)
;
delta.xyz
*=
select
(
0.0f,
dEdR,
includeInteraction
)
;
force.xyz
-=
delta.xyz
;
force.xyz
-=
delta.xyz
;
...
...
platforms/opencl/src/kernels/gbsaObc_nvidia.cl
View file @
9294047f
...
@@ -340,14 +340,15 @@ void computeGBSAForce1(__global float4* forceBuffers, __global float* energyBuff
...
@@ -340,14 +340,15 @@ void computeGBSAForce1(__global float4* forceBuffers, __global float* energyBuff
float
tempEnergy
=
(
PREFACTOR*posq1.w*posq2.w
)
*RECIP
(
denominator
)
;
float
tempEnergy
=
(
PREFACTOR*posq1.w*posq2.w
)
*RECIP
(
denominator
)
;
float
Gpol
=
tempEnergy*RECIP
(
denominator2
)
;
float
Gpol
=
tempEnergy*RECIP
(
denominator2
)
;
float
dGpol_dalpha2_ij
=
-0.5f*Gpol*expTerm*
(
1.0f+D_ij
)
;
float
dGpol_dalpha2_ij
=
-0.5f*Gpol*expTerm*
(
1.0f+D_ij
)
;
force.w
+=
dGpol_dalpha2_ij*bornRadius2
;
float
dEdR
=
Gpol*
(
1.0f
-
0.25f*expTerm
)
;
float
dEdR
=
Gpol*
(
1.0f
-
0.25f*expTerm
)
;
#
ifdef
USE_CUTOFF
#
ifdef
USE_CUTOFF
if
(
r2
>
CUTOFF_SQUARED
)
{
if
(
r2
>
CUTOFF_SQUARED
)
{
dEdR
=
0.0f
;
dEdR
=
0.0f
;
tempEnergy
=
0.0f
;
tempEnergy
=
0.0f
;
dGpol_dalpha2_ij
=
0.0f
;
}
}
#
endif
#
endif
force.w
+=
dGpol_dalpha2_ij*bornRadius2
;
energy
+=
0.5f*tempEnergy
;
energy
+=
0.5f*tempEnergy
;
delta.xyz
*=
dEdR
;
delta.xyz
*=
dEdR
;
force.xyz
-=
delta.xyz
;
force.xyz
-=
delta.xyz
;
...
@@ -409,7 +410,6 @@ void computeGBSAForce1(__global float4* forceBuffers, __global float* energyBuff
...
@@ -409,7 +410,6 @@ void computeGBSAForce1(__global float4* forceBuffers, __global float* energyBuff
float
tempEnergy
=
(
PREFACTOR*posq1.w*posq2.w
)
*RECIP
(
denominator
)
;
float
tempEnergy
=
(
PREFACTOR*posq1.w*posq2.w
)
*RECIP
(
denominator
)
;
float
Gpol
=
tempEnergy*RECIP
(
denominator2
)
;
float
Gpol
=
tempEnergy*RECIP
(
denominator2
)
;
float
dGpol_dalpha2_ij
=
-0.5f*Gpol*expTerm*
(
1.0f+D_ij
)
;
float
dGpol_dalpha2_ij
=
-0.5f*Gpol*expTerm*
(
1.0f+D_ij
)
;
force.w
+=
dGpol_dalpha2_ij*bornRadius2
;
float
dEdR
=
Gpol*
(
1.0f
-
0.25f*expTerm
)
;
float
dEdR
=
Gpol*
(
1.0f
-
0.25f*expTerm
)
;
#
ifdef
USE_CUTOFF
#
ifdef
USE_CUTOFF
if
(
atom1
>=
NUM_ATOMS
|
| y*TILE_SIZE+j >= NUM_ATOMS || r2 > CUTOFF_SQUARED) {
if
(
atom1
>=
NUM_ATOMS
|
| y*TILE_SIZE+j >= NUM_ATOMS || r2 > CUTOFF_SQUARED) {
...
@@ -417,9 +417,11 @@ void computeGBSAForce1(__global float4* forceBuffers, __global float* energyBuff
...
@@ -417,9 +417,11 @@ void computeGBSAForce1(__global float4* forceBuffers, __global float* energyBuff
if (atom1 >= NUM_ATOMS |
|
y*TILE_SIZE+j
>=
NUM_ATOMS
)
{
if (atom1 >= NUM_ATOMS |
|
y*TILE_SIZE+j
>=
NUM_ATOMS
)
{
#
endif
#
endif
dEdR
=
0.0f
;
dEdR
=
0.0f
;
dGpol_dalpha2_ij
=
0.0f
;
tempEnergy
=
0.0f
;
tempEnergy
=
0.0f
;
}
}
energy
+=
tempEnergy
;
energy
+=
tempEnergy
;
force.w
+=
dGpol_dalpha2_ij*bornRadius2
;
delta.xyz
*=
dEdR
;
delta.xyz
*=
dEdR
;
force.xyz
-=
delta.xyz
;
force.xyz
-=
delta.xyz
;
tempBuffer[get_local_id
(
0
)
]
=
(
float4
)
(
delta.xyz,
dGpol_dalpha2_ij*bornRadius1
)
;
tempBuffer[get_local_id
(
0
)
]
=
(
float4
)
(
delta.xyz,
dGpol_dalpha2_ij*bornRadius1
)
;
...
@@ -472,14 +474,15 @@ void computeGBSAForce1(__global float4* forceBuffers, __global float* energyBuff
...
@@ -472,14 +474,15 @@ void computeGBSAForce1(__global float4* forceBuffers, __global float* energyBuff
float
tempEnergy
=
(
PREFACTOR*posq1.w*posq2.w
)
*RECIP
(
denominator
)
;
float
tempEnergy
=
(
PREFACTOR*posq1.w*posq2.w
)
*RECIP
(
denominator
)
;
float
Gpol
=
tempEnergy*RECIP
(
denominator2
)
;
float
Gpol
=
tempEnergy*RECIP
(
denominator2
)
;
float
dGpol_dalpha2_ij
=
-0.5f*Gpol*expTerm*
(
1.0f+D_ij
)
;
float
dGpol_dalpha2_ij
=
-0.5f*Gpol*expTerm*
(
1.0f+D_ij
)
;
force.w
+=
dGpol_dalpha2_ij*bornRadius2
;
float
dEdR
=
Gpol*
(
1.0f
-
0.25f*expTerm
)
;
float
dEdR
=
Gpol*
(
1.0f
-
0.25f*expTerm
)
;
#
ifdef
USE_CUTOFF
#
ifdef
USE_CUTOFF
if
(
r2
>
CUTOFF_SQUARED
)
{
if
(
r2
>
CUTOFF_SQUARED
)
{
dEdR
=
0.0f
;
dEdR
=
0.0f
;
tempEnergy
=
0.0f
;
tempEnergy
=
0.0f
;
dGpol_dalpha2_ij
=
0.0f
;
}
}
#
endif
#
endif
force.w
+=
dGpol_dalpha2_ij*bornRadius2
;
energy
+=
tempEnergy
;
energy
+=
tempEnergy
;
delta.xyz
*=
dEdR
;
delta.xyz
*=
dEdR
;
force.xyz
-=
delta.xyz
;
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