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
"plugins/amoeba/vscode:/vscode.git/clone" did not exist on "2913b6866545103cc9cfcf3d9211547752f4ac21"
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:
* This can be overridden by explicitly setting an alpha parameter and grid dimensions to use.
*/
void
setEwaldErrorTolerance
(
double
tol
);
/*
/*
*
* 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[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.
*
...
...
plugins/amoeba/openmmapi/include/openmm/amoebaKernels.h
View file @
5f248e63
...
...
@@ -348,7 +348,7 @@ public:
*/
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
getElectrostaticPotential
(
ContextImpl
&
context
,
const
std
::
vector
<
Vec3
>&
inputGrid
,
...
...
plugins/amoeba/openmmapi/include/openmm/internal/AmoebaMultipoleForceImpl.h
View file @
5f248e63
...
...
@@ -81,7 +81,7 @@ public:
* @param covalentDegree covalent degrees for the CovalentEnd lists
*/
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
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
dynamic_cast
<
AmoebaMultipoleForceImpl
&>
(
getImplInContext
(
context
)).
getInducedDipoles
(
getContextImpl
(
context
),
dipoles
);
}
//
void AmoebaMultipoleForce::getLabFramePermanentDipoles(Context& context, vector<Vec3>& dipoles) {
//
dynamic_cast<AmoebaMultipoleForceImpl&>(getImplInContext(context)).getLabFramePermanentDipoles(getContextImpl(context), dipoles);
//
}
void
AmoebaMultipoleForce
::
getLabFramePermanentDipoles
(
Context
&
context
,
vector
<
Vec3
>&
dipoles
)
{
dynamic_cast
<
AmoebaMultipoleForceImpl
&>
(
getImplInContext
(
context
)).
getLabFramePermanentDipoles
(
getContextImpl
(
context
),
dipoles
);
}
void
AmoebaMultipoleForce
::
getElectrostaticPotential
(
const
std
::
vector
<
Vec3
>&
inputGrid
,
Context
&
context
,
std
::
vector
<
double
>&
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
return
;
}
//
void AmoebaMultipoleForceImpl::getLabFramePermanentDipoles(ContextImpl& context, vector<Vec3>& dipoles) {
//
kernel.getAs<CalcAmoebaMultipoleForceKernel>().getLabFramePermanentDipoles(context, dipoles);
//
}
void
AmoebaMultipoleForceImpl
::
getLabFramePermanentDipoles
(
ContextImpl
&
context
,
vector
<
Vec3
>&
dipoles
)
{
kernel
.
getAs
<
CalcAmoebaMultipoleForceKernel
>
().
getLabFramePermanentDipoles
(
context
,
dipoles
);
}
void
AmoebaMultipoleForceImpl
::
getInducedDipoles
(
ContextImpl
&
context
,
vector
<
Vec3
>&
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
delete
amoebaReferenceMultipoleForce
;
}
//
void ReferenceCalcAmoebaMultipoleForceKernel::getLabFramePermanentDipoles(ContextImpl& context, vector<Vec3>& outputDipoles) {
//
int numParticles = context.getSystem().getNumParticles();
//
outputDipoles.resize(numParticles);
//
//
// Create an AmoebaReferenceMultipoleForce to do the calculation.
//
//
AmoebaReferenceMultipoleForce* amoebaReferenceMultipoleForce = setupAmoebaReferenceMultipoleForce(context);
//
vector<RealVec>& posData = extractPositions(context);
//
//
// Retrieve the permanent dipoles in the lab frame.
//
//
vector<RealVec> labFramePermanentDipoles;
//
amoebaReferenceMultipoleForce->calculateLabFramePermanentDipoles(posData, charges, dipoles, quadrupoles, tholes,
//
dampingFactors, polarity, axisTypes, multipoleAtomZs, multipoleAtomXs, multipoleAtomYs, multipoleAtomCovalentInfo, labFramePermanentDipoles);
//
for (int i = 0; i < numParticles; i++)
//
outputDipoles[i] = labFramePermanentDipoles[i];
//
delete amoebaReferenceMultipoleForce;
//
}
void
ReferenceCalcAmoebaMultipoleForceKernel
::
getLabFramePermanentDipoles
(
ContextImpl
&
context
,
vector
<
Vec3
>&
outputDipoles
)
{
int
numParticles
=
context
.
getSystem
().
getNumParticles
();
outputDipoles
.
resize
(
numParticles
);
// Create an AmoebaReferenceMultipoleForce to do the calculation.
AmoebaReferenceMultipoleForce
*
amoebaReferenceMultipoleForce
=
setupAmoebaReferenceMultipoleForce
(
context
);
vector
<
RealVec
>&
posData
=
extractPositions
(
context
);
// Retrieve the permanent dipoles in the lab frame.
vector
<
RealVec
>
labFramePermanentDipoles
;
amoebaReferenceMultipoleForce
->
calculateLabFramePermanentDipoles
(
posData
,
charges
,
dipoles
,
quadrupoles
,
tholes
,
dampingFactors
,
polarity
,
axisTypes
,
multipoleAtomZs
,
multipoleAtomXs
,
multipoleAtomYs
,
multipoleAtomCovalentInfo
,
labFramePermanentDipoles
);
for
(
int
i
=
0
;
i
<
numParticles
;
i
++
)
outputDipoles
[
i
]
=
labFramePermanentDipoles
[
i
];
delete
amoebaReferenceMultipoleForce
;
}
...
...
plugins/amoeba/platforms/reference/src/AmoebaReferenceKernels.h
View file @
5f248e63
...
...
@@ -374,13 +374,13 @@ public:
* @param dipoles the induced dipole moment of particle i is stored into the i'th element
*/
void
getInducedDipoles
(
ContextImpl
&
context
,
std
::
vector
<
Vec3
>&
dipoles
);
/*
/*
*
* 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 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.
*
...
...
plugins/amoeba/platforms/reference/src/SimTKReference/AmoebaReferenceMultipoleForce.cpp
View file @
5f248e63
...
...
@@ -1819,31 +1819,31 @@ void AmoebaReferenceMultipoleForce::calculateInducedDipoles(const vector<RealVec
}
//
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
::
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
,
...
...
plugins/amoeba/platforms/reference/src/SimTKReference/AmoebaReferenceMultipoleForce.h
View file @
5f248e63
...
...
@@ -538,19 +538,19 @@ public:
* @param outputMultipoleMoments output multipole moments
*/
//
void 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);
void
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.
...
...
@@ -1013,7 +1013,7 @@ protected:
*
* @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:
...
...
@@ -1268,7 +1268,7 @@ private:
*
* @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.
...
...
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