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
6fabca14
Commit
6fabca14
authored
May 14, 2013
by
Peter Eastman
Browse files
Cleaned up reference API for constraints
parent
ae847dd7
Changes
4
Show whitespace changes
Inline
Side-by-side
Showing
4 changed files
with
57 additions
and
99 deletions
+57
-99
platforms/reference/src/ReferenceKernels.cpp
platforms/reference/src/ReferenceKernels.cpp
+28
-56
platforms/reference/src/ReferenceKernels.h
platforms/reference/src/ReferenceKernels.h
+9
-21
platforms/reference/src/SimTKReference/ReferenceCCMAAlgorithm.cpp
...s/reference/src/SimTKReference/ReferenceCCMAAlgorithm.cpp
+17
-19
platforms/reference/src/SimTKReference/ReferenceCCMAAlgorithm.h
...rms/reference/src/SimTKReference/ReferenceCCMAAlgorithm.h
+3
-3
No files found.
platforms/reference/src/ReferenceKernels.cpp
View file @
6fabca14
...
...
@@ -316,14 +316,14 @@ void ReferenceApplyConstraintsKernel::initialize(const System& system) {
inverseMasses
[
i
]
=
1.0
/
masses
[
i
];
}
numConstraints
=
system
.
getNumConstraints
();
constraintIndices
=
allocateIntArray
(
numConstraints
,
2
);
constraintDistances
=
new
RealOpenMM
[
numConstraints
]
;
constraintIndices
.
resize
(
numConstraints
);
constraintDistances
.
resize
(
numConstraints
)
;
for
(
int
i
=
0
;
i
<
numConstraints
;
++
i
)
{
int
particle1
,
particle2
;
double
distance
;
system
.
getConstraintParameters
(
i
,
particle1
,
particle2
,
distance
);
constraintIndices
[
i
]
[
0
]
=
particle1
;
constraintIndices
[
i
]
[
1
]
=
particle2
;
constraintIndices
[
i
]
.
first
=
particle1
;
constraintIndices
[
i
]
.
second
=
particle2
;
constraintDistances
[
i
]
=
static_cast
<
RealOpenMM
>
(
distance
);
}
}
...
...
@@ -331,10 +331,6 @@ void ReferenceApplyConstraintsKernel::initialize(const System& system) {
ReferenceApplyConstraintsKernel
::~
ReferenceApplyConstraintsKernel
()
{
if
(
constraints
)
delete
constraints
;
if
(
constraintIndices
)
disposeIntArray
(
constraintIndices
,
numConstraints
);
if
(
constraintDistances
)
delete
[]
constraintDistances
;
}
void
ReferenceApplyConstraintsKernel
::
apply
(
ContextImpl
&
context
,
double
tol
)
{
...
...
@@ -1729,10 +1725,6 @@ ReferenceIntegrateVerletStepKernel::~ReferenceIntegrateVerletStepKernel() {
delete
dynamics
;
if
(
constraints
)
delete
constraints
;
if
(
constraintIndices
)
disposeIntArray
(
constraintIndices
,
numConstraints
);
if
(
constraintDistances
)
delete
[]
constraintDistances
;
}
void
ReferenceIntegrateVerletStepKernel
::
initialize
(
const
System
&
system
,
const
VerletIntegrator
&
integrator
)
{
...
...
@@ -1741,14 +1733,14 @@ void ReferenceIntegrateVerletStepKernel::initialize(const System& system, const
for
(
int
i
=
0
;
i
<
numParticles
;
++
i
)
masses
[
i
]
=
static_cast
<
RealOpenMM
>
(
system
.
getParticleMass
(
i
));
numConstraints
=
system
.
getNumConstraints
();
constraintIndices
=
allocateIntArray
(
numConstraints
,
2
);
constraintDistances
=
new
RealOpenMM
[
numConstraints
]
;
vector
<
pair
<
int
,
int
>
>
constraintIndices
(
numConstraints
);
vector
<
RealOpenMM
>
constraintDistances
(
numConstraints
)
;
for
(
int
i
=
0
;
i
<
numConstraints
;
++
i
)
{
int
particle1
,
particle2
;
double
distance
;
system
.
getConstraintParameters
(
i
,
particle1
,
particle2
,
distance
);
constraintIndices
[
i
]
[
0
]
=
particle1
;
constraintIndices
[
i
]
[
1
]
=
particle2
;
constraintIndices
[
i
]
.
first
=
particle1
;
constraintIndices
[
i
]
.
second
=
particle2
;
constraintDistances
[
i
]
=
static_cast
<
RealOpenMM
>
(
distance
);
}
vector
<
ReferenceCCMAAlgorithm
::
AngleInfo
>
angles
;
...
...
@@ -1785,10 +1777,6 @@ ReferenceIntegrateLangevinStepKernel::~ReferenceIntegrateLangevinStepKernel() {
delete
dynamics
;
if
(
constraints
)
delete
constraints
;
if
(
constraintIndices
)
disposeIntArray
(
constraintIndices
,
numConstraints
);
if
(
constraintDistances
)
delete
[]
constraintDistances
;
}
void
ReferenceIntegrateLangevinStepKernel
::
initialize
(
const
System
&
system
,
const
LangevinIntegrator
&
integrator
)
{
...
...
@@ -1797,14 +1785,14 @@ void ReferenceIntegrateLangevinStepKernel::initialize(const System& system, cons
for
(
int
i
=
0
;
i
<
numParticles
;
++
i
)
masses
[
i
]
=
static_cast
<
RealOpenMM
>
(
system
.
getParticleMass
(
i
));
numConstraints
=
system
.
getNumConstraints
();
constraintIndices
=
allocateIntArray
(
numConstraints
,
2
);
constraintDistances
=
new
RealOpenMM
[
numConstraints
]
;
vector
<
pair
<
int
,
int
>
>
constraintIndices
(
numConstraints
);
vector
<
RealOpenMM
>
constraintDistances
(
numConstraints
)
;
for
(
int
i
=
0
;
i
<
numConstraints
;
++
i
)
{
int
particle1
,
particle2
;
double
distance
;
system
.
getConstraintParameters
(
i
,
particle1
,
particle2
,
distance
);
constraintIndices
[
i
]
[
0
]
=
particle1
;
constraintIndices
[
i
]
[
1
]
=
particle2
;
constraintIndices
[
i
]
.
first
=
particle1
;
constraintIndices
[
i
]
.
second
=
particle2
;
constraintDistances
[
i
]
=
static_cast
<
RealOpenMM
>
(
distance
);
}
SimTKOpenMMUtilities
::
setRandomNumberSeed
((
unsigned
int
)
integrator
.
getRandomNumberSeed
());
...
...
@@ -1851,10 +1839,6 @@ ReferenceIntegrateBrownianStepKernel::~ReferenceIntegrateBrownianStepKernel() {
delete
dynamics
;
if
(
constraints
)
delete
constraints
;
if
(
constraintIndices
)
disposeIntArray
(
constraintIndices
,
numConstraints
);
if
(
constraintDistances
)
delete
[]
constraintDistances
;
}
void
ReferenceIntegrateBrownianStepKernel
::
initialize
(
const
System
&
system
,
const
BrownianIntegrator
&
integrator
)
{
...
...
@@ -1863,14 +1847,14 @@ void ReferenceIntegrateBrownianStepKernel::initialize(const System& system, cons
for
(
int
i
=
0
;
i
<
numParticles
;
++
i
)
masses
[
i
]
=
static_cast
<
RealOpenMM
>
(
system
.
getParticleMass
(
i
));
numConstraints
=
system
.
getNumConstraints
();
constraintIndices
=
allocateIntArray
(
numConstraints
,
2
);
constraintDistances
=
new
RealOpenMM
[
numConstraints
]
;
vector
<
pair
<
int
,
int
>
>
constraintIndices
(
numConstraints
);
vector
<
RealOpenMM
>
constraintDistances
(
numConstraints
)
;
for
(
int
i
=
0
;
i
<
numConstraints
;
++
i
)
{
int
particle1
,
particle2
;
double
distance
;
system
.
getConstraintParameters
(
i
,
particle1
,
particle2
,
distance
);
constraintIndices
[
i
]
[
0
]
=
particle1
;
constraintIndices
[
i
]
[
1
]
=
particle2
;
constraintIndices
[
i
]
.
first
=
particle1
;
constraintIndices
[
i
]
.
second
=
particle2
;
constraintDistances
[
i
]
=
static_cast
<
RealOpenMM
>
(
distance
);
}
SimTKOpenMMUtilities
::
setRandomNumberSeed
((
unsigned
int
)
integrator
.
getRandomNumberSeed
());
...
...
@@ -1916,10 +1900,6 @@ ReferenceIntegrateVariableLangevinStepKernel::~ReferenceIntegrateVariableLangevi
delete
dynamics
;
if
(
constraints
)
delete
constraints
;
if
(
constraintIndices
)
disposeIntArray
(
constraintIndices
,
numConstraints
);
if
(
constraintDistances
)
delete
[]
constraintDistances
;
}
void
ReferenceIntegrateVariableLangevinStepKernel
::
initialize
(
const
System
&
system
,
const
VariableLangevinIntegrator
&
integrator
)
{
...
...
@@ -1928,14 +1908,14 @@ void ReferenceIntegrateVariableLangevinStepKernel::initialize(const System& syst
for
(
int
i
=
0
;
i
<
numParticles
;
++
i
)
masses
[
i
]
=
static_cast
<
RealOpenMM
>
(
system
.
getParticleMass
(
i
));
numConstraints
=
system
.
getNumConstraints
();
constraintIndices
=
allocateIntArray
(
numConstraints
,
2
);
constraintDistances
=
new
RealOpenMM
[
numConstraints
]
;
vector
<
pair
<
int
,
int
>
>
constraintIndices
(
numConstraints
);
vector
<
RealOpenMM
>
constraintDistances
(
numConstraints
)
;
for
(
int
i
=
0
;
i
<
numConstraints
;
++
i
)
{
int
particle1
,
particle2
;
double
distance
;
system
.
getConstraintParameters
(
i
,
particle1
,
particle2
,
distance
);
constraintIndices
[
i
]
[
0
]
=
particle1
;
constraintIndices
[
i
]
[
1
]
=
particle2
;
constraintIndices
[
i
]
.
first
=
particle1
;
constraintIndices
[
i
]
.
second
=
particle2
;
constraintDistances
[
i
]
=
static_cast
<
RealOpenMM
>
(
distance
);
}
SimTKOpenMMUtilities
::
setRandomNumberSeed
((
unsigned
int
)
integrator
.
getRandomNumberSeed
());
...
...
@@ -1982,10 +1962,6 @@ ReferenceIntegrateVariableVerletStepKernel::~ReferenceIntegrateVariableVerletSte
delete
dynamics
;
if
(
constraints
)
delete
constraints
;
if
(
constraintIndices
)
disposeIntArray
(
constraintIndices
,
numConstraints
);
if
(
constraintDistances
)
delete
[]
constraintDistances
;
}
void
ReferenceIntegrateVariableVerletStepKernel
::
initialize
(
const
System
&
system
,
const
VariableVerletIntegrator
&
integrator
)
{
...
...
@@ -1994,14 +1970,14 @@ void ReferenceIntegrateVariableVerletStepKernel::initialize(const System& system
for
(
int
i
=
0
;
i
<
numParticles
;
++
i
)
masses
[
i
]
=
static_cast
<
RealOpenMM
>
(
system
.
getParticleMass
(
i
));
numConstraints
=
system
.
getNumConstraints
();
constraintIndices
=
allocateIntArray
(
numConstraints
,
2
);
constraintDistances
=
new
RealOpenMM
[
numConstraints
]
;
vector
<
pair
<
int
,
int
>
>
constraintIndices
(
numConstraints
);
vector
<
RealOpenMM
>
constraintDistances
(
numConstraints
)
;
for
(
int
i
=
0
;
i
<
numConstraints
;
++
i
)
{
int
particle1
,
particle2
;
double
distance
;
system
.
getConstraintParameters
(
i
,
particle1
,
particle2
,
distance
);
constraintIndices
[
i
]
[
0
]
=
particle1
;
constraintIndices
[
i
]
[
1
]
=
particle2
;
constraintIndices
[
i
]
.
first
=
particle1
;
constraintIndices
[
i
]
.
second
=
particle2
;
constraintDistances
[
i
]
=
static_cast
<
RealOpenMM
>
(
distance
);
}
vector
<
ReferenceCCMAAlgorithm
::
AngleInfo
>
angles
;
...
...
@@ -2042,10 +2018,6 @@ ReferenceIntegrateCustomStepKernel::~ReferenceIntegrateCustomStepKernel() {
delete
dynamics
;
if
(
constraints
)
delete
constraints
;
if
(
constraintIndices
)
disposeIntArray
(
constraintIndices
,
numConstraints
);
if
(
constraintDistances
)
delete
[]
constraintDistances
;
}
void
ReferenceIntegrateCustomStepKernel
::
initialize
(
const
System
&
system
,
const
CustomIntegrator
&
integrator
)
{
...
...
@@ -2054,14 +2026,14 @@ void ReferenceIntegrateCustomStepKernel::initialize(const System& system, const
for
(
int
i
=
0
;
i
<
numParticles
;
++
i
)
masses
[
i
]
=
static_cast
<
RealOpenMM
>
(
system
.
getParticleMass
(
i
));
numConstraints
=
system
.
getNumConstraints
();
constraintIndices
=
allocateIntArray
(
numConstraints
,
2
);
constraintDistances
=
new
RealOpenMM
[
numConstraints
]
;
vector
<
pair
<
int
,
int
>
>
constraintIndices
(
numConstraints
);
vector
<
RealOpenMM
>
constraintDistances
(
numConstraints
)
;
for
(
int
i
=
0
;
i
<
numConstraints
;
++
i
)
{
int
particle1
,
particle2
;
double
distance
;
system
.
getConstraintParameters
(
i
,
particle1
,
particle2
,
distance
);
constraintIndices
[
i
]
[
0
]
=
particle1
;
constraintIndices
[
i
]
[
1
]
=
particle2
;
constraintIndices
[
i
]
.
first
=
particle1
;
constraintIndices
[
i
]
.
second
=
particle2
;
constraintDistances
[
i
]
=
static_cast
<
RealOpenMM
>
(
distance
);
}
perDofValues
.
resize
(
integrator
.
getNumPerDofVariables
());
...
...
platforms/reference/src/ReferenceKernels.h
View file @
6fabca14
...
...
@@ -190,7 +190,7 @@ private:
class
ReferenceApplyConstraintsKernel
:
public
ApplyConstraintsKernel
{
public:
ReferenceApplyConstraintsKernel
(
std
::
string
name
,
const
Platform
&
platform
,
ReferencePlatform
::
PlatformData
&
data
)
:
ApplyConstraintsKernel
(
name
,
platform
),
data
(
data
),
constraints
(
0
)
,
constraintDistances
(
0
),
constraintIndices
(
0
)
{
ApplyConstraintsKernel
(
name
,
platform
),
data
(
data
),
constraints
(
0
)
{
}
~
ReferenceApplyConstraintsKernel
();
/**
...
...
@@ -218,8 +218,8 @@ private:
ReferenceConstraintAlgorithm
*
constraints
;
std
::
vector
<
RealOpenMM
>
masses
;
std
::
vector
<
RealOpenMM
>
inverseMasses
;
RealOpenMM
*
constraint
Distan
ces
;
int
**
constraint
Indi
ces
;
std
::
vector
<
std
::
pair
<
int
,
int
>
>
constraint
Indi
ces
;
std
::
vector
<
RealOpenMM
>
constraint
Distan
ces
;
int
numConstraints
;
};
...
...
@@ -871,7 +871,7 @@ private:
class
ReferenceIntegrateVerletStepKernel
:
public
IntegrateVerletStepKernel
{
public:
ReferenceIntegrateVerletStepKernel
(
std
::
string
name
,
const
Platform
&
platform
,
ReferencePlatform
::
PlatformData
&
data
)
:
IntegrateVerletStepKernel
(
name
,
platform
),
data
(
data
),
dynamics
(
0
),
constraints
(
0
)
,
constraintDistances
(
0
),
constraintIndices
(
0
)
{
data
(
data
),
dynamics
(
0
),
constraints
(
0
)
{
}
~
ReferenceIntegrateVerletStepKernel
();
/**
...
...
@@ -900,8 +900,6 @@ private:
ReferenceVerletDynamics
*
dynamics
;
ReferenceConstraintAlgorithm
*
constraints
;
std
::
vector
<
RealOpenMM
>
masses
;
RealOpenMM
*
constraintDistances
;
int
**
constraintIndices
;
int
numConstraints
;
double
prevStepSize
;
};
...
...
@@ -912,7 +910,7 @@ private:
class
ReferenceIntegrateLangevinStepKernel
:
public
IntegrateLangevinStepKernel
{
public:
ReferenceIntegrateLangevinStepKernel
(
std
::
string
name
,
const
Platform
&
platform
,
ReferencePlatform
::
PlatformData
&
data
)
:
IntegrateLangevinStepKernel
(
name
,
platform
),
data
(
data
),
dynamics
(
0
),
constraints
(
0
)
,
constraintDistances
(
0
),
constraintIndices
(
0
)
{
data
(
data
),
dynamics
(
0
),
constraints
(
0
)
{
}
~
ReferenceIntegrateLangevinStepKernel
();
/**
...
...
@@ -941,8 +939,6 @@ private:
ReferenceStochasticDynamics
*
dynamics
;
ReferenceConstraintAlgorithm
*
constraints
;
std
::
vector
<
RealOpenMM
>
masses
;
RealOpenMM
*
constraintDistances
;
int
**
constraintIndices
;
int
numConstraints
;
double
prevTemp
,
prevFriction
,
prevStepSize
;
};
...
...
@@ -953,7 +949,7 @@ private:
class
ReferenceIntegrateBrownianStepKernel
:
public
IntegrateBrownianStepKernel
{
public:
ReferenceIntegrateBrownianStepKernel
(
std
::
string
name
,
const
Platform
&
platform
,
ReferencePlatform
::
PlatformData
&
data
)
:
IntegrateBrownianStepKernel
(
name
,
platform
),
data
(
data
),
dynamics
(
0
),
constraints
(
0
)
,
constraintDistances
(
0
),
constraintIndices
(
0
)
{
data
(
data
),
dynamics
(
0
),
constraints
(
0
)
{
}
~
ReferenceIntegrateBrownianStepKernel
();
/**
...
...
@@ -982,8 +978,6 @@ private:
ReferenceBrownianDynamics
*
dynamics
;
ReferenceConstraintAlgorithm
*
constraints
;
std
::
vector
<
RealOpenMM
>
masses
;
RealOpenMM
*
constraintDistances
;
int
**
constraintIndices
;
int
numConstraints
;
double
prevTemp
,
prevFriction
,
prevStepSize
;
};
...
...
@@ -994,7 +988,7 @@ private:
class
ReferenceIntegrateVariableLangevinStepKernel
:
public
IntegrateVariableLangevinStepKernel
{
public:
ReferenceIntegrateVariableLangevinStepKernel
(
std
::
string
name
,
const
Platform
&
platform
,
ReferencePlatform
::
PlatformData
&
data
)
:
IntegrateVariableLangevinStepKernel
(
name
,
platform
),
data
(
data
),
dynamics
(
0
),
constraints
(
0
)
,
constraintDistances
(
0
),
constraintIndices
(
0
)
{
data
(
data
),
dynamics
(
0
),
constraints
(
0
)
{
}
~
ReferenceIntegrateVariableLangevinStepKernel
();
/**
...
...
@@ -1025,8 +1019,6 @@ private:
ReferenceVariableStochasticDynamics
*
dynamics
;
ReferenceConstraintAlgorithm
*
constraints
;
std
::
vector
<
RealOpenMM
>
masses
;
RealOpenMM
*
constraintDistances
;
int
**
constraintIndices
;
int
numConstraints
;
double
prevTemp
,
prevFriction
,
prevErrorTol
;
};
...
...
@@ -1037,7 +1029,7 @@ private:
class
ReferenceIntegrateVariableVerletStepKernel
:
public
IntegrateVariableVerletStepKernel
{
public:
ReferenceIntegrateVariableVerletStepKernel
(
std
::
string
name
,
const
Platform
&
platform
,
ReferencePlatform
::
PlatformData
&
data
)
:
IntegrateVariableVerletStepKernel
(
name
,
platform
),
data
(
data
),
dynamics
(
0
),
constraints
(
0
)
,
constraintDistances
(
0
),
constraintIndices
(
0
)
{
data
(
data
),
dynamics
(
0
),
constraints
(
0
)
{
}
~
ReferenceIntegrateVariableVerletStepKernel
();
/**
...
...
@@ -1068,8 +1060,6 @@ private:
ReferenceVariableVerletDynamics
*
dynamics
;
ReferenceConstraintAlgorithm
*
constraints
;
std
::
vector
<
RealOpenMM
>
masses
;
RealOpenMM
*
constraintDistances
;
int
**
constraintIndices
;
int
numConstraints
;
double
prevErrorTol
;
};
...
...
@@ -1080,7 +1070,7 @@ private:
class
ReferenceIntegrateCustomStepKernel
:
public
IntegrateCustomStepKernel
{
public:
ReferenceIntegrateCustomStepKernel
(
std
::
string
name
,
const
Platform
&
platform
,
ReferencePlatform
::
PlatformData
&
data
)
:
IntegrateCustomStepKernel
(
name
,
platform
),
data
(
data
),
dynamics
(
0
),
constraints
(
0
)
,
constraintDistances
(
0
),
constraintIndices
(
0
)
{
data
(
data
),
dynamics
(
0
),
constraints
(
0
)
{
}
~
ReferenceIntegrateCustomStepKernel
();
/**
...
...
@@ -1148,8 +1138,6 @@ private:
ReferenceConstraintAlgorithm
*
constraints
;
std
::
vector
<
RealOpenMM
>
masses
,
globalValues
;
std
::
vector
<
std
::
vector
<
OpenMM
::
RealVec
>
>
perDofValues
;
RealOpenMM
*
constraintDistances
;
int
**
constraintIndices
;
int
numConstraints
;
};
...
...
platforms/reference/src/SimTKReference/ReferenceCCMAAlgorithm.cpp
View file @
6fabca14
...
...
@@ -57,8 +57,8 @@ using OpenMM::RealVec;
ReferenceCCMAAlgorithm
::
ReferenceCCMAAlgorithm
(
int
numberOfAtoms
,
int
numberOfConstraints
,
int
**
atomIndices
,
RealOpenMM
*
distance
,
const
vector
<
pair
<
int
,
int
>
>&
atomIndices
,
const
vector
<
RealOpenMM
>&
distance
,
vector
<
RealOpenMM
>&
masses
,
vector
<
AngleInfo
>&
angles
,
RealOpenMM
tolerance
){
...
...
@@ -108,10 +108,10 @@ ReferenceCCMAAlgorithm::ReferenceCCMAAlgorithm( int numberOfAtoms,
continue
;
}
double
scale
;
int
atomj0
=
_atomIndices
[
j
]
[
0
]
;
int
atomj1
=
_atomIndices
[
j
]
[
1
]
;
int
atomk0
=
_atomIndices
[
k
]
[
0
]
;
int
atomk1
=
_atomIndices
[
k
]
[
1
]
;
int
atomj0
=
_atomIndices
[
j
]
.
first
;
int
atomj1
=
_atomIndices
[
j
]
.
second
;
int
atomk0
=
_atomIndices
[
k
]
.
first
;
int
atomk1
=
_atomIndices
[
k
]
.
second
;
RealOpenMM
invMass0
=
one
/
masses
[
atomj0
];
RealOpenMM
invMass1
=
one
/
masses
[
atomj1
];
int
atoma
,
atomb
,
atomc
;
...
...
@@ -146,7 +146,7 @@ ReferenceCCMAAlgorithm::ReferenceCCMAAlgorithm( int numberOfAtoms,
bool
foundConstraint
=
false
;
for
(
int
other
=
0
;
other
<
numberOfConstraints
;
other
++
)
{
if
((
_atomIndices
[
other
]
[
0
]
==
atoma
&&
_atomIndices
[
other
]
[
1
]
==
atomc
)
||
(
_atomIndices
[
other
]
[
0
]
==
atomc
&&
_atomIndices
[
other
]
[
1
]
==
atoma
))
{
if
((
_atomIndices
[
other
]
.
first
==
atoma
&&
_atomIndices
[
other
]
.
second
==
atomc
)
||
(
_atomIndices
[
other
]
.
first
==
atomc
&&
_atomIndices
[
other
]
.
second
==
atoma
))
{
double
d1
=
_distance
[
j
];
double
d2
=
_distance
[
k
];
double
d3
=
_distance
[
other
];
...
...
@@ -227,8 +227,6 @@ ReferenceCCMAAlgorithm::~ReferenceCCMAAlgorithm( ){
SimTKOpenMMUtilities
::
freeOneDRealOpenMMArray
(
_distanceTolerance
,
"distanceTolerance"
);
SimTKOpenMMUtilities
::
freeOneDRealOpenMMArray
(
_reducedMasses
,
"reducedMasses"
);
}
// for (unsigned int i = 0; i < _matrices.size(); i++)
// SimTKOpenMMUtilities::freeTwoDRealOpenMMArray(_matrices[i], "");
}
/**---------------------------------------------------------------------------------------
...
...
@@ -393,8 +391,8 @@ int ReferenceCCMAAlgorithm::applyConstraints(int numberOfAtoms, vector<RealVec>&
if
(
!
_hasInitializedMasses
){
_hasInitializedMasses
=
true
;
for
(
int
ii
=
0
;
ii
<
_numberOfConstraints
;
ii
++
){
int
atomI
=
_atomIndices
[
ii
]
[
0
]
;
int
atomJ
=
_atomIndices
[
ii
]
[
1
]
;
int
atomI
=
_atomIndices
[
ii
]
.
first
;
int
atomJ
=
_atomIndices
[
ii
]
.
second
;
reducedMasses
[
ii
]
=
half
/
(
inverseMasses
[
atomI
]
+
inverseMasses
[
atomJ
]
);
}
}
...
...
@@ -404,8 +402,8 @@ int ReferenceCCMAAlgorithm::applyConstraints(int numberOfAtoms, vector<RealVec>&
RealOpenMM
tolerance
=
getTolerance
();
tolerance
*=
two
;
for
(
int
ii
=
0
;
ii
<
_numberOfConstraints
;
ii
++
){
int
atomI
=
_atomIndices
[
ii
]
[
0
]
;
int
atomJ
=
_atomIndices
[
ii
]
[
1
]
;
int
atomI
=
_atomIndices
[
ii
]
.
first
;
int
atomJ
=
_atomIndices
[
ii
]
.
second
;
r_ij
[
ii
]
=
atomCoordinates
[
atomI
]
-
atomCoordinates
[
atomJ
];
d_ij2
[
ii
]
=
r_ij
[
ii
].
dot
(
r_ij
[
ii
]);
}
...
...
@@ -422,8 +420,8 @@ int ReferenceCCMAAlgorithm::applyConstraints(int numberOfAtoms, vector<RealVec>&
numberConverged
=
0
;
for
(
int
ii
=
0
;
ii
<
_numberOfConstraints
;
ii
++
){
int
atomI
=
_atomIndices
[
ii
]
[
0
]
;
int
atomJ
=
_atomIndices
[
ii
]
[
1
]
;
int
atomI
=
_atomIndices
[
ii
]
.
first
;
int
atomJ
=
_atomIndices
[
ii
]
.
second
;
RealVec
rp_ij
=
atomCoordinatesP
[
atomI
]
-
atomCoordinatesP
[
atomJ
];
if
(
constrainingVelocities
)
{
...
...
@@ -466,8 +464,8 @@ int ReferenceCCMAAlgorithm::applyConstraints(int numberOfAtoms, vector<RealVec>&
}
for
(
int
ii
=
0
;
ii
<
_numberOfConstraints
;
ii
++
){
int
atomI
=
_atomIndices
[
ii
]
[
0
]
;
int
atomJ
=
_atomIndices
[
ii
]
[
1
]
;
int
atomI
=
_atomIndices
[
ii
]
.
first
;
int
atomJ
=
_atomIndices
[
ii
]
.
second
;
RealVec
dr
=
r_ij
[
ii
]
*
constraintDelta
[
ii
];
atomCoordinatesP
[
atomI
]
+=
dr
*
inverseMasses
[
atomI
];
atomCoordinatesP
[
atomJ
]
-=
dr
*
inverseMasses
[
atomJ
];
...
...
@@ -515,8 +513,8 @@ int ReferenceCCMAAlgorithm::reportCCMA( int numberOfAtoms, vector<RealVec>& atom
RealOpenMM
tolerance
=
getTolerance
();
for
(
int
ii
=
0
;
ii
<
_numberOfConstraints
;
ii
++
){
int
atomI
=
_atomIndices
[
ii
]
[
0
]
;
int
atomJ
=
_atomIndices
[
ii
]
[
1
]
;
int
atomI
=
_atomIndices
[
ii
]
.
first
;
int
atomJ
=
_atomIndices
[
ii
]
.
second
;
RealOpenMM
rp2
=
zero
;
for
(
int
jj
=
0
;
jj
<
3
;
jj
++
){
...
...
platforms/reference/src/SimTKReference/ReferenceCCMAAlgorithm.h
View file @
6fabca14
...
...
@@ -40,8 +40,8 @@ class OPENMM_EXPORT ReferenceCCMAAlgorithm : public ReferenceConstraintAlgorithm
RealOpenMM
_tolerance
;
int
_numberOfConstraints
;
int
**
_atomIndices
;
RealOpenMM
*
_distance
;
std
::
vector
<
std
::
pair
<
int
,
int
>
>
_atomIndices
;
std
::
vector
<
RealOpenMM
>
_distance
;
std
::
vector
<
OpenMM
::
RealVec
>
_r_ij
;
RealOpenMM
*
_d_ij2
;
...
...
@@ -72,7 +72,7 @@ class OPENMM_EXPORT ReferenceCCMAAlgorithm : public ReferenceConstraintAlgorithm
--------------------------------------------------------------------------------------- */
ReferenceCCMAAlgorithm
(
int
numberOfAtoms
,
int
numberOfConstraints
,
int
**
atomIndices
,
RealOpenMM
*
distance
,
std
::
vector
<
RealOpenMM
>&
masses
,
std
::
vector
<
AngleInfo
>&
angles
,
RealOpenMM
tolerance
);
ReferenceCCMAAlgorithm
(
int
numberOfAtoms
,
int
numberOfConstraints
,
const
std
::
vector
<
std
::
pair
<
int
,
int
>
>&
atomIndices
,
const
std
::
vector
<
RealOpenMM
>&
distance
,
std
::
vector
<
RealOpenMM
>&
masses
,
std
::
vector
<
AngleInfo
>&
angles
,
RealOpenMM
tolerance
);
/**---------------------------------------------------------------------------------------
...
...
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