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
49277790
Commit
49277790
authored
Jan 18, 2016
by
Saurabh Belsare
Browse files
Restructuring the lab frame dipole moments function
parent
a8d0f0e1
Changes
2
Show whitespace changes
Inline
Side-by-side
Showing
2 changed files
with
75 additions
and
14 deletions
+75
-14
plugins/amoeba/platforms/reference/src/SimTKReference/AmoebaReferenceMultipoleForce.cpp
...ence/src/SimTKReference/AmoebaReferenceMultipoleForce.cpp
+41
-14
plugins/amoeba/platforms/reference/src/SimTKReference/AmoebaReferenceMultipoleForce.h
...erence/src/SimTKReference/AmoebaReferenceMultipoleForce.h
+34
-0
No files found.
plugins/amoeba/platforms/reference/src/SimTKReference/AmoebaReferenceMultipoleForce.cpp
View file @
49277790
...
...
@@ -647,20 +647,20 @@ void AmoebaReferenceMultipoleForce::applyRotationMatrix(vector<MultipoleParticle
}
}
void
AmoebaReferenceMultipoleForce
::
applyRotationMatrixPublic
(
vector
<
MultipoleParticleData
>&
particleData
,
const
vector
<
int
>&
multipoleAtomXs
,
const
vector
<
int
>&
multipoleAtomYs
,
const
vector
<
int
>&
multipoleAtomZs
,
const
vector
<
int
>&
axisTypes
)
const
{
for
(
unsigned
int
ii
=
0
;
ii
<
_numParticles
;
ii
++
)
{
if
(
multipoleAtomZs
[
ii
]
>=
0
&&
multipoleAtomXs
[
ii
]
>=
0
)
{
applyRotationMatrixToParticle
(
particleData
[
ii
],
particleData
[
multipoleAtomZs
[
ii
]],
particleData
[
multipoleAtomXs
[
ii
]],
multipoleAtomYs
[
ii
]
>
-
1
?
&
particleData
[
multipoleAtomYs
[
ii
]]
:
NULL
,
axisTypes
[
ii
]);
}
}
}
//
void AmoebaReferenceMultipoleForce::applyRotationMatrixPublic(vector<MultipoleParticleData>& particleData,
//
const vector<int>& multipoleAtomXs,
//
const vector<int>& multipoleAtomYs,
//
const vector<int>& multipoleAtomZs,
//
const vector<int>& axisTypes) const
//
{
//
//
for (unsigned int ii = 0; ii < _numParticles; ii++) {
//
if (multipoleAtomZs[ii] >= 0 && multipoleAtomXs[ii] >= 0) {
//
applyRotationMatrixToParticle(particleData[ii], particleData[multipoleAtomZs[ii]], particleData[multipoleAtomXs[ii]],
//
multipoleAtomYs[ii] > -1 ? &particleData[multipoleAtomYs[ii]] : NULL, axisTypes[ii]);
//
}
//
}
//
}
void
AmoebaReferenceMultipoleForce
::
getAndScaleInverseRs
(
RealOpenMM
dampI
,
RealOpenMM
dampJ
,
RealOpenMM
tholeI
,
RealOpenMM
tholeJ
,
...
...
@@ -1818,6 +1818,33 @@ void AmoebaReferenceMultipoleForce::calculateInducedDipoles(const vector<RealVec
outputInducedDipoles
=
_inducedDipole
;
}
void
AmoebaReferenceMultipoleForce
::
calculateLabFramePermanentDipoles
(
const
vector
<
RealVec
>&
particlePositions
,
const
vector
<
RealOpenMM
>&
charges
,
const
vector
<
RealOpenMM
>&
dipoles
,
const
vector
<
RealOpenMM
>&
quadrupoles
,
const
vector
<
RealOpenMM
>&
tholes
,
const
vector
<
RealOpenMM
>&
dampingFactors
,
const
vector
<
RealOpenMM
>&
polarity
,
const
vector
<
int
>&
axisTypes
,
const
vector
<
int
>&
multipoleAtomZs
,
const
vector
<
int
>&
multipoleAtomXs
,
const
vector
<
int
>&
multipoleAtomYs
,
const
vector
<
vector
<
vector
<
int
>
>
>&
multipoleAtomCovalentInfo
,
vector
<
RealVec
>&
outputRotatedPermanentDipoles
)
{
// setup, including calculating permanent dipoles
vector
<
MultipoleParticleData
>
particleData
;
setup
(
particlePositions
,
charges
,
dipoles
,
quadrupoles
,
tholes
,
dampingFactors
,
polarity
,
axisTypes
,
multipoleAtomZs
,
multipoleAtomXs
,
multipoleAtomYs
,
multipoleAtomCovalentInfo
,
particleData
);
for
(
int
i
=
0
;
i
<
_numParticles
;
i
++
)
{
_labFramePermanentDipole
[
i
]
=
particleData
[
i
].
dipole
;
}
outputRotatedPermanentDipoles
=
_labFramePermanentDipole
;
}
void
AmoebaReferenceMultipoleForce
::
calculateAmoebaSystemMultipoleMoments
(
const
vector
<
RealOpenMM
>&
masses
,
const
vector
<
RealVec
>&
particlePositions
,
const
vector
<
RealOpenMM
>&
charges
,
...
...
plugins/amoeba/platforms/reference/src/SimTKReference/AmoebaReferenceMultipoleForce.h
View file @
49277790
...
...
@@ -519,6 +519,39 @@ public:
const
std
::
vector
<
std
::
vector
<
std
::
vector
<
int
>
>
>&
multipoleAtomCovalentInfo
,
std
::
vector
<
RealVec
>&
outputInducedDipoles
);
/**
* Calculate particle permanent dipoles rotated in the lab frame.
*
* @param masses particle masses
* @param particlePositions Cartesian coordinates of particles
* @param charges scalar charges for each particle
* @param dipoles molecular frame dipoles for each particle
* @param quadrupoles molecular frame quadrupoles for each particle
* @param tholes Thole factors for each particle
* @param dampingFactors dampling factors for each particle
* @param polarity polarity for each particle
* @param axisTypes axis type (Z-then-X, ...) for each particle
* @param multipoleAtomZs indicies of particle specifying the molecular frame z-axis for each particle
* @param multipoleAtomXs indicies of particle specifying the molecular frame x-axis for each particle
* @param multipoleAtomYs indicies of particle specifying the molecular frame y-axis for each particle
* @param multipoleAtomCovalentInfo covalent info needed to set scaling factors
* @param outputMultipoleMoments output multipole moments
*/
void
AmoebaReferenceMultipoleForce
::
calculateLabFramePermanentDipoles
(
const
vector
<
RealVec
>&
particlePositions
,
const
vector
<
RealOpenMM
>&
charges
,
const
vector
<
RealOpenMM
>&
dipoles
,
const
vector
<
RealOpenMM
>&
quadrupoles
,
const
vector
<
RealOpenMM
>&
tholes
,
const
vector
<
RealOpenMM
>&
dampingFactors
,
const
vector
<
RealOpenMM
>&
polarity
,
const
vector
<
int
>&
axisTypes
,
const
vector
<
int
>&
multipoleAtomZs
,
const
vector
<
int
>&
multipoleAtomXs
,
const
vector
<
int
>&
multipoleAtomYs
,
const
vector
<
vector
<
vector
<
int
>
>
>&
multipoleAtomCovalentInfo
,
vector
<
RealVec
>&
outputRotatedPermanentDipoles
);
/**
* Calculate system multipole moments.
*
...
...
@@ -669,6 +702,7 @@ protected:
std
::
vector
<
RealVec
>
_fixedMultipoleField
;
std
::
vector
<
RealVec
>
_fixedMultipoleFieldPolar
;
std
::
vector
<
RealVec
>
_inducedDipole
;
std
::
vector
<
RealVec
>
_labFramePermanentDipole
;
std
::
vector
<
RealVec
>
_inducedDipolePolar
;
int
_mutualInducedDipoleConverged
;
...
...
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