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
b8be9b8a
"vscode:/vscode.git/clone" did not exist on "2943d62883cbaabfbea52f40a8e45ed191fc10f7"
Commit
b8be9b8a
authored
Aug 17, 2016
by
peastman
Browse files
Optimization to ForceField
parent
27550631
Changes
1
Show whitespace changes
Inline
Side-by-side
Showing
1 changed file
with
13 additions
and
2 deletions
+13
-2
wrappers/python/simtk/openmm/app/forcefield.py
wrappers/python/simtk/openmm/app/forcefield.py
+13
-2
No files found.
wrappers/python/simtk/openmm/app/forcefield.py
View file @
b8be9b8a
...
...
@@ -40,6 +40,7 @@ import math
from
math
import
sqrt
,
cos
from
copy
import
deepcopy
from
heapq
import
heappush
,
heappop
from
collections
import
defaultdict
import
simtk.openmm
as
mm
import
simtk.unit
as
unit
from
.
import
element
as
elem
...
...
@@ -1662,6 +1663,7 @@ class HarmonicBondGenerator(object):
def
__init__
(
self
,
forcefield
):
self
.
ff
=
forcefield
self
.
bondsForAtomType
=
defaultdict
(
set
)
self
.
types1
=
[]
self
.
types2
=
[]
self
.
length
=
[]
...
...
@@ -1670,8 +1672,13 @@ class HarmonicBondGenerator(object):
def
registerBond
(
self
,
parameters
):
types
=
self
.
ff
.
_findAtomTypes
(
parameters
,
2
)
if
None
not
in
types
:
index
=
len
(
self
.
types1
)
self
.
types1
.
append
(
types
[
0
])
self
.
types2
.
append
(
types
[
1
])
for
t
in
types
[
0
]:
self
.
bondsForAtomType
[
t
].
add
(
index
)
for
t
in
types
[
1
]:
self
.
bondsForAtomType
[
t
].
add
(
index
)
self
.
length
.
append
(
_convertParameterToNumber
(
parameters
[
'length'
]))
self
.
k
.
append
(
_convertParameterToNumber
(
parameters
[
'k'
]))
...
...
@@ -1697,7 +1704,7 @@ class HarmonicBondGenerator(object):
for
bond
in
data
.
bonds
:
type1
=
data
.
atomType
[
data
.
atoms
[
bond
.
atom1
]]
type2
=
data
.
atomType
[
data
.
atoms
[
bond
.
atom2
]]
for
i
in
range
(
len
(
self
.
types1
))
:
for
i
in
self
.
bondsForAtomType
[
type1
]
:
types1
=
self
.
types1
[
i
]
types2
=
self
.
types2
[
i
]
if
(
type1
in
types1
and
type2
in
types2
)
or
(
type1
in
types2
and
type2
in
types1
):
...
...
@@ -1717,6 +1724,7 @@ class HarmonicAngleGenerator(object):
def
__init__
(
self
,
forcefield
):
self
.
ff
=
forcefield
self
.
anglesForAtom2Type
=
defaultdict
(
list
)
self
.
types1
=
[]
self
.
types2
=
[]
self
.
types3
=
[]
...
...
@@ -1726,9 +1734,12 @@ class HarmonicAngleGenerator(object):
def
registerAngle
(
self
,
parameters
):
types
=
self
.
ff
.
_findAtomTypes
(
parameters
,
3
)
if
None
not
in
types
:
index
=
len
(
self
.
types1
)
self
.
types1
.
append
(
types
[
0
])
self
.
types2
.
append
(
types
[
1
])
self
.
types3
.
append
(
types
[
2
])
for
t
in
types
[
1
]:
self
.
anglesForAtom2Type
[
t
].
append
(
index
)
self
.
angle
.
append
(
_convertParameterToNumber
(
parameters
[
'angle'
]))
self
.
k
.
append
(
_convertParameterToNumber
(
parameters
[
'k'
]))
...
...
@@ -1755,7 +1766,7 @@ class HarmonicAngleGenerator(object):
type1
=
data
.
atomType
[
data
.
atoms
[
angle
[
0
]]]
type2
=
data
.
atomType
[
data
.
atoms
[
angle
[
1
]]]
type3
=
data
.
atomType
[
data
.
atoms
[
angle
[
2
]]]
for
i
in
range
(
len
(
self
.
types1
))
:
for
i
in
self
.
anglesForAtom2Type
[
type2
]
:
types1
=
self
.
types1
[
i
]
types2
=
self
.
types2
[
i
]
types3
=
self
.
types3
[
i
]
...
...
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