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
5e3a0a05
Commit
5e3a0a05
authored
Jan 22, 2015
by
Peter Eastman
Browse files
Began implementing triclinic boxes for reference AmoebaMultipoleForce (not yet debugged)
parent
3b2579a5
Changes
3
Expand all
Hide whitespace changes
Inline
Side-by-side
Showing
3 changed files
with
317 additions
and
176 deletions
+317
-176
plugins/amoeba/platforms/reference/src/AmoebaReferenceKernels.cpp
...amoeba/platforms/reference/src/AmoebaReferenceKernels.cpp
+10
-10
plugins/amoeba/platforms/reference/src/SimTKReference/AmoebaReferenceMultipoleForce.cpp
...ence/src/SimTKReference/AmoebaReferenceMultipoleForce.cpp
+280
-152
plugins/amoeba/platforms/reference/src/SimTKReference/AmoebaReferenceMultipoleForce.h
...erence/src/SimTKReference/AmoebaReferenceMultipoleForce.h
+27
-14
No files found.
plugins/amoeba/platforms/reference/src/AmoebaReferenceKernels.cpp
View file @
5e3a0a05
...
@@ -640,17 +640,17 @@ AmoebaReferenceMultipoleForce* ReferenceCalcAmoebaMultipoleForceKernel::setupAmo
...
@@ -640,17 +640,17 @@ AmoebaReferenceMultipoleForce* ReferenceCalcAmoebaMultipoleForceKernel::setupAmo
}
else
if
(
usePme
)
{
}
else
if
(
usePme
)
{
AmoebaReferencePmeMultipoleForce
*
amoebaReferencePmeMultipoleForce
=
new
AmoebaReferencePmeMultipoleForce
(
);
AmoebaReferencePmeMultipoleForce
*
amoebaReferencePmeMultipoleForce
=
new
AmoebaReferencePmeMultipoleForce
(
);
amoebaReferencePmeMultipoleForce
->
setAlphaEwald
(
alphaEwald
);
amoebaReferencePmeMultipoleForce
->
setAlphaEwald
(
alphaEwald
);
amoebaReferencePmeMultipoleForce
->
setCutoffDistance
(
cutoffDistance
);
amoebaReferencePmeMultipoleForce
->
setCutoffDistance
(
cutoffDistance
);
amoebaReferencePmeMultipoleForce
->
setPmeGridDimensions
(
pmeGridDimension
);
amoebaReferencePmeMultipoleForce
->
setPmeGridDimensions
(
pmeGridDimension
);
RealVec
&
box
=
extractBox
Size
(
context
);
RealVec
*
box
Vectors
=
extractBox
Vectors
(
context
);
double
minAllowedSize
=
1.999999
*
cutoffDistance
;
double
minAllowedSize
=
1.999999
*
cutoffDistance
;
if
(
box
[
0
]
<
minAllowedSize
||
box
[
1
]
<
minAllowedSize
||
box
[
2
]
<
minAllowedSize
){
if
(
box
Vectors
[
0
]
[
0
]
<
minAllowedSize
||
box
Vectors
[
1
]
[
1
]
<
minAllowedSize
||
box
Vectors
[
2
]
[
2
]
<
minAllowedSize
){
throw
OpenMMException
(
"The periodic box size has decreased to less than twice the nonbonded cutoff."
);
throw
OpenMMException
(
"The periodic box size has decreased to less than twice the nonbonded cutoff."
);
}
}
amoebaReferencePmeMultipoleForce
->
setPeriodicBoxSize
(
box
);
amoebaReferencePmeMultipoleForce
->
setPeriodicBoxSize
(
box
Vectors
);
amoebaReferenceMultipoleForce
=
static_cast
<
AmoebaReferenceMultipoleForce
*>
(
amoebaReferencePmeMultipoleForce
);
amoebaReferenceMultipoleForce
=
static_cast
<
AmoebaReferenceMultipoleForce
*>
(
amoebaReferencePmeMultipoleForce
);
}
else
{
}
else
{
amoebaReferenceMultipoleForce
=
new
AmoebaReferenceMultipoleForce
(
AmoebaReferenceMultipoleForce
::
NoCutoff
);
amoebaReferenceMultipoleForce
=
new
AmoebaReferenceMultipoleForce
(
AmoebaReferenceMultipoleForce
::
NoCutoff
);
...
...
plugins/amoeba/platforms/reference/src/SimTKReference/AmoebaReferenceMultipoleForce.cpp
View file @
5e3a0a05
This diff is collapsed.
Click to expand it.
plugins/amoeba/platforms/reference/src/SimTKReference/AmoebaReferenceMultipoleForce.h
View file @
5e3a0a05
...
@@ -591,6 +591,16 @@ protected:
...
@@ -591,6 +591,16 @@ protected:
RealOpenMM
dampingFactor
;
RealOpenMM
dampingFactor
;
RealOpenMM
polarity
;
RealOpenMM
polarity
;
};
};
/**
* Particle parameters transformed into fractional coordinates
*/
class
TransformedMultipole
{
public:
RealOpenMM
charge
;
RealVec
dipole
;
RealOpenMM
quadrupole
[
6
];
};
/*
/*
* Helper class used in calculating induced dipoles
* Helper class used in calculating induced dipoles
...
@@ -618,6 +628,7 @@ protected:
...
@@ -618,6 +628,7 @@ protected:
RealOpenMM
_mScale
[
5
];
RealOpenMM
_mScale
[
5
];
RealOpenMM
_uScale
[
5
];
RealOpenMM
_uScale
[
5
];
std
::
vector
<
TransformedMultipole
>
_transformed
;
std
::
vector
<
RealVec
>
_fixedMultipoleField
;
std
::
vector
<
RealVec
>
_fixedMultipoleField
;
std
::
vector
<
RealVec
>
_fixedMultipoleFieldPolar
;
std
::
vector
<
RealVec
>
_fixedMultipoleFieldPolar
;
std
::
vector
<
RealVec
>
_inducedDipole
;
std
::
vector
<
RealVec
>
_inducedDipole
;
...
@@ -1327,9 +1338,9 @@ public:
...
@@ -1327,9 +1338,9 @@ public:
/**
/**
* Set periodic box size.
* Set periodic box size.
*
*
* @param
boxSize box dimensions
* @param
vectors the vectors defining the periodic box
*/
*/
void
setPeriodicBoxSize
(
RealVec
&
boxSize
);
void
setPeriodicBoxSize
(
OpenMM
::
RealVec
*
vectors
);
private:
private:
...
@@ -1340,8 +1351,8 @@ private:
...
@@ -1340,8 +1351,8 @@ private:
RealOpenMM
_cutoffDistance
;
RealOpenMM
_cutoffDistance
;
RealOpenMM
_cutoffDistanceSquared
;
RealOpenMM
_cutoffDistanceSquared
;
RealVec
_
invPeriodicBoxSize
;
RealVec
_
recipBoxVectors
[
3
]
;
RealVec
_periodicBox
Size
;
RealVec
_periodicBox
Vectors
[
3
]
;
int
_totalGridSize
;
int
_totalGridSize
;
IntVec
_pmeGridDimensions
;
IntVec
_pmeGridDimensions
;
...
@@ -1382,12 +1393,6 @@ private:
...
@@ -1382,12 +1393,6 @@ private:
*/
*/
void
getPeriodicDelta
(
RealVec
&
deltaR
)
const
;
void
getPeriodicDelta
(
RealVec
&
deltaR
)
const
;
/**
* Get PME scale.
*
*/
void
getPmeScale
(
RealVec
&
scale
)
const
;
/**
/**
* Calculate damped inverse distances.
* Calculate damped inverse distances.
*
*
...
@@ -1460,7 +1465,6 @@ private:
...
@@ -1460,7 +1465,6 @@ private:
/**
/**
* Compute induced dipole grid value.
* Compute induced dipole grid value.
*
*
* @param particleData vector of particle positions and parameters (charge, labFrame dipoles, quadrupoles, ...)
* @param particleGridIndices particle grid indices
* @param particleGridIndices particle grid indices
* @param scale integer grid dimension/box size for each dimension
* @param scale integer grid dimension/box size for each dimension
* @param ix x-dimension offset value
* @param ix x-dimension offset value
...
@@ -1469,8 +1473,17 @@ private:
...
@@ -1469,8 +1473,17 @@ private:
* @param inputInducedDipole induced dipole value
* @param inputInducedDipole induced dipole value
* @param inputInducedDipolePolar induced dipole value
* @param inputInducedDipolePolar induced dipole value
*/
*/
RealOpenMM
computeFixedMultipolesGridValue
(
const
vector
<
MultipoleParticleData
>&
particleData
,
RealOpenMM
computeFixedMultipolesGridValue
(
const
int2
&
particleGridIndices
,
int
ix
,
int
iy
,
const
IntVec
&
gridPoint
)
const
;
const
int2
&
particleGridIndices
,
const
RealVec
&
scale
,
int
ix
,
int
iy
,
const
IntVec
&
gridPoint
)
const
;
/**
* Transform multipoles from cartesian coordinates to fractional coordinates.
*/
void
transformMultipolesToFractionalCoordinates
(
const
vector
<
MultipoleParticleData
>&
particleData
);
/**
* Transform potential from fractional coordinates to cartesian coordinates.
*/
void
transformPotentialToCartesianCoordinates
(
const
std
::
vector
<
RealOpenMM
>&
fphi
,
std
::
vector
<
RealOpenMM
>&
cphi
)
const
;
/**
/**
* Spread fixed multipoles onto PME grid.
* Spread fixed multipoles onto PME grid.
...
@@ -1568,7 +1581,7 @@ private:
...
@@ -1568,7 +1581,7 @@ private:
* @param inputInducedDipole induced dipole value
* @param inputInducedDipole induced dipole value
* @param inputInducedDipolePolar induced dipole polar value
* @param inputInducedDipolePolar induced dipole polar value
*/
*/
t_complex
computeInducedDipoleGridValue
(
const
int2
&
atomIndices
,
const
RealVec
&
scale
,
int
ix
,
int
iy
,
const
IntVec
&
gridPoint
,
t_complex
computeInducedDipoleGridValue
(
const
int2
&
atomIndices
,
const
RealVec
*
fracToCart
,
int
ix
,
int
iy
,
const
IntVec
&
gridPoint
,
const
std
::
vector
<
RealVec
>&
inputInducedDipole
,
const
std
::
vector
<
RealVec
>&
inputInducedDipole
,
const
std
::
vector
<
RealVec
>&
inputInducedDipolePolar
)
const
;
const
std
::
vector
<
RealVec
>&
inputInducedDipolePolar
)
const
;
...
...
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