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
61b3cd18
Commit
61b3cd18
authored
Aug 20, 2018
by
peastman
Browse files
Dispersion correction is based on default values of offset parameters
parent
aed9eed8
Changes
1
Hide whitespace changes
Inline
Side-by-side
Showing
1 changed file
with
22 additions
and
4 deletions
+22
-4
openmmapi/src/NonbondedForceImpl.cpp
openmmapi/src/NonbondedForceImpl.cpp
+22
-4
No files found.
openmmapi/src/NonbondedForceImpl.cpp
View file @
61b3cd18
...
@@ -235,15 +235,33 @@ double NonbondedForceImpl::evalIntegral(double r, double rs, double rc, double s
...
@@ -235,15 +235,33 @@ double NonbondedForceImpl::evalIntegral(double r, double rs, double rc, double s
double
NonbondedForceImpl
::
calcDispersionCorrection
(
const
System
&
system
,
const
NonbondedForce
&
force
)
{
double
NonbondedForceImpl
::
calcDispersionCorrection
(
const
System
&
system
,
const
NonbondedForce
&
force
)
{
if
(
force
.
getNonbondedMethod
()
==
NonbondedForce
::
NoCutoff
||
force
.
getNonbondedMethod
()
==
NonbondedForce
::
CutoffNonPeriodic
)
if
(
force
.
getNonbondedMethod
()
==
NonbondedForce
::
NoCutoff
||
force
.
getNonbondedMethod
()
==
NonbondedForce
::
CutoffNonPeriodic
)
return
0.0
;
return
0.0
;
// Record sigma and epsilon for every particle, including the default value
// for every offset parameter.
vector
<
double
>
sigma
(
force
.
getNumParticles
()),
epsilon
(
force
.
getNumParticles
());
for
(
int
i
=
0
;
i
<
force
.
getNumParticles
();
i
++
)
{
double
charge
;
force
.
getParticleParameters
(
i
,
charge
,
sigma
[
i
],
epsilon
[
i
]);
}
map
<
string
,
double
>
param
;
for
(
int
i
=
0
;
i
<
force
.
getNumGlobalParameters
();
i
++
)
param
[
force
.
getGlobalParameterName
(
i
)]
=
force
.
getGlobalParameterDefaultValue
(
i
);
for
(
int
i
=
0
;
i
<
force
.
getNumParticleParameterOffsets
();
i
++
)
{
string
parameter
;
int
index
;
double
chargeScale
,
sigmaScale
,
epsilonScale
;
force
.
getParticleParameterOffset
(
i
,
parameter
,
index
,
chargeScale
,
sigmaScale
,
epsilonScale
);
sigma
[
index
]
+=
param
[
parameter
]
*
sigmaScale
;
epsilon
[
index
]
+=
param
[
parameter
]
*
epsilonScale
;
}
// Identify all particle classes (defined by sigma and epsilon), and count the number of
// Identify all particle classes (defined by sigma and epsilon), and count the number of
// particles in each class.
// particles in each class.
map
<
pair
<
double
,
double
>
,
int
>
classCounts
;
map
<
pair
<
double
,
double
>
,
int
>
classCounts
;
for
(
int
i
=
0
;
i
<
force
.
getNumParticles
();
i
++
)
{
for
(
int
i
=
0
;
i
<
force
.
getNumParticles
();
i
++
)
{
double
charge
,
sigma
,
epsilon
;
pair
<
double
,
double
>
key
=
make_pair
(
sigma
[
i
],
epsilon
[
i
]);
force
.
getParticleParameters
(
i
,
charge
,
sigma
,
epsilon
);
pair
<
double
,
double
>
key
=
make_pair
(
sigma
,
epsilon
);
map
<
pair
<
double
,
double
>
,
int
>::
iterator
entry
=
classCounts
.
find
(
key
);
map
<
pair
<
double
,
double
>
,
int
>::
iterator
entry
=
classCounts
.
find
(
key
);
if
(
entry
==
classCounts
.
end
())
if
(
entry
==
classCounts
.
end
())
classCounts
[
key
]
=
1
;
classCounts
[
key
]
=
1
;
...
...
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