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
5f248e63
Commit
5f248e63
authored
Jan 23, 2016
by
Saurabh Belsare
Browse files
Uncommented all the calculate LabFramePermanentDipoles functions
parent
587ba7f2
Changes
9
Hide whitespace changes
Inline
Side-by-side
Showing
9 changed files
with
70 additions
and
70 deletions
+70
-70
plugins/amoeba/openmmapi/include/openmm/AmoebaMultipoleForce.h
...ns/amoeba/openmmapi/include/openmm/AmoebaMultipoleForce.h
+2
-2
plugins/amoeba/openmmapi/include/openmm/amoebaKernels.h
plugins/amoeba/openmmapi/include/openmm/amoebaKernels.h
+1
-1
plugins/amoeba/openmmapi/include/openmm/internal/AmoebaMultipoleForceImpl.h
...nmmapi/include/openmm/internal/AmoebaMultipoleForceImpl.h
+1
-1
plugins/amoeba/openmmapi/src/AmoebaMultipoleForce.cpp
plugins/amoeba/openmmapi/src/AmoebaMultipoleForce.cpp
+3
-3
plugins/amoeba/openmmapi/src/AmoebaMultipoleForceImpl.cpp
plugins/amoeba/openmmapi/src/AmoebaMultipoleForceImpl.cpp
+3
-3
plugins/amoeba/platforms/reference/src/AmoebaReferenceKernels.cpp
...amoeba/platforms/reference/src/AmoebaReferenceKernels.cpp
+18
-18
plugins/amoeba/platforms/reference/src/AmoebaReferenceKernels.h
...s/amoeba/platforms/reference/src/AmoebaReferenceKernels.h
+2
-2
plugins/amoeba/platforms/reference/src/SimTKReference/AmoebaReferenceMultipoleForce.cpp
...ence/src/SimTKReference/AmoebaReferenceMultipoleForce.cpp
+25
-25
plugins/amoeba/platforms/reference/src/SimTKReference/AmoebaReferenceMultipoleForce.h
...erence/src/SimTKReference/AmoebaReferenceMultipoleForce.h
+15
-15
No files found.
plugins/amoeba/openmmapi/include/openmm/AmoebaMultipoleForce.h
View file @
5f248e63
...
@@ -316,13 +316,13 @@ public:
...
@@ -316,13 +316,13 @@ public:
* This can be overridden by explicitly setting an alpha parameter and grid dimensions to use.
* This can be overridden by explicitly setting an alpha parameter and grid dimensions to use.
*/
*/
void
setEwaldErrorTolerance
(
double
tol
);
void
setEwaldErrorTolerance
(
double
tol
);
/*
/*
*
* Get the fixed dipole moments of all particles in the global reference frame.
* Get the fixed dipole moments of all particles in the global reference frame.
*
*
* @param context the Context for which to get the fixed dipoles
* @param context the Context for which to get the fixed dipoles
* @param[out] dipoles the fixed dipole moment of particle i is stored into the i'th element
* @param[out] dipoles the fixed dipole moment of particle i is stored into the i'th element
*/
*/
//
void getLabFramePermanentDipoles(Context& context, std::vector<Vec3>& dipoles);
void
getLabFramePermanentDipoles
(
Context
&
context
,
std
::
vector
<
Vec3
>&
dipoles
);
/**
/**
* Get the induced dipole moments of all particles.
* Get the induced dipole moments of all particles.
*
*
...
...
plugins/amoeba/openmmapi/include/openmm/amoebaKernels.h
View file @
5f248e63
...
@@ -348,7 +348,7 @@ public:
...
@@ -348,7 +348,7 @@ public:
*/
*/
virtual
double
execute
(
ContextImpl
&
context
,
bool
includeForces
,
bool
includeEnergy
)
=
0
;
virtual
double
execute
(
ContextImpl
&
context
,
bool
includeForces
,
bool
includeEnergy
)
=
0
;
//
virtual void getLabFramePermanentDipoles(ContextImpl& context, std::vector<Vec3>& dipoles) = 0;
virtual
void
getLabFramePermanentDipoles
(
ContextImpl
&
context
,
std
::
vector
<
Vec3
>&
dipoles
)
=
0
;
virtual
void
getInducedDipoles
(
ContextImpl
&
context
,
std
::
vector
<
Vec3
>&
dipoles
)
=
0
;
virtual
void
getInducedDipoles
(
ContextImpl
&
context
,
std
::
vector
<
Vec3
>&
dipoles
)
=
0
;
virtual
void
getElectrostaticPotential
(
ContextImpl
&
context
,
const
std
::
vector
<
Vec3
>&
inputGrid
,
virtual
void
getElectrostaticPotential
(
ContextImpl
&
context
,
const
std
::
vector
<
Vec3
>&
inputGrid
,
...
...
plugins/amoeba/openmmapi/include/openmm/internal/AmoebaMultipoleForceImpl.h
View file @
5f248e63
...
@@ -81,7 +81,7 @@ public:
...
@@ -81,7 +81,7 @@ public:
* @param covalentDegree covalent degrees for the CovalentEnd lists
* @param covalentDegree covalent degrees for the CovalentEnd lists
*/
*/
static
void
getCovalentDegree
(
const
AmoebaMultipoleForce
&
force
,
std
::
vector
<
int
>&
covalentDegree
);
static
void
getCovalentDegree
(
const
AmoebaMultipoleForce
&
force
,
std
::
vector
<
int
>&
covalentDegree
);
//
void getLabFramePermanentDipoles(ContextImpl& context, std::vector<Vec3>& dipoles);
void
getLabFramePermanentDipoles
(
ContextImpl
&
context
,
std
::
vector
<
Vec3
>&
dipoles
);
void
getInducedDipoles
(
ContextImpl
&
context
,
std
::
vector
<
Vec3
>&
dipoles
);
void
getInducedDipoles
(
ContextImpl
&
context
,
std
::
vector
<
Vec3
>&
dipoles
);
void
getElectrostaticPotential
(
ContextImpl
&
context
,
const
std
::
vector
<
Vec3
>&
inputGrid
,
void
getElectrostaticPotential
(
ContextImpl
&
context
,
const
std
::
vector
<
Vec3
>&
inputGrid
,
...
...
plugins/amoeba/openmmapi/src/AmoebaMultipoleForce.cpp
View file @
5f248e63
...
@@ -234,9 +234,9 @@ void AmoebaMultipoleForce::getInducedDipoles(Context& context, vector<Vec3>& dip
...
@@ -234,9 +234,9 @@ void AmoebaMultipoleForce::getInducedDipoles(Context& context, vector<Vec3>& dip
dynamic_cast
<
AmoebaMultipoleForceImpl
&>
(
getImplInContext
(
context
)).
getInducedDipoles
(
getContextImpl
(
context
),
dipoles
);
dynamic_cast
<
AmoebaMultipoleForceImpl
&>
(
getImplInContext
(
context
)).
getInducedDipoles
(
getContextImpl
(
context
),
dipoles
);
}
}
//
void AmoebaMultipoleForce::getLabFramePermanentDipoles(Context& context, vector<Vec3>& dipoles) {
void
AmoebaMultipoleForce
::
getLabFramePermanentDipoles
(
Context
&
context
,
vector
<
Vec3
>&
dipoles
)
{
//
dynamic_cast<AmoebaMultipoleForceImpl&>(getImplInContext(context)).getLabFramePermanentDipoles(getContextImpl(context), dipoles);
dynamic_cast
<
AmoebaMultipoleForceImpl
&>
(
getImplInContext
(
context
)).
getLabFramePermanentDipoles
(
getContextImpl
(
context
),
dipoles
);
//
}
}
void
AmoebaMultipoleForce
::
getElectrostaticPotential
(
const
std
::
vector
<
Vec3
>&
inputGrid
,
Context
&
context
,
std
::
vector
<
double
>&
outputElectrostaticPotential
)
{
void
AmoebaMultipoleForce
::
getElectrostaticPotential
(
const
std
::
vector
<
Vec3
>&
inputGrid
,
Context
&
context
,
std
::
vector
<
double
>&
outputElectrostaticPotential
)
{
dynamic_cast
<
AmoebaMultipoleForceImpl
&>
(
getImplInContext
(
context
)).
getElectrostaticPotential
(
getContextImpl
(
context
),
inputGrid
,
outputElectrostaticPotential
);
dynamic_cast
<
AmoebaMultipoleForceImpl
&>
(
getImplInContext
(
context
)).
getElectrostaticPotential
(
getContextImpl
(
context
),
inputGrid
,
outputElectrostaticPotential
);
...
...
plugins/amoeba/openmmapi/src/AmoebaMultipoleForceImpl.cpp
View file @
5f248e63
...
@@ -183,9 +183,9 @@ void AmoebaMultipoleForceImpl::getCovalentDegree(const AmoebaMultipoleForce& for
...
@@ -183,9 +183,9 @@ void AmoebaMultipoleForceImpl::getCovalentDegree(const AmoebaMultipoleForce& for
return
;
return
;
}
}
//
void AmoebaMultipoleForceImpl::getLabFramePermanentDipoles(ContextImpl& context, vector<Vec3>& dipoles) {
void
AmoebaMultipoleForceImpl
::
getLabFramePermanentDipoles
(
ContextImpl
&
context
,
vector
<
Vec3
>&
dipoles
)
{
//
kernel.getAs<CalcAmoebaMultipoleForceKernel>().getLabFramePermanentDipoles(context, dipoles);
kernel
.
getAs
<
CalcAmoebaMultipoleForceKernel
>
().
getLabFramePermanentDipoles
(
context
,
dipoles
);
//
}
}
void
AmoebaMultipoleForceImpl
::
getInducedDipoles
(
ContextImpl
&
context
,
vector
<
Vec3
>&
dipoles
)
{
void
AmoebaMultipoleForceImpl
::
getInducedDipoles
(
ContextImpl
&
context
,
vector
<
Vec3
>&
dipoles
)
{
kernel
.
getAs
<
CalcAmoebaMultipoleForceKernel
>
().
getInducedDipoles
(
context
,
dipoles
);
kernel
.
getAs
<
CalcAmoebaMultipoleForceKernel
>
().
getInducedDipoles
(
context
,
dipoles
);
...
...
plugins/amoeba/platforms/reference/src/AmoebaReferenceKernels.cpp
View file @
5f248e63
...
@@ -710,24 +710,24 @@ void ReferenceCalcAmoebaMultipoleForceKernel::getInducedDipoles(ContextImpl& con
...
@@ -710,24 +710,24 @@ void ReferenceCalcAmoebaMultipoleForceKernel::getInducedDipoles(ContextImpl& con
delete
amoebaReferenceMultipoleForce
;
delete
amoebaReferenceMultipoleForce
;
}
}
//
void ReferenceCalcAmoebaMultipoleForceKernel::getLabFramePermanentDipoles(ContextImpl& context, vector<Vec3>& outputDipoles) {
void
ReferenceCalcAmoebaMultipoleForceKernel
::
getLabFramePermanentDipoles
(
ContextImpl
&
context
,
vector
<
Vec3
>&
outputDipoles
)
{
//
int numParticles = context.getSystem().getNumParticles();
int
numParticles
=
context
.
getSystem
().
getNumParticles
();
//
outputDipoles.resize(numParticles);
outputDipoles
.
resize
(
numParticles
);
//
//
// Create an AmoebaReferenceMultipoleForce to do the calculation.
// Create an AmoebaReferenceMultipoleForce to do the calculation.
//
//
AmoebaReferenceMultipoleForce* amoebaReferenceMultipoleForce = setupAmoebaReferenceMultipoleForce(context);
AmoebaReferenceMultipoleForce
*
amoebaReferenceMultipoleForce
=
setupAmoebaReferenceMultipoleForce
(
context
);
//
vector<RealVec>& posData = extractPositions(context);
vector
<
RealVec
>&
posData
=
extractPositions
(
context
);
//
//
// Retrieve the permanent dipoles in the lab frame.
// Retrieve the permanent dipoles in the lab frame.
//
//
vector<RealVec> labFramePermanentDipoles;
vector
<
RealVec
>
labFramePermanentDipoles
;
//
amoebaReferenceMultipoleForce->calculateLabFramePermanentDipoles(posData, charges, dipoles, quadrupoles, tholes,
amoebaReferenceMultipoleForce
->
calculateLabFramePermanentDipoles
(
posData
,
charges
,
dipoles
,
quadrupoles
,
tholes
,
//
dampingFactors, polarity, axisTypes, multipoleAtomZs, multipoleAtomXs, multipoleAtomYs, multipoleAtomCovalentInfo, labFramePermanentDipoles);
dampingFactors
,
polarity
,
axisTypes
,
multipoleAtomZs
,
multipoleAtomXs
,
multipoleAtomYs
,
multipoleAtomCovalentInfo
,
labFramePermanentDipoles
);
//
for (int i = 0; i < numParticles; i++)
for
(
int
i
=
0
;
i
<
numParticles
;
i
++
)
//
outputDipoles[i] = labFramePermanentDipoles[i];
outputDipoles
[
i
]
=
labFramePermanentDipoles
[
i
];
//
delete amoebaReferenceMultipoleForce;
delete
amoebaReferenceMultipoleForce
;
//
}
}
...
...
plugins/amoeba/platforms/reference/src/AmoebaReferenceKernels.h
View file @
5f248e63
...
@@ -374,13 +374,13 @@ public:
...
@@ -374,13 +374,13 @@ public:
* @param dipoles the induced dipole moment of particle i is stored into the i'th element
* @param dipoles the induced dipole moment of particle i is stored into the i'th element
*/
*/
void
getInducedDipoles
(
ContextImpl
&
context
,
std
::
vector
<
Vec3
>&
dipoles
);
void
getInducedDipoles
(
ContextImpl
&
context
,
std
::
vector
<
Vec3
>&
dipoles
);
/*
/*
*
* Get the fixed dipole moments of all particles in the global reference frame.
* Get the fixed dipole moments of all particles in the global reference frame.
*
*
* @param context the Context for which to get the fixed dipoles
* @param context the Context for which to get the fixed dipoles
* @param dipoles the fixed dipole moment of particle i is stored into the i'th element
* @param dipoles the fixed dipole moment of particle i is stored into the i'th element
*/
*/
//
void getLabFramePermanentDipoles(ContextImpl& context, std::vector<Vec3>& dipoles);
void
getLabFramePermanentDipoles
(
ContextImpl
&
context
,
std
::
vector
<
Vec3
>&
dipoles
);
/**
/**
* Calculate the electrostatic potential given vector of grid coordinates.
* Calculate the electrostatic potential given vector of grid coordinates.
*
*
...
...
plugins/amoeba/platforms/reference/src/SimTKReference/AmoebaReferenceMultipoleForce.cpp
View file @
5f248e63
...
@@ -1819,31 +1819,31 @@ void AmoebaReferenceMultipoleForce::calculateInducedDipoles(const vector<RealVec
...
@@ -1819,31 +1819,31 @@ void AmoebaReferenceMultipoleForce::calculateInducedDipoles(const vector<RealVec
}
}
//
void AmoebaReferenceMultipoleForce::calculateLabFramePermanentDipoles(const vector<RealVec>& particlePositions,
void AmoebaReferenceMultipoleForce::calculateLabFramePermanentDipoles(const vector<RealVec>& particlePositions,
//
const vector<RealOpenMM>& charges,
const vector<RealOpenMM>& charges,
//
const vector<RealOpenMM>& dipoles,
const vector<RealOpenMM>& dipoles,
//
const vector<RealOpenMM>& quadrupoles,
const vector<RealOpenMM>& quadrupoles,
//
const vector<RealOpenMM>& tholes,
const vector<RealOpenMM>& tholes,
//
const vector<RealOpenMM>& dampingFactors,
const vector<RealOpenMM>& dampingFactors,
//
const vector<RealOpenMM>& polarity,
const vector<RealOpenMM>& polarity,
//
const vector<int>& axisTypes,
const vector<int>& axisTypes,
//
const vector<int>& multipoleAtomZs,
const vector<int>& multipoleAtomZs,
//
const vector<int>& multipoleAtomXs,
const vector<int>& multipoleAtomXs,
//
const vector<int>& multipoleAtomYs,
const vector<int>& multipoleAtomYs,
//
const vector< vector< vector<int> > >& multipoleAtomCovalentInfo,
const vector< vector< vector<int> > >& multipoleAtomCovalentInfo,
//
vector<RealVec>& outputRotatedPermanentDipoles) {
vector<RealVec>& outputRotatedPermanentDipoles) {
//
// setup, including calculating permanent dipoles
// setup, including calculating permanent dipoles
//
//
vector<MultipoleParticleData> particleData;
vector<MultipoleParticleData> particleData;
//
setup(particlePositions, charges, dipoles, quadrupoles, tholes,
setup(particlePositions, charges, dipoles, quadrupoles, tholes,
//
dampingFactors, polarity, axisTypes, multipoleAtomZs, multipoleAtomXs, multipoleAtomYs,
dampingFactors, polarity, axisTypes, multipoleAtomZs, multipoleAtomXs, multipoleAtomYs,
//
multipoleAtomCovalentInfo, particleData);
multipoleAtomCovalentInfo, particleData);
//
for (int i = 0; i < _numParticles; i++)
for (int i = 0; i < _numParticles; i++)
//
{
{
//
_labFramePermanentDipole[i] = particleData[i].dipole;
_labFramePermanentDipole[i] = particleData[i].dipole;
//
}
}
//
outputRotatedPermanentDipoles = _labFramePermanentDipole;
outputRotatedPermanentDipoles = _labFramePermanentDipole;
//
}
}
void AmoebaReferenceMultipoleForce::calculateAmoebaSystemMultipoleMoments(const vector<RealOpenMM>& masses,
void AmoebaReferenceMultipoleForce::calculateAmoebaSystemMultipoleMoments(const vector<RealOpenMM>& masses,
const vector<RealVec>& particlePositions,
const vector<RealVec>& particlePositions,
...
...
plugins/amoeba/platforms/reference/src/SimTKReference/AmoebaReferenceMultipoleForce.h
View file @
5f248e63
...
@@ -538,19 +538,19 @@ public:
...
@@ -538,19 +538,19 @@ public:
* @param outputMultipoleMoments output multipole moments
* @param outputMultipoleMoments output multipole moments
*/
*/
//
void calculateLabFramePermanentDipoles(const vector<RealVec>& particlePositions,
void
calculateLabFramePermanentDipoles
(
const
vector
<
RealVec
>&
particlePositions
,
//
const vector<RealOpenMM>& charges,
const
vector
<
RealOpenMM
>&
charges
,
//
const vector<RealOpenMM>& dipoles,
const
vector
<
RealOpenMM
>&
dipoles
,
//
const vector<RealOpenMM>& quadrupoles,
const
vector
<
RealOpenMM
>&
quadrupoles
,
//
const vector<RealOpenMM>& tholes,
const
vector
<
RealOpenMM
>&
tholes
,
//
const vector<RealOpenMM>& dampingFactors,
const
vector
<
RealOpenMM
>&
dampingFactors
,
//
const vector<RealOpenMM>& polarity,
const
vector
<
RealOpenMM
>&
polarity
,
//
const vector<int>& axisTypes,
const
vector
<
int
>&
axisTypes
,
//
const vector<int>& multipoleAtomZs,
const
vector
<
int
>&
multipoleAtomZs
,
//
const vector<int>& multipoleAtomXs,
const
vector
<
int
>&
multipoleAtomXs
,
//
const vector<int>& multipoleAtomYs,
const
vector
<
int
>&
multipoleAtomYs
,
//
const vector< vector< vector<int> > >& multipoleAtomCovalentInfo,
const
vector
<
vector
<
vector
<
int
>
>
>&
multipoleAtomCovalentInfo
,
//
vector<RealVec>& outputRotatedPermanentDipoles);
vector
<
RealVec
>&
outputRotatedPermanentDipoles
);
/**
/**
* Calculate system multipole moments.
* Calculate system multipole moments.
...
@@ -1013,7 +1013,7 @@ protected:
...
@@ -1013,7 +1013,7 @@ protected:
*
*
* @param particleData vector of particle positions and parameters (charge, labFrame dipoles, quadrupoles, ...)
* @param particleData vector of particle positions and parameters (charge, labFrame dipoles, quadrupoles, ...)
*/
*/
//
virtual void calculateLabFramePermanentDipoles(const std::vector<MultipoleParticleData>& particleData);
virtual
void
calculateLabFramePermanentDipoles
(
const
std
::
vector
<
MultipoleParticleData
>&
particleData
);
/**
/**
* Setup:
* Setup:
...
@@ -1268,7 +1268,7 @@ private:
...
@@ -1268,7 +1268,7 @@ private:
*
*
* @param particleData vector of particle positions and parameters (charge, labFrame dipoles, quadrupoles, ...)
* @param particleData vector of particle positions and parameters (charge, labFrame dipoles, quadrupoles, ...)
*/
*/
//
void calculateLabFramePermanentDipoles(const std::vector<MultipoleParticleData>& particleData);
void
calculateLabFramePermanentDipoles
(
const
std
::
vector
<
MultipoleParticleData
>&
particleData
);
/**
/**
* Calculate fields due induced dipoles at each site.
* Calculate fields due induced dipoles at each site.
...
...
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