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
6786cc75
Unverified
Commit
6786cc75
authored
Feb 26, 2020
by
peastman
Committed by
GitHub
Feb 26, 2020
Browse files
Merge pull request #2561 from peastman/middle
Converted BAOABLangevinIntegrator to LangevinMiddleIntegrator
parents
3fdc297c
cc59da1a
Changes
44
Hide whitespace changes
Inline
Side-by-side
Showing
20 changed files
with
120 additions
and
161 deletions
+120
-161
platforms/cpu/include/CpuLangevinMiddleDynamics.h
platforms/cpu/include/CpuLangevinMiddleDynamics.h
+9
-13
platforms/cpu/src/CpuKernelFactory.cpp
platforms/cpu/src/CpuKernelFactory.cpp
+2
-2
platforms/cpu/src/CpuKernels.cpp
platforms/cpu/src/CpuKernels.cpp
+7
-7
platforms/cpu/src/CpuLangevinMiddleDynamics.cpp
platforms/cpu/src/CpuLangevinMiddleDynamics.cpp
+17
-41
platforms/cpu/src/CpuPlatform.cpp
platforms/cpu/src/CpuPlatform.cpp
+1
-1
platforms/cpu/tests/TestCpuLangevinMiddleIntegrator.cpp
platforms/cpu/tests/TestCpuLangevinMiddleIntegrator.cpp
+1
-1
platforms/cuda/src/CudaKernelFactory.cpp
platforms/cuda/src/CudaKernelFactory.cpp
+2
-2
platforms/cuda/src/CudaPlatform.cpp
platforms/cuda/src/CudaPlatform.cpp
+1
-1
platforms/cuda/tests/TestCudaLangevinMiddleIntegrator.cpp
platforms/cuda/tests/TestCudaLangevinMiddleIntegrator.cpp
+1
-1
platforms/opencl/src/OpenCLKernelFactory.cpp
platforms/opencl/src/OpenCLKernelFactory.cpp
+2
-2
platforms/opencl/src/OpenCLPlatform.cpp
platforms/opencl/src/OpenCLPlatform.cpp
+1
-1
platforms/opencl/tests/TestOpenCLLangevinMiddleIntegrator.cpp
...forms/opencl/tests/TestOpenCLLangevinMiddleIntegrator.cpp
+1
-1
platforms/reference/include/ReferenceKernels.h
platforms/reference/include/ReferenceKernels.h
+13
-17
platforms/reference/include/ReferenceLangevinMiddleDynamics.h
...forms/reference/include/ReferenceLangevinMiddleDynamics.h
+11
-16
platforms/reference/src/ReferenceKernelFactory.cpp
platforms/reference/src/ReferenceKernelFactory.cpp
+2
-2
platforms/reference/src/ReferenceKernels.cpp
platforms/reference/src/ReferenceKernels.cpp
+8
-8
platforms/reference/src/ReferencePlatform.cpp
platforms/reference/src/ReferencePlatform.cpp
+1
-1
platforms/reference/src/SimTKReference/ReferenceLangevinMiddleDynamics.cpp
...ce/src/SimTKReference/ReferenceLangevinMiddleDynamics.cpp
+22
-43
platforms/reference/tests/TestReferenceLangevinMiddleIntegrator.cpp
...reference/tests/TestReferenceLangevinMiddleIntegrator.cpp
+1
-1
serialization/include/openmm/serialization/LangevinMiddleIntegratorProxy.h
...lude/openmm/serialization/LangevinMiddleIntegratorProxy.h
+17
-0
No files found.
platforms/cpu/include/Cpu
BAOAB
Dynamics.h
→
platforms/cpu/include/Cpu
LangevinMiddle
Dynamics.h
View file @
6786cc75
/* Portions copyright (c) 2013-20
19
Stanford University and Simbios.
/* Portions copyright (c) 2013-20
20
Stanford University and Simbios.
* Authors: Peter Eastman
* Authors: Peter Eastman
* Contributors:
* Contributors:
*
*
...
@@ -23,17 +23,17 @@
...
@@ -23,17 +23,17 @@
* WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
* WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
*/
*/
#ifndef __CPU_
BAOAB
_DYNAMICS_H__
#ifndef __CPU_
LANGEVIN_MIDDLE
_DYNAMICS_H__
#define __CPU_
BAOAB
_DYNAMICS_H__
#define __CPU_
LANGEVIN_MIDDLE
_DYNAMICS_H__
#include "Reference
BAOAB
Dynamics.h"
#include "Reference
LangevinMiddle
Dynamics.h"
#include "CpuRandom.h"
#include "CpuRandom.h"
#include "openmm/internal/ThreadPool.h"
#include "openmm/internal/ThreadPool.h"
#include "sfmt/SFMT.h"
#include "sfmt/SFMT.h"
namespace
OpenMM
{
namespace
OpenMM
{
class
Cpu
BAOAB
Dynamics
:
public
Reference
BAOAB
Dynamics
{
class
Cpu
LangevinMiddle
Dynamics
:
public
Reference
LangevinMiddle
Dynamics
{
public:
public:
/**
/**
* Constructor.
* Constructor.
...
@@ -45,25 +45,22 @@ public:
...
@@ -45,25 +45,22 @@ public:
* @param threads thread pool for parallelizing computation
* @param threads thread pool for parallelizing computation
* @param random random number generator
* @param random random number generator
*/
*/
Cpu
BAOAB
Dynamics
(
int
numberOfAtoms
,
double
deltaT
,
double
friction
,
double
temperature
,
OpenMM
::
ThreadPool
&
threads
,
OpenMM
::
CpuRandom
&
random
);
Cpu
LangevinMiddle
Dynamics
(
int
numberOfAtoms
,
double
deltaT
,
double
friction
,
double
temperature
,
OpenMM
::
ThreadPool
&
threads
,
OpenMM
::
CpuRandom
&
random
);
/**
/**
* Destructor.
* Destructor.
*/
*/
~
Cpu
BAOAB
Dynamics
();
~
Cpu
LangevinMiddle
Dynamics
();
/**
/**
* First update step.
* First update step.
*
*
* @param numberOfAtoms number of atoms
* @param numberOfAtoms number of atoms
* @param atomCoordinates atom coordinates
* @param velocities velocities
* @param velocities velocities
* @param forces forces
* @param forces forces
* @param inverseMasses inverse atom masses
* @param inverseMasses inverse atom masses
* @param xPrime xPrime
*/
*/
void
updatePart1
(
int
numberOfAtoms
,
std
::
vector
<
OpenMM
::
Vec3
>&
atomCoordinates
,
std
::
vector
<
OpenMM
::
Vec3
>&
velocities
,
void
updatePart1
(
int
numberOfAtoms
,
std
::
vector
<
OpenMM
::
Vec3
>&
velocities
,
std
::
vector
<
OpenMM
::
Vec3
>&
forces
,
std
::
vector
<
double
>&
inverseMasses
);
std
::
vector
<
OpenMM
::
Vec3
>&
forces
,
std
::
vector
<
double
>&
inverseMasses
,
std
::
vector
<
OpenMM
::
Vec3
>&
xPrime
);
/**
/**
* Second update step.
* Second update step.
...
@@ -94,7 +91,6 @@ private:
...
@@ -94,7 +91,6 @@ private:
void
threadUpdate1
(
int
threadIndex
);
void
threadUpdate1
(
int
threadIndex
);
void
threadUpdate2
(
int
threadIndex
);
void
threadUpdate2
(
int
threadIndex
);
void
threadUpdate3
(
int
threadIndex
);
void
threadUpdate3
(
int
threadIndex
);
void
threadUpdate4
(
int
threadIndex
);
OpenMM
::
ThreadPool
&
threads
;
OpenMM
::
ThreadPool
&
threads
;
OpenMM
::
CpuRandom
&
random
;
OpenMM
::
CpuRandom
&
random
;
std
::
vector
<
OpenMM_SFMT
::
SFMT
>
threadRandom
;
std
::
vector
<
OpenMM_SFMT
::
SFMT
>
threadRandom
;
...
@@ -109,4 +105,4 @@ private:
...
@@ -109,4 +105,4 @@ private:
}
// namespace OpenMM
}
// namespace OpenMM
#endif // __CPU_
BAOAB
_DYNAMICS_H__
#endif // __CPU_
LANGEVIN_MIDDLE
_DYNAMICS_H__
platforms/cpu/src/CpuKernelFactory.cpp
View file @
6786cc75
...
@@ -61,7 +61,7 @@ KernelImpl* CpuKernelFactory::createKernelImpl(std::string name, const Platform&
...
@@ -61,7 +61,7 @@ KernelImpl* CpuKernelFactory::createKernelImpl(std::string name, const Platform&
return
new
CpuCalcGayBerneForceKernel
(
name
,
platform
,
data
);
return
new
CpuCalcGayBerneForceKernel
(
name
,
platform
,
data
);
if
(
name
==
IntegrateLangevinStepKernel
::
Name
())
if
(
name
==
IntegrateLangevinStepKernel
::
Name
())
return
new
CpuIntegrateLangevinStepKernel
(
name
,
platform
,
data
);
return
new
CpuIntegrateLangevinStepKernel
(
name
,
platform
,
data
);
if
(
name
==
Integrate
BAOAB
StepKernel
::
Name
())
if
(
name
==
Integrate
LangevinMiddle
StepKernel
::
Name
())
return
new
CpuIntegrate
BAOAB
StepKernel
(
name
,
platform
,
data
);
return
new
CpuIntegrate
LangevinMiddle
StepKernel
(
name
,
platform
,
data
);
throw
OpenMMException
((
std
::
string
(
"Tried to create kernel with illegal kernel name '"
)
+
name
+
"'"
).
c_str
());
throw
OpenMMException
((
std
::
string
(
"Tried to create kernel with illegal kernel name '"
)
+
name
+
"'"
).
c_str
());
}
}
platforms/cpu/src/CpuKernels.cpp
View file @
6786cc75
...
@@ -6,7 +6,7 @@
...
@@ -6,7 +6,7 @@
* Biological Structures at Stanford, funded under the NIH Roadmap for *
* Biological Structures at Stanford, funded under the NIH Roadmap for *
* Medical Research, grant U54 GM072970. See https://simtk.org. *
* Medical Research, grant U54 GM072970. See https://simtk.org. *
* *
* *
* Portions copyright (c) 2013-20
19
Stanford University and the Authors. *
* Portions copyright (c) 2013-20
20
Stanford University and the Authors. *
* Authors: Peter Eastman *
* Authors: Peter Eastman *
* Contributors: *
* Contributors: *
* *
* *
...
@@ -1361,12 +1361,12 @@ double CpuIntegrateLangevinStepKernel::computeKineticEnergy(ContextImpl& context
...
@@ -1361,12 +1361,12 @@ double CpuIntegrateLangevinStepKernel::computeKineticEnergy(ContextImpl& context
return
computeShiftedKineticEnergy
(
context
,
masses
,
0.5
*
integrator
.
getStepSize
());
return
computeShiftedKineticEnergy
(
context
,
masses
,
0.5
*
integrator
.
getStepSize
());
}
}
CpuIntegrate
BAOAB
StepKernel
::~
CpuIntegrate
BAOAB
StepKernel
()
{
CpuIntegrate
LangevinMiddle
StepKernel
::~
CpuIntegrate
LangevinMiddle
StepKernel
()
{
if
(
dynamics
)
if
(
dynamics
)
delete
dynamics
;
delete
dynamics
;
}
}
void
CpuIntegrate
BAOAB
StepKernel
::
initialize
(
const
System
&
system
,
const
BAOAB
LangevinIntegrator
&
integrator
)
{
void
CpuIntegrate
LangevinMiddle
StepKernel
::
initialize
(
const
System
&
system
,
const
Langevin
Middle
Integrator
&
integrator
)
{
int
numParticles
=
system
.
getNumParticles
();
int
numParticles
=
system
.
getNumParticles
();
masses
.
resize
(
numParticles
);
masses
.
resize
(
numParticles
);
for
(
int
i
=
0
;
i
<
numParticles
;
++
i
)
for
(
int
i
=
0
;
i
<
numParticles
;
++
i
)
...
@@ -1374,7 +1374,7 @@ void CpuIntegrateBAOABStepKernel::initialize(const System& system, const BAOABLa
...
@@ -1374,7 +1374,7 @@ void CpuIntegrateBAOABStepKernel::initialize(const System& system, const BAOABLa
data
.
random
.
initialize
(
integrator
.
getRandomNumberSeed
(),
data
.
threads
.
getNumThreads
());
data
.
random
.
initialize
(
integrator
.
getRandomNumberSeed
(),
data
.
threads
.
getNumThreads
());
}
}
void
CpuIntegrate
BAOAB
StepKernel
::
execute
(
ContextImpl
&
context
,
const
BAOAB
LangevinIntegrator
&
integrator
,
bool
&
forcesAreValid
)
{
void
CpuIntegrate
LangevinMiddle
StepKernel
::
execute
(
ContextImpl
&
context
,
const
Langevin
Middle
Integrator
&
integrator
)
{
double
temperature
=
integrator
.
getTemperature
();
double
temperature
=
integrator
.
getTemperature
();
double
friction
=
integrator
.
getFriction
();
double
friction
=
integrator
.
getFriction
();
double
stepSize
=
integrator
.
getStepSize
();
double
stepSize
=
integrator
.
getStepSize
();
...
@@ -1385,18 +1385,18 @@ void CpuIntegrateBAOABStepKernel::execute(ContextImpl& context, const BAOABLange
...
@@ -1385,18 +1385,18 @@ void CpuIntegrateBAOABStepKernel::execute(ContextImpl& context, const BAOABLange
if
(
dynamics
)
if
(
dynamics
)
delete
dynamics
;
delete
dynamics
;
dynamics
=
new
Cpu
BAOAB
Dynamics
(
context
.
getSystem
().
getNumParticles
(),
stepSize
,
friction
,
temperature
,
data
.
threads
,
data
.
random
);
dynamics
=
new
Cpu
LangevinMiddle
Dynamics
(
context
.
getSystem
().
getNumParticles
(),
stepSize
,
friction
,
temperature
,
data
.
threads
,
data
.
random
);
dynamics
->
setReferenceConstraintAlgorithm
(
&
extractConstraints
(
context
));
dynamics
->
setReferenceConstraintAlgorithm
(
&
extractConstraints
(
context
));
prevTemp
=
temperature
;
prevTemp
=
temperature
;
prevFriction
=
friction
;
prevFriction
=
friction
;
prevStepSize
=
stepSize
;
prevStepSize
=
stepSize
;
}
}
dynamics
->
update
(
context
,
posData
,
velData
,
masses
,
forcesAreValid
,
integrator
.
getConstraintTolerance
());
dynamics
->
update
(
context
,
posData
,
velData
,
masses
,
integrator
.
getConstraintTolerance
());
ReferencePlatform
::
PlatformData
*
refData
=
reinterpret_cast
<
ReferencePlatform
::
PlatformData
*>
(
context
.
getPlatformData
());
ReferencePlatform
::
PlatformData
*
refData
=
reinterpret_cast
<
ReferencePlatform
::
PlatformData
*>
(
context
.
getPlatformData
());
refData
->
time
+=
stepSize
;
refData
->
time
+=
stepSize
;
refData
->
stepCount
++
;
refData
->
stepCount
++
;
}
}
double
CpuIntegrate
BAOAB
StepKernel
::
computeKineticEnergy
(
ContextImpl
&
context
,
const
BAOAB
LangevinIntegrator
&
integrator
)
{
double
CpuIntegrate
LangevinMiddle
StepKernel
::
computeKineticEnergy
(
ContextImpl
&
context
,
const
Langevin
Middle
Integrator
&
integrator
)
{
return
computeShiftedKineticEnergy
(
context
,
masses
,
0.0
);
return
computeShiftedKineticEnergy
(
context
,
masses
,
0.0
);
}
}
platforms/cpu/src/Cpu
BAOAB
Dynamics.cpp
→
platforms/cpu/src/Cpu
LangevinMiddle
Dynamics.cpp
View file @
6786cc75
/* Portions copyright (c) 2006-2020 Stanford University and Simbios.
/* Portions copyright (c) 2006-2019 Stanford University and Simbios.
* Authors: Peter Eastman
* Authors: Peter Eastman
* Contributors:
* Contributors:
*
*
...
@@ -24,28 +23,25 @@
...
@@ -24,28 +23,25 @@
*/
*/
#include "SimTKOpenMMUtilities.h"
#include "SimTKOpenMMUtilities.h"
#include "Cpu
BAOAB
Dynamics.h"
#include "Cpu
LangevinMiddle
Dynamics.h"
using
namespace
OpenMM
;
using
namespace
OpenMM
;
using
namespace
std
;
using
namespace
std
;
Cpu
BAOABDynamics
::
CpuBAOAB
Dynamics
(
int
numberOfAtoms
,
double
deltaT
,
double
friction
,
double
temperature
,
ThreadPool
&
threads
,
CpuRandom
&
random
)
:
Cpu
LangevinMiddleDynamics
::
CpuLangevinMiddle
Dynamics
(
int
numberOfAtoms
,
double
deltaT
,
double
friction
,
double
temperature
,
ThreadPool
&
threads
,
CpuRandom
&
random
)
:
Reference
BAOAB
Dynamics
(
numberOfAtoms
,
deltaT
,
friction
,
temperature
),
threads
(
threads
),
random
(
random
)
{
Reference
LangevinMiddle
Dynamics
(
numberOfAtoms
,
deltaT
,
friction
,
temperature
),
threads
(
threads
),
random
(
random
)
{
}
}
Cpu
BAOABDynamics
::~
CpuBAOAB
Dynamics
()
{
Cpu
LangevinMiddleDynamics
::~
CpuLangevinMiddle
Dynamics
()
{
}
}
void
CpuBAOABDynamics
::
updatePart1
(
int
numberOfAtoms
,
vector
<
Vec3
>&
atomCoordinates
,
vector
<
Vec3
>&
velocities
,
void
CpuLangevinMiddleDynamics
::
updatePart1
(
int
numberOfAtoms
,
vector
<
Vec3
>&
velocities
,
vector
<
Vec3
>&
forces
,
vector
<
double
>&
inverseMasses
)
{
vector
<
Vec3
>&
forces
,
vector
<
double
>&
inverseMasses
,
vector
<
Vec3
>&
xPrime
)
{
// Record the parameters for the threads.
// Record the parameters for the threads.
this
->
numberOfAtoms
=
numberOfAtoms
;
this
->
numberOfAtoms
=
numberOfAtoms
;
this
->
atomCoordinates
=
&
atomCoordinates
[
0
];
this
->
velocities
=
&
velocities
[
0
];
this
->
velocities
=
&
velocities
[
0
];
this
->
forces
=
&
forces
[
0
];
this
->
forces
=
&
forces
[
0
];
this
->
inverseMasses
=
&
inverseMasses
[
0
];
this
->
inverseMasses
=
&
inverseMasses
[
0
];
this
->
xPrime
=
&
xPrime
[
0
];
// Signal the threads to start running and wait for them to finish.
// Signal the threads to start running and wait for them to finish.
...
@@ -53,7 +49,7 @@ void CpuBAOABDynamics::updatePart1(int numberOfAtoms, vector<Vec3>& atomCoordina
...
@@ -53,7 +49,7 @@ void CpuBAOABDynamics::updatePart1(int numberOfAtoms, vector<Vec3>& atomCoordina
threads
.
waitForThreads
();
threads
.
waitForThreads
();
}
}
void
Cpu
BAOAB
Dynamics
::
updatePart2
(
int
numberOfAtoms
,
vector
<
Vec3
>&
atomCoordinates
,
vector
<
Vec3
>&
velocities
,
void
Cpu
LangevinMiddle
Dynamics
::
updatePart2
(
int
numberOfAtoms
,
vector
<
Vec3
>&
atomCoordinates
,
vector
<
Vec3
>&
velocities
,
vector
<
double
>&
inverseMasses
,
vector
<
Vec3
>&
xPrime
)
{
vector
<
double
>&
inverseMasses
,
vector
<
Vec3
>&
xPrime
)
{
// Record the parameters for the threads.
// Record the parameters for the threads.
...
@@ -69,7 +65,7 @@ void CpuBAOABDynamics::updatePart2(int numberOfAtoms, vector<Vec3>& atomCoordina
...
@@ -69,7 +65,7 @@ void CpuBAOABDynamics::updatePart2(int numberOfAtoms, vector<Vec3>& atomCoordina
threads
.
waitForThreads
();
threads
.
waitForThreads
();
}
}
void
Cpu
BAOAB
Dynamics
::
updatePart3
(
ContextImpl
&
context
,
int
numberOfAtoms
,
vector
<
Vec3
>&
atomCoordinates
,
vector
<
Vec3
>&
velocities
,
void
Cpu
LangevinMiddle
Dynamics
::
updatePart3
(
ContextImpl
&
context
,
int
numberOfAtoms
,
vector
<
Vec3
>&
atomCoordinates
,
vector
<
Vec3
>&
velocities
,
vector
<
double
>&
inverseMasses
,
vector
<
Vec3
>&
xPrime
)
{
vector
<
double
>&
inverseMasses
,
vector
<
Vec3
>&
xPrime
)
{
// Record the parameters for the threads.
// Record the parameters for the threads.
...
@@ -83,26 +79,18 @@ void CpuBAOABDynamics::updatePart3(ContextImpl& context, int numberOfAtoms, vect
...
@@ -83,26 +79,18 @@ void CpuBAOABDynamics::updatePart3(ContextImpl& context, int numberOfAtoms, vect
threads
.
execute
([
&
]
(
ThreadPool
&
threads
,
int
threadIndex
)
{
threadUpdate3
(
threadIndex
);
});
threads
.
execute
([
&
]
(
ThreadPool
&
threads
,
int
threadIndex
)
{
threadUpdate3
(
threadIndex
);
});
threads
.
waitForThreads
();
threads
.
waitForThreads
();
context
.
calcForcesAndEnergy
(
true
,
false
);
threads
.
execute
([
&
]
(
ThreadPool
&
threads
,
int
threadIndex
)
{
threadUpdate4
(
threadIndex
);
});
threads
.
waitForThreads
();
}
}
void
CpuBAOABDynamics
::
threadUpdate1
(
int
threadIndex
)
{
void
CpuLangevinMiddleDynamics
::
threadUpdate1
(
int
threadIndex
)
{
const
double
halfdt
=
0.5
*
getDeltaT
();
int
start
=
threadIndex
*
numberOfAtoms
/
threads
.
getNumThreads
();
int
start
=
threadIndex
*
numberOfAtoms
/
threads
.
getNumThreads
();
int
end
=
(
threadIndex
+
1
)
*
numberOfAtoms
/
threads
.
getNumThreads
();
int
end
=
(
threadIndex
+
1
)
*
numberOfAtoms
/
threads
.
getNumThreads
();
for
(
int
i
=
start
;
i
<
end
;
i
++
)
{
for
(
int
i
=
start
;
i
<
end
;
i
++
)
if
(
inverseMasses
[
i
]
!=
0.0
)
{
if
(
inverseMasses
[
i
]
!=
0.0
)
velocities
[
i
]
+=
(
halfdt
*
inverseMasses
[
i
])
*
forces
[
i
];
velocities
[
i
]
+=
(
getDeltaT
()
*
inverseMasses
[
i
])
*
forces
[
i
];
xPrime
[
i
]
=
atomCoordinates
[
i
]
+
velocities
[
i
]
*
halfdt
;
oldx
[
i
]
=
xPrime
[
i
];
}
}
}
}
void
Cpu
BAOAB
Dynamics
::
threadUpdate2
(
int
threadIndex
)
{
void
Cpu
LangevinMiddle
Dynamics
::
threadUpdate2
(
int
threadIndex
)
{
const
double
halfdt
=
0.5
*
getDeltaT
();
const
double
halfdt
=
0.5
*
getDeltaT
();
const
double
kT
=
BOLTZ
*
getTemperature
();
const
double
kT
=
BOLTZ
*
getTemperature
();
const
double
friction
=
getFriction
();
const
double
friction
=
getFriction
();
...
@@ -113,34 +101,22 @@ void CpuBAOABDynamics::threadUpdate2(int threadIndex) {
...
@@ -113,34 +101,22 @@ void CpuBAOABDynamics::threadUpdate2(int threadIndex) {
for
(
int
i
=
start
;
i
<
end
;
i
++
)
{
for
(
int
i
=
start
;
i
<
end
;
i
++
)
{
if
(
inverseMasses
[
i
]
!=
0.0
)
{
if
(
inverseMasses
[
i
]
!=
0.0
)
{
velocities
[
i
]
+
=
(
xPrime
[
i
]
-
oldx
[
i
]
)
/
halfdt
;
xPrime
[
i
]
=
atomCoordinates
[
i
]
+
velocities
[
i
]
*
halfdt
;
Vec3
noise
(
random
.
getGaussianRandom
(
threadIndex
),
random
.
getGaussianRandom
(
threadIndex
),
random
.
getGaussianRandom
(
threadIndex
));
Vec3
noise
(
random
.
getGaussianRandom
(
threadIndex
),
random
.
getGaussianRandom
(
threadIndex
),
random
.
getGaussianRandom
(
threadIndex
));
velocities
[
i
]
=
vscale
*
velocities
[
i
]
+
noisescale
*
sqrt
(
kT
*
inverseMasses
[
i
])
*
noise
;
velocities
[
i
]
=
vscale
*
velocities
[
i
]
+
noisescale
*
sqrt
(
kT
*
inverseMasses
[
i
])
*
noise
;
atomCoordinates
[
i
]
=
xPrime
[
i
];
xPrime
[
i
]
=
xPrime
[
i
]
+
velocities
[
i
]
*
halfdt
;
xPrime
[
i
]
=
atomCoordinates
[
i
]
+
velocities
[
i
]
*
halfdt
;
oldx
[
i
]
=
xPrime
[
i
];
oldx
[
i
]
=
xPrime
[
i
];
}
}
}
}
}
}
void
CpuBAOABDynamics
::
threadUpdate3
(
int
threadIndex
)
{
void
CpuLangevinMiddleDynamics
::
threadUpdate3
(
int
threadIndex
)
{
const
double
halfdt
=
0.5
*
getDeltaT
();
int
start
=
threadIndex
*
numberOfAtoms
/
threads
.
getNumThreads
();
int
start
=
threadIndex
*
numberOfAtoms
/
threads
.
getNumThreads
();
int
end
=
(
threadIndex
+
1
)
*
numberOfAtoms
/
threads
.
getNumThreads
();
int
end
=
(
threadIndex
+
1
)
*
numberOfAtoms
/
threads
.
getNumThreads
();
for
(
int
i
=
start
;
i
<
end
;
++
i
)
for
(
int
i
=
start
;
i
<
end
;
++
i
)
if
(
inverseMasses
[
i
]
!=
0.0
)
{
if
(
inverseMasses
[
i
]
!=
0.0
)
{
velocities
[
i
]
+=
(
xPrime
[
i
]
-
oldx
[
i
])
/
halfdt
;
velocities
[
i
]
+=
(
xPrime
[
i
]
-
oldx
[
i
])
/
getDeltaT
()
;
atomCoordinates
[
i
]
=
xPrime
[
i
];
atomCoordinates
[
i
]
=
xPrime
[
i
];
}
}
}
}
void
CpuBAOABDynamics
::
threadUpdate4
(
int
threadIndex
)
{
const
double
halfdt
=
0.5
*
getDeltaT
();
int
start
=
threadIndex
*
numberOfAtoms
/
threads
.
getNumThreads
();
int
end
=
(
threadIndex
+
1
)
*
numberOfAtoms
/
threads
.
getNumThreads
();
for
(
int
i
=
start
;
i
<
end
;
++
i
)
if
(
inverseMasses
[
i
]
!=
0.0
)
velocities
[
i
]
+=
(
halfdt
*
inverseMasses
[
i
])
*
forces
[
i
];
}
platforms/cpu/src/CpuPlatform.cpp
View file @
6786cc75
...
@@ -74,7 +74,7 @@ CpuPlatform::CpuPlatform() {
...
@@ -74,7 +74,7 @@ CpuPlatform::CpuPlatform() {
registerKernelFactory
(
CalcCustomGBForceKernel
::
Name
(),
factory
);
registerKernelFactory
(
CalcCustomGBForceKernel
::
Name
(),
factory
);
registerKernelFactory
(
CalcGayBerneForceKernel
::
Name
(),
factory
);
registerKernelFactory
(
CalcGayBerneForceKernel
::
Name
(),
factory
);
registerKernelFactory
(
IntegrateLangevinStepKernel
::
Name
(),
factory
);
registerKernelFactory
(
IntegrateLangevinStepKernel
::
Name
(),
factory
);
registerKernelFactory
(
Integrate
BAOAB
StepKernel
::
Name
(),
factory
);
registerKernelFactory
(
Integrate
LangevinMiddle
StepKernel
::
Name
(),
factory
);
platformProperties
.
push_back
(
CpuThreads
());
platformProperties
.
push_back
(
CpuThreads
());
platformProperties
.
push_back
(
CpuDeterministicForces
());
platformProperties
.
push_back
(
CpuDeterministicForces
());
int
threads
=
getNumProcessors
();
int
threads
=
getNumProcessors
();
...
...
platforms/cpu/tests/TestCpu
BAOAB
LangevinIntegrator.cpp
→
platforms/cpu/tests/TestCpuLangevin
Middle
Integrator.cpp
View file @
6786cc75
...
@@ -30,7 +30,7 @@
...
@@ -30,7 +30,7 @@
* -------------------------------------------------------------------------- */
* -------------------------------------------------------------------------- */
#include "CpuTests.h"
#include "CpuTests.h"
#include "Test
BAOAB
LangevinIntegrator.h"
#include "TestLangevin
Middle
Integrator.h"
void
runPlatformTests
()
{
void
runPlatformTests
()
{
}
}
platforms/cuda/src/CudaKernelFactory.cpp
View file @
6786cc75
...
@@ -121,8 +121,8 @@ KernelImpl* CudaKernelFactory::createKernelImpl(std::string name, const Platform
...
@@ -121,8 +121,8 @@ KernelImpl* CudaKernelFactory::createKernelImpl(std::string name, const Platform
return
new
CommonIntegrateVerletStepKernel
(
name
,
platform
,
cu
);
return
new
CommonIntegrateVerletStepKernel
(
name
,
platform
,
cu
);
if
(
name
==
IntegrateLangevinStepKernel
::
Name
())
if
(
name
==
IntegrateLangevinStepKernel
::
Name
())
return
new
CommonIntegrateLangevinStepKernel
(
name
,
platform
,
cu
);
return
new
CommonIntegrateLangevinStepKernel
(
name
,
platform
,
cu
);
if
(
name
==
Integrate
BAOAB
StepKernel
::
Name
())
if
(
name
==
Integrate
LangevinMiddle
StepKernel
::
Name
())
return
new
CommonIntegrate
BAOAB
StepKernel
(
name
,
platform
,
cu
);
return
new
CommonIntegrate
LangevinMiddle
StepKernel
(
name
,
platform
,
cu
);
if
(
name
==
IntegrateBrownianStepKernel
::
Name
())
if
(
name
==
IntegrateBrownianStepKernel
::
Name
())
return
new
CommonIntegrateBrownianStepKernel
(
name
,
platform
,
cu
);
return
new
CommonIntegrateBrownianStepKernel
(
name
,
platform
,
cu
);
if
(
name
==
IntegrateVariableVerletStepKernel
::
Name
())
if
(
name
==
IntegrateVariableVerletStepKernel
::
Name
())
...
...
platforms/cuda/src/CudaPlatform.cpp
View file @
6786cc75
...
@@ -98,7 +98,7 @@ CudaPlatform::CudaPlatform() {
...
@@ -98,7 +98,7 @@ CudaPlatform::CudaPlatform() {
registerKernelFactory
(
IntegrateVerletStepKernel
::
Name
(),
factory
);
registerKernelFactory
(
IntegrateVerletStepKernel
::
Name
(),
factory
);
registerKernelFactory
(
IntegrateVelocityVerletStepKernel
::
Name
(),
factory
);
registerKernelFactory
(
IntegrateVelocityVerletStepKernel
::
Name
(),
factory
);
registerKernelFactory
(
IntegrateLangevinStepKernel
::
Name
(),
factory
);
registerKernelFactory
(
IntegrateLangevinStepKernel
::
Name
(),
factory
);
registerKernelFactory
(
Integrate
BAOAB
StepKernel
::
Name
(),
factory
);
registerKernelFactory
(
Integrate
LangevinMiddle
StepKernel
::
Name
(),
factory
);
registerKernelFactory
(
IntegrateBrownianStepKernel
::
Name
(),
factory
);
registerKernelFactory
(
IntegrateBrownianStepKernel
::
Name
(),
factory
);
registerKernelFactory
(
IntegrateVariableVerletStepKernel
::
Name
(),
factory
);
registerKernelFactory
(
IntegrateVariableVerletStepKernel
::
Name
(),
factory
);
registerKernelFactory
(
IntegrateVariableLangevinStepKernel
::
Name
(),
factory
);
registerKernelFactory
(
IntegrateVariableLangevinStepKernel
::
Name
(),
factory
);
...
...
platforms/cuda/tests/TestCuda
BAOAB
LangevinIntegrator.cpp
→
platforms/cuda/tests/TestCudaLangevin
Middle
Integrator.cpp
View file @
6786cc75
...
@@ -30,7 +30,7 @@
...
@@ -30,7 +30,7 @@
* -------------------------------------------------------------------------- */
* -------------------------------------------------------------------------- */
#include "CudaTests.h"
#include "CudaTests.h"
#include "Test
BAOAB
LangevinIntegrator.h"
#include "TestLangevin
Middle
Integrator.h"
void
runPlatformTests
()
{
void
runPlatformTests
()
{
}
}
platforms/opencl/src/OpenCLKernelFactory.cpp
View file @
6786cc75
...
@@ -119,8 +119,8 @@ KernelImpl* OpenCLKernelFactory::createKernelImpl(std::string name, const Platfo
...
@@ -119,8 +119,8 @@ KernelImpl* OpenCLKernelFactory::createKernelImpl(std::string name, const Platfo
return
new
CommonIntegrateVerletStepKernel
(
name
,
platform
,
cl
);
return
new
CommonIntegrateVerletStepKernel
(
name
,
platform
,
cl
);
if
(
name
==
IntegrateLangevinStepKernel
::
Name
())
if
(
name
==
IntegrateLangevinStepKernel
::
Name
())
return
new
CommonIntegrateLangevinStepKernel
(
name
,
platform
,
cl
);
return
new
CommonIntegrateLangevinStepKernel
(
name
,
platform
,
cl
);
if
(
name
==
Integrate
BAOAB
StepKernel
::
Name
())
if
(
name
==
Integrate
LangevinMiddle
StepKernel
::
Name
())
return
new
CommonIntegrate
BAOAB
StepKernel
(
name
,
platform
,
cl
);
return
new
CommonIntegrate
LangevinMiddle
StepKernel
(
name
,
platform
,
cl
);
if
(
name
==
IntegrateBrownianStepKernel
::
Name
())
if
(
name
==
IntegrateBrownianStepKernel
::
Name
())
return
new
CommonIntegrateBrownianStepKernel
(
name
,
platform
,
cl
);
return
new
CommonIntegrateBrownianStepKernel
(
name
,
platform
,
cl
);
if
(
name
==
IntegrateVariableVerletStepKernel
::
Name
())
if
(
name
==
IntegrateVariableVerletStepKernel
::
Name
())
...
...
platforms/opencl/src/OpenCLPlatform.cpp
View file @
6786cc75
...
@@ -89,7 +89,7 @@ OpenCLPlatform::OpenCLPlatform() {
...
@@ -89,7 +89,7 @@ OpenCLPlatform::OpenCLPlatform() {
registerKernelFactory
(
IntegrateVerletStepKernel
::
Name
(),
factory
);
registerKernelFactory
(
IntegrateVerletStepKernel
::
Name
(),
factory
);
registerKernelFactory
(
IntegrateVelocityVerletStepKernel
::
Name
(),
factory
);
registerKernelFactory
(
IntegrateVelocityVerletStepKernel
::
Name
(),
factory
);
registerKernelFactory
(
IntegrateLangevinStepKernel
::
Name
(),
factory
);
registerKernelFactory
(
IntegrateLangevinStepKernel
::
Name
(),
factory
);
registerKernelFactory
(
Integrate
BAOAB
StepKernel
::
Name
(),
factory
);
registerKernelFactory
(
Integrate
LangevinMiddle
StepKernel
::
Name
(),
factory
);
registerKernelFactory
(
IntegrateBrownianStepKernel
::
Name
(),
factory
);
registerKernelFactory
(
IntegrateBrownianStepKernel
::
Name
(),
factory
);
registerKernelFactory
(
IntegrateVariableVerletStepKernel
::
Name
(),
factory
);
registerKernelFactory
(
IntegrateVariableVerletStepKernel
::
Name
(),
factory
);
registerKernelFactory
(
IntegrateVariableLangevinStepKernel
::
Name
(),
factory
);
registerKernelFactory
(
IntegrateVariableLangevinStepKernel
::
Name
(),
factory
);
...
...
platforms/opencl/tests/TestOpenCL
BAOAB
LangevinIntegrator.cpp
→
platforms/opencl/tests/TestOpenCLLangevin
Middle
Integrator.cpp
View file @
6786cc75
...
@@ -30,7 +30,7 @@
...
@@ -30,7 +30,7 @@
* -------------------------------------------------------------------------- */
* -------------------------------------------------------------------------- */
#include "OpenCLTests.h"
#include "OpenCLTests.h"
#include "Test
BAOAB
LangevinIntegrator.h"
#include "TestLangevin
Middle
Integrator.h"
void
runPlatformTests
()
{
void
runPlatformTests
()
{
}
}
platforms/reference/include/ReferenceKernels.h
View file @
6786cc75
...
@@ -9,7 +9,7 @@
...
@@ -9,7 +9,7 @@
* Biological Structures at Stanford, funded under the NIH Roadmap for *
* Biological Structures at Stanford, funded under the NIH Roadmap for *
* Medical Research, grant U54 GM072970. See https://simtk.org. *
* Medical Research, grant U54 GM072970. See https://simtk.org. *
* *
* *
* Portions copyright (c) 2008-20
19
Stanford University and the Authors. *
* Portions copyright (c) 2008-20
20
Stanford University and the Authors. *
* Authors: Peter Eastman *
* Authors: Peter Eastman *
* Contributors: *
* Contributors: *
* *
* *
...
@@ -45,7 +45,7 @@ namespace OpenMM {
...
@@ -45,7 +45,7 @@ namespace OpenMM {
class
ReferenceObc
;
class
ReferenceObc
;
class
ReferenceAndersenThermostat
;
class
ReferenceAndersenThermostat
;
class
Reference
BAOAB
Dynamics
;
class
Reference
LangevinMiddle
Dynamics
;
class
ReferenceCustomBondIxn
;
class
ReferenceCustomBondIxn
;
class
ReferenceCustomAngleIxn
;
class
ReferenceCustomAngleIxn
;
class
ReferenceCustomTorsionIxn
;
class
ReferenceCustomTorsionIxn
;
...
@@ -1213,42 +1213,38 @@ private:
...
@@ -1213,42 +1213,38 @@ private:
};
};
/**
/**
* This kernel is invoked by
BAOAB
LangevinIntegrator to take one time step.
* This kernel is invoked by Langevin
Middle
Integrator to take one time step.
*/
*/
class
ReferenceIntegrate
BAOAB
StepKernel
:
public
Integrate
BAOAB
StepKernel
{
class
ReferenceIntegrate
LangevinMiddle
StepKernel
:
public
Integrate
LangevinMiddle
StepKernel
{
public:
public:
ReferenceIntegrate
BAOAB
StepKernel
(
std
::
string
name
,
const
Platform
&
platform
,
ReferencePlatform
::
PlatformData
&
data
)
:
Integrate
BAOAB
StepKernel
(
name
,
platform
),
ReferenceIntegrate
LangevinMiddle
StepKernel
(
std
::
string
name
,
const
Platform
&
platform
,
ReferencePlatform
::
PlatformData
&
data
)
:
Integrate
LangevinMiddle
StepKernel
(
name
,
platform
),
data
(
data
),
dynamics
(
0
)
{
data
(
data
),
dynamics
(
0
)
{
}
}
~
ReferenceIntegrate
BAOAB
StepKernel
();
~
ReferenceIntegrate
LangevinMiddle
StepKernel
();
/**
/**
* Initialize the kernel, setting up the particle masses.
* Initialize the kernel, setting up the particle masses.
*
*
* @param system the System this kernel will be applied to
* @param system the System this kernel will be applied to
* @param integrator the
BAOAB
LangevinIntegrator this kernel will be used for
* @param integrator the Langevin
Middle
Integrator this kernel will be used for
*/
*/
void
initialize
(
const
System
&
system
,
const
BAOAB
LangevinIntegrator
&
integrator
);
void
initialize
(
const
System
&
system
,
const
Langevin
Middle
Integrator
&
integrator
);
/**
/**
* Execute the kernel.
* Execute the kernel.
*
*
* @param context the context in which to execute this kernel
* @param context the context in which to execute this kernel
* @param integrator the BAOABLangevinIntegrator this kernel is being used for
* @param integrator the LangevinMiddleIntegrator this kernel is being used for
* @param forcesAreValid if the context has been modified since the last time step, this will be
* false to show that cached forces are invalid and must be recalculated.
* On exit, this should specify whether the cached forces are valid at the
* end of the step.
*/
*/
void
execute
(
ContextImpl
&
context
,
const
BAOAB
LangevinIntegrator
&
integrator
,
bool
&
forcesAreValid
);
void
execute
(
ContextImpl
&
context
,
const
Langevin
Middle
Integrator
&
integrator
);
/**
/**
* Compute the kinetic energy.
* Compute the kinetic energy.
*
*
* @param context the context in which to execute this kernel
* @param context the context in which to execute this kernel
* @param integrator the
BAOAB
LangevinIntegrator this kernel is being used for
* @param integrator the Langevin
Middle
Integrator this kernel is being used for
*/
*/
double
computeKineticEnergy
(
ContextImpl
&
context
,
const
BAOAB
LangevinIntegrator
&
integrator
);
double
computeKineticEnergy
(
ContextImpl
&
context
,
const
Langevin
Middle
Integrator
&
integrator
);
private:
private:
ReferencePlatform
::
PlatformData
&
data
;
ReferencePlatform
::
PlatformData
&
data
;
Reference
BAOAB
Dynamics
*
dynamics
;
Reference
LangevinMiddle
Dynamics
*
dynamics
;
std
::
vector
<
double
>
masses
;
std
::
vector
<
double
>
masses
;
double
prevTemp
,
prevFriction
,
prevStepSize
;
double
prevTemp
,
prevFriction
,
prevStepSize
;
};
};
...
...
platforms/reference/include/Reference
BAOAB
Dynamics.h
→
platforms/reference/include/Reference
LangevinMiddle
Dynamics.h
View file @
6786cc75
/* Portions copyright (c) 2006-20
19
Stanford University and Simbios.
/* Portions copyright (c) 2006-20
20
Stanford University and Simbios.
* Contributors: Pande Group
* Contributors: Pande Group
*
*
* Permission is hereby granted, free of charge, to any person obtaining
* Permission is hereby granted, free of charge, to any person obtaining
...
@@ -22,8 +22,8 @@
...
@@ -22,8 +22,8 @@
* WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
* WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
*/
*/
#ifndef __Reference
BAOAB
Dynamics_H__
#ifndef __Reference
LangevinMiddle
Dynamics_H__
#define __Reference
BAOAB
Dynamics_H__
#define __Reference
LangevinMiddle
Dynamics_H__
#include "ReferenceDynamics.h"
#include "ReferenceDynamics.h"
#include "openmm/internal/ContextImpl.h"
#include "openmm/internal/ContextImpl.h"
...
@@ -31,7 +31,7 @@
...
@@ -31,7 +31,7 @@
namespace
OpenMM
{
namespace
OpenMM
{
class
OPENMM_EXPORT
Reference
BAOAB
Dynamics
:
public
ReferenceDynamics
{
class
OPENMM_EXPORT
Reference
LangevinMiddle
Dynamics
:
public
ReferenceDynamics
{
protected:
protected:
...
@@ -52,7 +52,7 @@ class OPENMM_EXPORT ReferenceBAOABDynamics : public ReferenceDynamics {
...
@@ -52,7 +52,7 @@ class OPENMM_EXPORT ReferenceBAOABDynamics : public ReferenceDynamics {
--------------------------------------------------------------------------------------- */
--------------------------------------------------------------------------------------- */
Reference
BAOAB
Dynamics
(
int
numberOfAtoms
,
double
deltaT
,
double
friction
,
double
temperature
);
Reference
LangevinMiddle
Dynamics
(
int
numberOfAtoms
,
double
deltaT
,
double
friction
,
double
temperature
);
/**---------------------------------------------------------------------------------------
/**---------------------------------------------------------------------------------------
...
@@ -60,7 +60,7 @@ class OPENMM_EXPORT ReferenceBAOABDynamics : public ReferenceDynamics {
...
@@ -60,7 +60,7 @@ class OPENMM_EXPORT ReferenceBAOABDynamics : public ReferenceDynamics {
--------------------------------------------------------------------------------------- */
--------------------------------------------------------------------------------------- */
~
Reference
BAOAB
Dynamics
();
~
Reference
LangevinMiddle
Dynamics
();
/**---------------------------------------------------------------------------------------
/**---------------------------------------------------------------------------------------
...
@@ -79,29 +79,25 @@ class OPENMM_EXPORT ReferenceBAOABDynamics : public ReferenceDynamics {
...
@@ -79,29 +79,25 @@ class OPENMM_EXPORT ReferenceBAOABDynamics : public ReferenceDynamics {
@param atomCoordinates atom coordinates
@param atomCoordinates atom coordinates
@param velocities velocities
@param velocities velocities
@param masses atom masses
@param masses atom masses
@param forcesAreValid whether the current forces are valid or need to be recomputed
@param tolerance the constraint tolerance
@param tolerance the constraint tolerance
--------------------------------------------------------------------------------------- */
--------------------------------------------------------------------------------------- */
void
update
(
OpenMM
::
ContextImpl
&
context
,
std
::
vector
<
OpenMM
::
Vec3
>&
atomCoordinates
,
void
update
(
OpenMM
::
ContextImpl
&
context
,
std
::
vector
<
OpenMM
::
Vec3
>&
atomCoordinates
,
std
::
vector
<
OpenMM
::
Vec3
>&
velocities
,
std
::
vector
<
double
>&
masses
,
bool
&
forcesAreValid
,
double
tolerance
);
std
::
vector
<
OpenMM
::
Vec3
>&
velocities
,
std
::
vector
<
double
>&
masses
,
double
tolerance
);
/**---------------------------------------------------------------------------------------
/**---------------------------------------------------------------------------------------
First update; based on code in update.c do_update_sd() Gromacs 3.1.4
First update; based on code in update.c do_update_sd() Gromacs 3.1.4
@param numberOfAtoms number of atoms
@param numberOfAtoms number of atoms
@param atomCoordinates atom coordinates
@param velocities velocities
@param velocities velocities
@param forces forces
@param forces forces
@param inverseMasses inverse atom masses
@param inverseMasses inverse atom masses
@param xPrime xPrime
--------------------------------------------------------------------------------------- */
--------------------------------------------------------------------------------------- */
virtual
void
updatePart1
(
int
numberOfAtoms
,
std
::
vector
<
OpenMM
::
Vec3
>&
atomCoordinates
,
std
::
vector
<
OpenMM
::
Vec3
>&
velocities
,
virtual
void
updatePart1
(
int
numberOfAtoms
,
std
::
vector
<
OpenMM
::
Vec3
>&
velocities
,
std
::
vector
<
OpenMM
::
Vec3
>&
forces
,
std
::
vector
<
double
>&
inverseMasses
);
std
::
vector
<
OpenMM
::
Vec3
>&
forces
,
std
::
vector
<
double
>&
inverseMasses
,
std
::
vector
<
OpenMM
::
Vec3
>&
xPrime
);
/**---------------------------------------------------------------------------------------
/**---------------------------------------------------------------------------------------
...
@@ -116,7 +112,7 @@ class OPENMM_EXPORT ReferenceBAOABDynamics : public ReferenceDynamics {
...
@@ -116,7 +112,7 @@ class OPENMM_EXPORT ReferenceBAOABDynamics : public ReferenceDynamics {
--------------------------------------------------------------------------------------- */
--------------------------------------------------------------------------------------- */
virtual
void
updatePart2
(
int
numberOfAtoms
,
std
::
vector
<
OpenMM
::
Vec3
>&
atomCoordinates
,
std
::
vector
<
OpenMM
::
Vec3
>&
velocities
,
virtual
void
updatePart2
(
int
numberOfAtoms
,
std
::
vector
<
OpenMM
::
Vec3
>&
atomCoordinates
,
std
::
vector
<
OpenMM
::
Vec3
>&
velocities
,
std
::
vector
<
double
>&
inverseMasses
,
std
::
vector
<
OpenMM
::
Vec3
>&
xPrime
);
std
::
vector
<
double
>&
inverseMasses
,
std
::
vector
<
OpenMM
::
Vec3
>&
xPrime
);
/**---------------------------------------------------------------------------------------
/**---------------------------------------------------------------------------------------
...
@@ -126,16 +122,15 @@ class OPENMM_EXPORT ReferenceBAOABDynamics : public ReferenceDynamics {
...
@@ -126,16 +122,15 @@ class OPENMM_EXPORT ReferenceBAOABDynamics : public ReferenceDynamics {
@param numberOfAtoms number of atoms
@param numberOfAtoms number of atoms
@param atomCoordinates atom coordinates
@param atomCoordinates atom coordinates
@param velocities velocities
@param velocities velocities
@param forces forces
@param inverseMasses inverse atom masses
@param inverseMasses inverse atom masses
@param xPrime xPrime
@param xPrime xPrime
--------------------------------------------------------------------------------------- */
--------------------------------------------------------------------------------------- */
virtual
void
updatePart3
(
OpenMM
::
ContextImpl
&
context
,
int
numberOfAtoms
,
std
::
vector
<
OpenMM
::
Vec3
>&
atomCoordinates
,
std
::
vector
<
OpenMM
::
Vec3
>&
velocities
,
virtual
void
updatePart3
(
OpenMM
::
ContextImpl
&
context
,
int
numberOfAtoms
,
std
::
vector
<
OpenMM
::
Vec3
>&
atomCoordinates
,
std
::
vector
<
OpenMM
::
Vec3
>&
velocities
,
std
::
vector
<
OpenMM
::
Vec3
>&
forces
,
std
::
vector
<
double
>&
inverseMasses
,
std
::
vector
<
OpenMM
::
Vec3
>&
xPrime
);
std
::
vector
<
double
>&
inverseMasses
,
std
::
vector
<
OpenMM
::
Vec3
>&
xPrime
);
};
};
}
// namespace OpenMM
}
// namespace OpenMM
#endif // __Reference
BAOAB
Dynamics_H__
#endif // __Reference
LangevinMiddle
Dynamics_H__
platforms/reference/src/ReferenceKernelFactory.cpp
View file @
6786cc75
...
@@ -94,8 +94,8 @@ KernelImpl* ReferenceKernelFactory::createKernelImpl(std::string name, const Pla
...
@@ -94,8 +94,8 @@ KernelImpl* ReferenceKernelFactory::createKernelImpl(std::string name, const Pla
return
new
ReferenceNoseHooverChainKernel
(
name
,
platform
);
return
new
ReferenceNoseHooverChainKernel
(
name
,
platform
);
if
(
name
==
IntegrateLangevinStepKernel
::
Name
())
if
(
name
==
IntegrateLangevinStepKernel
::
Name
())
return
new
ReferenceIntegrateLangevinStepKernel
(
name
,
platform
,
data
);
return
new
ReferenceIntegrateLangevinStepKernel
(
name
,
platform
,
data
);
if
(
name
==
Integrate
BAOAB
StepKernel
::
Name
())
if
(
name
==
Integrate
LangevinMiddle
StepKernel
::
Name
())
return
new
ReferenceIntegrate
BAOAB
StepKernel
(
name
,
platform
,
data
);
return
new
ReferenceIntegrate
LangevinMiddle
StepKernel
(
name
,
platform
,
data
);
if
(
name
==
IntegrateBrownianStepKernel
::
Name
())
if
(
name
==
IntegrateBrownianStepKernel
::
Name
())
return
new
ReferenceIntegrateBrownianStepKernel
(
name
,
platform
,
data
);
return
new
ReferenceIntegrateBrownianStepKernel
(
name
,
platform
,
data
);
if
(
name
==
IntegrateVariableLangevinStepKernel
::
Name
())
if
(
name
==
IntegrateVariableLangevinStepKernel
::
Name
())
...
...
platforms/reference/src/ReferenceKernels.cpp
View file @
6786cc75
...
@@ -6,7 +6,7 @@
...
@@ -6,7 +6,7 @@
* Biological Structures at Stanford, funded under the NIH Roadmap for *
* Biological Structures at Stanford, funded under the NIH Roadmap for *
* Medical Research, grant U54 GM072970. See https://simtk.org. *
* Medical Research, grant U54 GM072970. See https://simtk.org. *
* *
* *
* Portions copyright (c) 2008-20
19
Stanford University and the Authors. *
* Portions copyright (c) 2008-20
20
Stanford University and the Authors. *
* Authors: Peter Eastman *
* Authors: Peter Eastman *
* Contributors: *
* Contributors: *
* *
* *
...
@@ -33,7 +33,6 @@
...
@@ -33,7 +33,6 @@
#include "ReferenceObc.h"
#include "ReferenceObc.h"
#include "ReferenceAndersenThermostat.h"
#include "ReferenceAndersenThermostat.h"
#include "ReferenceAngleBondIxn.h"
#include "ReferenceAngleBondIxn.h"
#include "ReferenceBAOABDynamics.h"
#include "ReferenceBondForce.h"
#include "ReferenceBondForce.h"
#include "ReferenceBrownianDynamics.h"
#include "ReferenceBrownianDynamics.h"
#include "ReferenceCCMAAlgorithm.h"
#include "ReferenceCCMAAlgorithm.h"
...
@@ -53,6 +52,7 @@
...
@@ -53,6 +52,7 @@
#include "ReferenceCustomTorsionIxn.h"
#include "ReferenceCustomTorsionIxn.h"
#include "ReferenceGayBerneForce.h"
#include "ReferenceGayBerneForce.h"
#include "ReferenceHarmonicBondIxn.h"
#include "ReferenceHarmonicBondIxn.h"
#include "ReferenceLangevinMiddleDynamics.h"
#include "ReferenceLJCoulomb14.h"
#include "ReferenceLJCoulomb14.h"
#include "ReferenceLJCoulombIxn.h"
#include "ReferenceLJCoulombIxn.h"
#include "ReferenceMonteCarloBarostat.h"
#include "ReferenceMonteCarloBarostat.h"
...
@@ -2233,12 +2233,12 @@ double ReferenceIntegrateLangevinStepKernel::computeKineticEnergy(ContextImpl& c
...
@@ -2233,12 +2233,12 @@ double ReferenceIntegrateLangevinStepKernel::computeKineticEnergy(ContextImpl& c
return
computeShiftedKineticEnergy
(
context
,
masses
,
0.5
*
integrator
.
getStepSize
());
return
computeShiftedKineticEnergy
(
context
,
masses
,
0.5
*
integrator
.
getStepSize
());
}
}
ReferenceIntegrate
BAOAB
StepKernel
::~
ReferenceIntegrate
BAOAB
StepKernel
()
{
ReferenceIntegrate
LangevinMiddle
StepKernel
::~
ReferenceIntegrate
LangevinMiddle
StepKernel
()
{
if
(
dynamics
)
if
(
dynamics
)
delete
dynamics
;
delete
dynamics
;
}
}
void
ReferenceIntegrate
BAOAB
StepKernel
::
initialize
(
const
System
&
system
,
const
BAOAB
LangevinIntegrator
&
integrator
)
{
void
ReferenceIntegrate
LangevinMiddle
StepKernel
::
initialize
(
const
System
&
system
,
const
Langevin
Middle
Integrator
&
integrator
)
{
int
numParticles
=
system
.
getNumParticles
();
int
numParticles
=
system
.
getNumParticles
();
masses
.
resize
(
numParticles
);
masses
.
resize
(
numParticles
);
for
(
int
i
=
0
;
i
<
numParticles
;
++
i
)
for
(
int
i
=
0
;
i
<
numParticles
;
++
i
)
...
@@ -2246,7 +2246,7 @@ void ReferenceIntegrateBAOABStepKernel::initialize(const System& system, const B
...
@@ -2246,7 +2246,7 @@ void ReferenceIntegrateBAOABStepKernel::initialize(const System& system, const B
SimTKOpenMMUtilities
::
setRandomNumberSeed
((
unsigned
int
)
integrator
.
getRandomNumberSeed
());
SimTKOpenMMUtilities
::
setRandomNumberSeed
((
unsigned
int
)
integrator
.
getRandomNumberSeed
());
}
}
void
ReferenceIntegrate
BAOAB
StepKernel
::
execute
(
ContextImpl
&
context
,
const
BAOAB
LangevinIntegrator
&
integrator
,
bool
&
forcesAreValid
)
{
void
ReferenceIntegrate
LangevinMiddle
StepKernel
::
execute
(
ContextImpl
&
context
,
const
Langevin
Middle
Integrator
&
integrator
)
{
double
temperature
=
integrator
.
getTemperature
();
double
temperature
=
integrator
.
getTemperature
();
double
friction
=
integrator
.
getFriction
();
double
friction
=
integrator
.
getFriction
();
double
stepSize
=
integrator
.
getStepSize
();
double
stepSize
=
integrator
.
getStepSize
();
...
@@ -2257,7 +2257,7 @@ void ReferenceIntegrateBAOABStepKernel::execute(ContextImpl& context, const BAOA
...
@@ -2257,7 +2257,7 @@ void ReferenceIntegrateBAOABStepKernel::execute(ContextImpl& context, const BAOA
if
(
dynamics
)
if
(
dynamics
)
delete
dynamics
;
delete
dynamics
;
dynamics
=
new
Reference
BAOAB
Dynamics
(
dynamics
=
new
Reference
LangevinMiddle
Dynamics
(
context
.
getSystem
().
getNumParticles
(),
context
.
getSystem
().
getNumParticles
(),
stepSize
,
stepSize
,
friction
,
friction
,
...
@@ -2267,12 +2267,12 @@ void ReferenceIntegrateBAOABStepKernel::execute(ContextImpl& context, const BAOA
...
@@ -2267,12 +2267,12 @@ void ReferenceIntegrateBAOABStepKernel::execute(ContextImpl& context, const BAOA
prevFriction
=
friction
;
prevFriction
=
friction
;
prevStepSize
=
stepSize
;
prevStepSize
=
stepSize
;
}
}
dynamics
->
update
(
context
,
posData
,
velData
,
masses
,
forcesAreValid
,
integrator
.
getConstraintTolerance
());
dynamics
->
update
(
context
,
posData
,
velData
,
masses
,
integrator
.
getConstraintTolerance
());
data
.
time
+=
stepSize
;
data
.
time
+=
stepSize
;
data
.
stepCount
++
;
data
.
stepCount
++
;
}
}
double
ReferenceIntegrate
BAOAB
StepKernel
::
computeKineticEnergy
(
ContextImpl
&
context
,
const
BAOAB
LangevinIntegrator
&
integrator
)
{
double
ReferenceIntegrate
LangevinMiddle
StepKernel
::
computeKineticEnergy
(
ContextImpl
&
context
,
const
Langevin
Middle
Integrator
&
integrator
)
{
return
computeShiftedKineticEnergy
(
context
,
masses
,
0.0
);
return
computeShiftedKineticEnergy
(
context
,
masses
,
0.0
);
}
}
...
...
platforms/reference/src/ReferencePlatform.cpp
View file @
6786cc75
...
@@ -69,7 +69,7 @@ ReferencePlatform::ReferencePlatform() {
...
@@ -69,7 +69,7 @@ ReferencePlatform::ReferencePlatform() {
registerKernelFactory
(
IntegrateVelocityVerletStepKernel
::
Name
(),
factory
);
registerKernelFactory
(
IntegrateVelocityVerletStepKernel
::
Name
(),
factory
);
registerKernelFactory
(
NoseHooverChainKernel
::
Name
(),
factory
);
registerKernelFactory
(
NoseHooverChainKernel
::
Name
(),
factory
);
registerKernelFactory
(
IntegrateLangevinStepKernel
::
Name
(),
factory
);
registerKernelFactory
(
IntegrateLangevinStepKernel
::
Name
(),
factory
);
registerKernelFactory
(
Integrate
BAOAB
StepKernel
::
Name
(),
factory
);
registerKernelFactory
(
Integrate
LangevinMiddle
StepKernel
::
Name
(),
factory
);
registerKernelFactory
(
IntegrateBrownianStepKernel
::
Name
(),
factory
);
registerKernelFactory
(
IntegrateBrownianStepKernel
::
Name
(),
factory
);
registerKernelFactory
(
IntegrateVariableLangevinStepKernel
::
Name
(),
factory
);
registerKernelFactory
(
IntegrateVariableLangevinStepKernel
::
Name
(),
factory
);
registerKernelFactory
(
IntegrateVariableVerletStepKernel
::
Name
(),
factory
);
registerKernelFactory
(
IntegrateVariableVerletStepKernel
::
Name
(),
factory
);
...
...
platforms/reference/src/SimTKReference/Reference
BAOAB
Dynamics.cpp
→
platforms/reference/src/SimTKReference/Reference
LangevinMiddle
Dynamics.cpp
View file @
6786cc75
/* Portions copyright (c) 2006-20
19
Stanford University and Simbios.
/* Portions copyright (c) 2006-20
20
Stanford University and Simbios.
* Contributors: Pande Group
* Contributors: Pande Group
*
*
* Permission is hereby granted, free of charge, to any person obtaining
* Permission is hereby granted, free of charge, to any person obtaining
...
@@ -26,7 +26,7 @@
...
@@ -26,7 +26,7 @@
#include <sstream>
#include <sstream>
#include "SimTKOpenMMUtilities.h"
#include "SimTKOpenMMUtilities.h"
#include "Reference
BAOAB
Dynamics.h"
#include "Reference
LangevinMiddle
Dynamics.h"
#include "ReferencePlatform.h"
#include "ReferencePlatform.h"
#include "ReferenceVirtualSites.h"
#include "ReferenceVirtualSites.h"
#include "openmm/OpenMMException.h"
#include "openmm/OpenMMException.h"
...
@@ -35,7 +35,7 @@
...
@@ -35,7 +35,7 @@
using
std
::
vector
;
using
std
::
vector
;
using
namespace
OpenMM
;
using
namespace
OpenMM
;
Reference
BAOAB
Dynamics
::
Reference
BAOAB
Dynamics
(
int
numberOfAtoms
,
Reference
LangevinMiddle
Dynamics
::
Reference
LangevinMiddle
Dynamics
(
int
numberOfAtoms
,
double
deltaT
,
double
friction
,
double
deltaT
,
double
friction
,
double
temperature
)
:
double
temperature
)
:
ReferenceDynamics
(
numberOfAtoms
,
deltaT
,
temperature
),
friction
(
friction
)
{
ReferenceDynamics
(
numberOfAtoms
,
deltaT
,
temperature
),
friction
(
friction
)
{
...
@@ -44,29 +44,22 @@ ReferenceBAOABDynamics::ReferenceBAOABDynamics(int numberOfAtoms,
...
@@ -44,29 +44,22 @@ ReferenceBAOABDynamics::ReferenceBAOABDynamics(int numberOfAtoms,
inverseMasses
.
resize
(
numberOfAtoms
);
inverseMasses
.
resize
(
numberOfAtoms
);
}
}
Reference
BAOAB
Dynamics
::~
Reference
BAOAB
Dynamics
()
{
Reference
LangevinMiddle
Dynamics
::~
Reference
LangevinMiddle
Dynamics
()
{
}
}
double
Reference
BAOAB
Dynamics
::
getFriction
()
const
{
double
Reference
LangevinMiddle
Dynamics
::
getFriction
()
const
{
return
friction
;
return
friction
;
}
}
void
ReferenceBAOABDynamics
::
updatePart1
(
int
numberOfAtoms
,
vector
<
Vec3
>&
atomCoordinates
,
void
ReferenceLangevinMiddleDynamics
::
updatePart1
(
int
numberOfAtoms
,
vector
<
Vec3
>&
velocities
,
vector
<
Vec3
>&
forces
,
vector
<
double
>&
inverseMasses
)
{
vector
<
Vec3
>&
velocities
,
vector
<
Vec3
>&
forces
,
vector
<
double
>&
inverseMasses
,
for
(
int
i
=
0
;
i
<
numberOfAtoms
;
i
++
)
vector
<
Vec3
>&
xPrime
)
{
if
(
inverseMasses
[
i
]
!=
0.0
)
const
double
halfdt
=
0.5
*
getDeltaT
();
velocities
[
i
]
+=
(
getDeltaT
()
*
inverseMasses
[
i
])
*
forces
[
i
];
for
(
int
i
=
0
;
i
<
numberOfAtoms
;
i
++
)
{
if
(
inverseMasses
[
i
]
!=
0.0
)
{
velocities
[
i
]
+=
(
halfdt
*
inverseMasses
[
i
])
*
forces
[
i
];
xPrime
[
i
]
=
atomCoordinates
[
i
]
+
velocities
[
i
]
*
halfdt
;
oldx
[
i
]
=
xPrime
[
i
];
}
}
}
}
void
Reference
BAOAB
Dynamics
::
updatePart2
(
int
numberOfAtoms
,
vector
<
Vec3
>&
atomCoordinates
,
void
Reference
LangevinMiddle
Dynamics
::
updatePart2
(
int
numberOfAtoms
,
vector
<
Vec3
>&
atomCoordinates
,
vector
<
Vec3
>&
velocities
,
vector
<
double
>&
inverseMasses
,
vector
<
Vec3
>&
velocities
,
vector
<
double
>&
inverseMasses
,
vector
<
Vec3
>&
xPrime
)
{
vector
<
Vec3
>&
xPrime
)
{
const
double
halfdt
=
0.5
*
getDeltaT
();
const
double
halfdt
=
0.5
*
getDeltaT
();
const
double
kT
=
BOLTZ
*
getTemperature
();
const
double
kT
=
BOLTZ
*
getTemperature
();
const
double
friction
=
getFriction
();
const
double
friction
=
getFriction
();
...
@@ -75,37 +68,29 @@ void ReferenceBAOABDynamics::updatePart2(int numberOfAtoms, vector<Vec3>& atomCo
...
@@ -75,37 +68,29 @@ void ReferenceBAOABDynamics::updatePart2(int numberOfAtoms, vector<Vec3>& atomCo
for
(
int
i
=
0
;
i
<
numberOfAtoms
;
i
++
)
{
for
(
int
i
=
0
;
i
<
numberOfAtoms
;
i
++
)
{
if
(
inverseMasses
[
i
]
!=
0.0
)
{
if
(
inverseMasses
[
i
]
!=
0.0
)
{
velocities
[
i
]
+
=
(
xPrime
[
i
]
-
oldx
[
i
]
)
/
halfdt
;
xPrime
[
i
]
=
atomCoordinates
[
i
]
+
velocities
[
i
]
*
halfdt
;
velocities
[
i
]
=
vscale
*
velocities
[
i
]
+
noisescale
*
sqrt
(
kT
*
inverseMasses
[
i
])
*
Vec3
(
velocities
[
i
]
=
vscale
*
velocities
[
i
]
+
noisescale
*
sqrt
(
kT
*
inverseMasses
[
i
])
*
Vec3
(
SimTKOpenMMUtilities
::
getNormallyDistributedRandomNumber
(),
SimTKOpenMMUtilities
::
getNormallyDistributedRandomNumber
(),
SimTKOpenMMUtilities
::
getNormallyDistributedRandomNumber
(),
SimTKOpenMMUtilities
::
getNormallyDistributedRandomNumber
(),
SimTKOpenMMUtilities
::
getNormallyDistributedRandomNumber
());
SimTKOpenMMUtilities
::
getNormallyDistributedRandomNumber
());
atomCoordinates
[
i
]
=
xPrime
[
i
];
xPrime
[
i
]
=
xPrime
[
i
]
+
velocities
[
i
]
*
halfdt
;
xPrime
[
i
]
=
atomCoordinates
[
i
]
+
velocities
[
i
]
*
halfdt
;
oldx
[
i
]
=
xPrime
[
i
];
oldx
[
i
]
=
xPrime
[
i
];
}
}
}
}
}
}
void
ReferenceBAOABDynamics
::
updatePart3
(
OpenMM
::
ContextImpl
&
context
,
int
numberOfAtoms
,
vector
<
Vec3
>&
atomCoordinates
,
void
ReferenceLangevinMiddleDynamics
::
updatePart3
(
OpenMM
::
ContextImpl
&
context
,
int
numberOfAtoms
,
vector
<
Vec3
>&
atomCoordinates
,
vector
<
Vec3
>&
velocities
,
vector
<
Vec3
>&
forces
,
vector
<
double
>&
inverseMasses
,
vector
<
Vec3
>&
velocities
,
vector
<
double
>&
inverseMasses
,
vector
<
Vec3
>&
xPrime
)
{
vector
<
Vec3
>&
xPrime
)
{
const
double
halfdt
=
0.5
*
getDeltaT
();
for
(
int
i
=
0
;
i
<
numberOfAtoms
;
i
++
)
{
for
(
int
i
=
0
;
i
<
numberOfAtoms
;
i
++
)
{
if
(
inverseMasses
[
i
]
!=
0.0
)
{
if
(
inverseMasses
[
i
]
!=
0.0
)
{
velocities
[
i
]
+=
(
xPrime
[
i
]
-
oldx
[
i
])
/
halfdt
;
velocities
[
i
]
+=
(
xPrime
[
i
]
-
oldx
[
i
])
/
getDeltaT
()
;
atomCoordinates
[
i
]
=
xPrime
[
i
];
atomCoordinates
[
i
]
=
xPrime
[
i
];
}
}
}
}
context
.
calcForcesAndEnergy
(
true
,
false
);
for
(
int
i
=
0
;
i
<
numberOfAtoms
;
i
++
)
{
if
(
inverseMasses
[
i
]
!=
0.0
)
velocities
[
i
]
+=
(
halfdt
*
inverseMasses
[
i
])
*
forces
[
i
];
}
}
}
void
Reference
BAOAB
Dynamics
::
update
(
ContextImpl
&
context
,
vector
<
Vec3
>&
atomCoordinates
,
void
Reference
LangevinMiddle
Dynamics
::
update
(
ContextImpl
&
context
,
vector
<
Vec3
>&
atomCoordinates
,
vector
<
Vec3
>&
velocities
,
vector
<
double
>&
masses
,
bool
&
forcesAreValid
,
double
tolerance
)
{
vector
<
Vec3
>&
velocities
,
vector
<
double
>&
masses
,
double
tolerance
)
{
int
numberOfAtoms
=
context
.
getSystem
().
getNumParticles
();
int
numberOfAtoms
=
context
.
getSystem
().
getNumParticles
();
ReferenceConstraintAlgorithm
*
referenceConstraintAlgorithm
=
getReferenceConstraintAlgorithm
();
ReferenceConstraintAlgorithm
*
referenceConstraintAlgorithm
=
getReferenceConstraintAlgorithm
();
if
(
getTimeStep
()
==
0
)
{
if
(
getTimeStep
()
==
0
)
{
...
@@ -118,18 +103,14 @@ void ReferenceBAOABDynamics::update(ContextImpl& context, vector<Vec3>& atomCoor
...
@@ -118,18 +103,14 @@ void ReferenceBAOABDynamics::update(ContextImpl& context, vector<Vec3>& atomCoor
inverseMasses
[
ii
]
=
1.0
/
masses
[
ii
];
inverseMasses
[
ii
]
=
1.0
/
masses
[
ii
];
}
}
}
}
if
(
!
forcesAreValid
)
{
context
.
calcForcesAndEnergy
(
true
,
false
);
forcesAreValid
=
true
;
}
ReferencePlatform
::
PlatformData
*
data
=
reinterpret_cast
<
ReferencePlatform
::
PlatformData
*>
(
context
.
getPlatformData
());
ReferencePlatform
::
PlatformData
*
data
=
reinterpret_cast
<
ReferencePlatform
::
PlatformData
*>
(
context
.
getPlatformData
());
vector
<
Vec3
>&
forces
=
*
data
->
forces
;
vector
<
Vec3
>&
forces
=
*
data
->
forces
;
// 1st update
// 1st update
updatePart1
(
numberOfAtoms
,
atomCoordinates
,
velocities
,
forces
,
inverseMasses
,
xPrime
);
updatePart1
(
numberOfAtoms
,
velocities
,
forces
,
inverseMasses
);
if
(
referenceConstraintAlgorithm
)
if
(
referenceConstraintAlgorithm
)
referenceConstraintAlgorithm
->
apply
(
atomCoordinates
,
xPrime
,
inverseMasses
,
tolerance
);
referenceConstraintAlgorithm
->
apply
ToVelocities
(
atomCoordinates
,
velocities
,
inverseMasses
,
tolerance
);
// 2nd update
// 2nd update
...
@@ -139,9 +120,7 @@ void ReferenceBAOABDynamics::update(ContextImpl& context, vector<Vec3>& atomCoor
...
@@ -139,9 +120,7 @@ void ReferenceBAOABDynamics::update(ContextImpl& context, vector<Vec3>& atomCoor
// 3rd update
// 3rd update
updatePart3
(
context
,
numberOfAtoms
,
atomCoordinates
,
velocities
,
forces
,
inverseMasses
,
xPrime
);
updatePart3
(
context
,
numberOfAtoms
,
atomCoordinates
,
velocities
,
inverseMasses
,
xPrime
);
if
(
referenceConstraintAlgorithm
)
referenceConstraintAlgorithm
->
applyToVelocities
(
atomCoordinates
,
velocities
,
inverseMasses
,
tolerance
);
ReferenceVirtualSites
::
computePositions
(
context
.
getSystem
(),
atomCoordinates
);
ReferenceVirtualSites
::
computePositions
(
context
.
getSystem
(),
atomCoordinates
);
incrementTimeStep
();
incrementTimeStep
();
...
...
platforms/reference/tests/TestReference
BAOAB
LangevinIntegrator.cpp
→
platforms/reference/tests/TestReferenceLangevin
Middle
Integrator.cpp
View file @
6786cc75
...
@@ -30,7 +30,7 @@
...
@@ -30,7 +30,7 @@
* -------------------------------------------------------------------------- */
* -------------------------------------------------------------------------- */
#include "ReferenceTests.h"
#include "ReferenceTests.h"
#include "Test
BAOAB
LangevinIntegrator.h"
#include "TestLangevin
Middle
Integrator.h"
void
runPlatformTests
()
{
void
runPlatformTests
()
{
}
}
serialization/include/openmm/serialization/
BAOAB
LangevinIntegratorProxy.h
→
serialization/include/openmm/serialization/Langevin
Middle
IntegratorProxy.h
View file @
6786cc75
#ifndef OPENMM_
BAOAB_
LANGEVIN_INTEGRATOR_PROXY_H_
#ifndef OPENMM_LANGEVIN_
MIDDLE_
INTEGRATOR_PROXY_H_
#define OPENMM_
BAOAB_
LANGEVIN_INTEGRATOR_PROXY_H_
#define OPENMM_LANGEVIN_
MIDDLE_
INTEGRATOR_PROXY_H_
#include "openmm/serialization/XmlSerializer.h"
#include "openmm/serialization/XmlSerializer.h"
namespace
OpenMM
{
namespace
OpenMM
{
class
BAOAB
LangevinIntegratorProxy
:
public
SerializationProxy
{
class
Langevin
Middle
IntegratorProxy
:
public
SerializationProxy
{
public:
public:
BAOAB
LangevinIntegratorProxy
();
Langevin
Middle
IntegratorProxy
();
void
serialize
(
const
void
*
object
,
SerializationNode
&
node
)
const
;
void
serialize
(
const
void
*
object
,
SerializationNode
&
node
)
const
;
void
*
deserialize
(
const
SerializationNode
&
node
)
const
;
void
*
deserialize
(
const
SerializationNode
&
node
)
const
;
};
};
}
}
#endif
/*OPENMM_BAOAB_LANGEVIN_INTEGRATOR_PROXY_H_*/
#endif
/*OPENMM_LANGEVIN_MIDDLE_INTEGRATOR_PROXY_H_*/
\ No newline at end of file
\ No newline at end of file
Prev
1
2
3
Next
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