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
e772c611
Commit
e772c611
authored
Jan 26, 2011
by
Mark Friedrichs
Browse files
Signs on torque for ZBisect inverted
parent
1c094341
Changes
1
Show whitespace changes
Inline
Side-by-side
Showing
1 changed file
with
15 additions
and
10 deletions
+15
-10
plugins/amoeba/platforms/reference/src/SimTKReference/AmoebaReferenceMultipoleForce.cpp
...ence/src/SimTKReference/AmoebaReferenceMultipoleForce.cpp
+15
-10
No files found.
plugins/amoeba/platforms/reference/src/SimTKReference/AmoebaReferenceMultipoleForce.cpp
View file @
e772c611
...
...
@@ -1701,10 +1701,13 @@ void AmoebaReferenceMultipoleForce::mapTorqueToForce( const MultipoleParticleDat
t2
[
0
]
=
vector
[
W
][
0
]
-
vector
[
S
][
0
]
*
angles
[
WS
][
0
];
t2
[
1
]
=
vector
[
W
][
1
]
-
vector
[
S
][
1
]
*
angles
[
WS
][
0
];
t2
[
2
]
=
vector
[
W
][
2
]
-
vector
[
S
][
2
]
*
angles
[
WS
][
0
];
RealOpenMM
notUsed
=
AmoebaReferenceForce
::
normalizeVector3
(
t1
);
notUsed
=
AmoebaReferenceForce
::
normalizeVector3
(
t2
);
RealOpenMM
ut1cos
=
AmoebaReferenceForce
::
getDotProduct3
(
vector
[
U
],
t1
);
RealOpenMM
ut1sin
=
sqrtf
(
1.0
f
-
ut1cos
*
ut1cos
);
RealOpenMM
ut2cos
=
AmoebaReferenceForce
::
getDotProduct3
(
vector
[
U
],
t2
);
RealOpenMM
ut2sin
=
sqrtf
(
1.0
f
-
ut2cos
*
ut2cos
);
...
...
@@ -1718,14 +1721,15 @@ void AmoebaReferenceMultipoleForce::mapTorqueToForce( const MultipoleParticleDat
for
(
int
ii
=
0
;
ii
<
3
;
ii
++
){
double
forceU
=
vector
[
UR
][
ii
]
*
factor1
+
factor2
*
vector
[
US
][
ii
];
forces
[
particleU
.
particleIndex
][
ii
]
+
=
forceU
;
forces
[
particleU
.
particleIndex
][
ii
]
-
=
forceU
;
double
forceV
=
(
angles
[
VS
][
1
]
*
vector
[
S
][
ii
]
-
angles
[
VS
][
0
]
*
t1
[
ii
])
*
factor3
;
forces
[
particleV
.
particleIndex
][
ii
]
+
=
forceV
;
forces
[
particleV
.
particleIndex
][
ii
]
-
=
forceV
;
double
forceW
=
(
angles
[
WS
][
1
]
*
vector
[
S
][
ii
]
-
angles
[
WS
][
0
]
*
t2
[
ii
])
*
factor4
;
forces
[
particleW
->
particleIndex
][
ii
]
+=
forceW
;
forces
[
particleI
.
particleIndex
][
ii
]
-=
(
forceU
+
forceV
+
forceW
);
forces
[
particleW
->
particleIndex
][
ii
]
-=
forceW
;
forces
[
particleI
.
particleIndex
][
ii
]
+=
(
forceU
+
forceV
+
forceW
);
}
}
else
if
(
axisType
==
AmoebaMultipoleForce
::
ThreeFold
){
...
...
@@ -1753,11 +1757,11 @@ void AmoebaReferenceMultipoleForce::mapTorqueToForce( const MultipoleParticleDat
dv
/=
3.0
f
;
dw
/=
3.0
f
;
forces
[
particleU
.
particleIndex
][
ii
]
+
=
du
;
forces
[
particleV
.
particleIndex
][
ii
]
+
=
dv
;
forces
[
particleU
.
particleIndex
][
ii
]
-
=
du
;
forces
[
particleV
.
particleIndex
][
ii
]
-
=
dv
;
if
(
particleW
)
forces
[
particleW
->
particleIndex
][
ii
]
+
=
dw
;
forces
[
particleI
.
particleIndex
][
ii
]
-
=
(
du
+
dv
+
dw
);
forces
[
particleW
->
particleIndex
][
ii
]
-
=
dw
;
forces
[
particleI
.
particleIndex
][
ii
]
+
=
(
du
+
dv
+
dw
);
}
}
else
if
(
axisType
==
AmoebaMultipoleForce
::
ZOnly
){
...
...
@@ -1766,9 +1770,10 @@ void AmoebaReferenceMultipoleForce::mapTorqueToForce( const MultipoleParticleDat
for
(
int
ii
=
0
;
ii
<
3
;
ii
++
){
RealOpenMM
du
=
vector
[
UV
][
ii
]
*
dphi
[
V
]
/
(
norms
[
U
]
*
angles
[
UV
][
1
]);
forces
[
particleU
.
particleIndex
][
ii
]
+
=
du
;
forces
[
particleI
.
particleIndex
][
ii
]
-
=
du
;
forces
[
particleU
.
particleIndex
][
ii
]
-
=
du
;
forces
[
particleI
.
particleIndex
][
ii
]
+
=
du
;
}
}
else
{
/*
...
...
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