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
589390a7
Commit
589390a7
authored
Aug 14, 2010
by
Mark Friedrichs
Browse files
Fixed problem w/ initialization of velocities
parent
1fde85e7
Changes
1
Show whitespace changes
Inline
Side-by-side
Showing
1 changed file
with
13 additions
and
10 deletions
+13
-10
plugins/amoeba/platforms/cuda/tests/AmoebaTinkerParameterFile.cpp
...amoeba/platforms/cuda/tests/AmoebaTinkerParameterFile.cpp
+13
-10
No files found.
plugins/amoeba/platforms/cuda/tests/AmoebaTinkerParameterFile.cpp
View file @
589390a7
...
@@ -5114,7 +5114,7 @@ void testEnergyForceByFiniteDifference( std::string parameterFileName, MapString
...
@@ -5114,7 +5114,7 @@ void testEnergyForceByFiniteDifference( std::string parameterFileName, MapString
}
}
(
void
)
fprintf
(
summaryFile
,
"FD %30s %15.7e %14.6e %15.7e at %18.1f %8.1f delta %15.7e %20s %s
\n
"
,
(
void
)
fprintf
(
summaryFile
,
"FD %30s %15.7e %14.6e %15.7e at %18.1f %8.1f delta %15.7e %20s %s
\n
"
,
forceString
.
c_str
(),
statistics
[
0
],
statistics
[
1
],
statistics
[
4
],
statistics
[
5
],
statistics
[
6
],
forceString
.
c_str
(),
statistics
[
0
],
statistics
[
1
],
statistics
[
4
],
statistics
[
5
],
statistics
[
6
],
parameterFileName
.
c_str
(),
energyForceDelta
,
context
->
getPlatform
().
getName
().
c_str
()
);
energyForceDelta
,
parameterFileName
.
c_str
(),
context
->
getPlatform
().
getName
().
c_str
()
);
(
void
)
fflush
(
summaryFile
);
(
void
)
fflush
(
summaryFile
);
}
}
}
}
...
@@ -5243,22 +5243,24 @@ static void setVelocitiesBasedOnTemperature( const System& system, std::vector<V
...
@@ -5243,22 +5243,24 @@ static void setVelocitiesBasedOnTemperature( const System& system, std::vector<V
// set velocities based on temperature
// set velocities based on temperature
t
emperature
*=
BOLTZ
;
double
scaledT
emperature
=
temperature
*
2.0
*
BOLTZ
;
double
kineticEnergy
=
0.0
;
double
kineticEnergy
=
0.0
;
for
(
unsigned
int
ii
=
0
;
ii
<
velocities
.
size
();
ii
++
){
for
(
unsigned
int
ii
=
0
;
ii
<
velocities
.
size
();
ii
++
){
double
mass
=
system
.
getParticleMass
(
ii
);
double
mass
=
system
.
getParticleMass
(
ii
);
double
velocityScale
=
std
::
sqrt
(
t
emperature
/
mass
);
double
velocityScale
=
std
::
sqrt
(
scaledT
emperature
/
mass
);
randomValues
[
0
]
=
SimTKOpenMMUtilities
::
getNormallyDistributedRandomNumber
();
randomValues
[
0
]
=
SimTKOpenMMUtilities
::
getNormallyDistributedRandomNumber
();
randomValues
[
1
]
=
SimTKOpenMMUtilities
::
getNormallyDistributedRandomNumber
();
randomValues
[
1
]
=
SimTKOpenMMUtilities
::
getNormallyDistributedRandomNumber
();
randomValues
[
2
]
=
SimTKOpenMMUtilities
::
getNormallyDistributedRandomNumber
();
randomValues
[
2
]
=
SimTKOpenMMUtilities
::
getNormallyDistributedRandomNumber
();
velocities
[
ii
]
=
Vec3
(
randomValues
[
0
]
*
velocityScale
,
randomValues
[
1
]
*
velocityScale
,
randomValues
[
2
]
*
velocityScale
);
velocities
[
ii
]
=
Vec3
(
randomValues
[
0
]
*
velocityScale
,
randomValues
[
1
]
*
velocityScale
,
randomValues
[
2
]
*
velocityScale
);
kineticEnergy
+=
mass
*
(
velocities
[
ii
][
0
]
*
velocities
[
ii
][
0
]
+
velocities
[
ii
][
1
]
*
velocities
[
ii
][
1
]
+
velocities
[
ii
][
2
]
*
velocities
[
ii
][
2
]);
kineticEnergy
+=
mass
*
(
velocities
[
ii
][
0
]
*
velocities
[
ii
][
0
]
+
velocities
[
ii
][
1
]
*
velocities
[
ii
][
1
]
+
velocities
[
ii
][
2
]
*
velocities
[
ii
][
2
]);
}
}
kineticEnergy
*=
0.5
;
double
degreesOfFreedom
=
static_cast
<
double
>
(
3
*
velocities
.
size
()
-
system
.
getNumConstraints
()
-
3
);
//double degreesOfFreedom = static_cast<double>(3*velocities.size() - system.getNumConstraints() - 3 );
double
degreesOfFreedom
=
static_cast
<
double
>
(
3
*
velocities
.
size
()
);
double
approximateT
=
(
kineticEnergy
)
/
(
degreesOfFreedom
*
BOLTZ
);
double
approximateT
=
(
kineticEnergy
)
/
(
degreesOfFreedom
*
BOLTZ
);
if
(
approximateT
>
0.0
){
if
(
approximateT
>
0.0
){
double
scale
=
sqrt
(
temperature
/
approximateT
);
double
scale
=
approximateT
>
0.0
?
std
::
sqrt
(
temperature
/
approximateT
)
:
1.0
;
for
(
unsigned
int
ii
=
0
;
ii
<
velocities
.
size
();
ii
++
){
for
(
unsigned
int
ii
=
0
;
ii
<
velocities
.
size
();
ii
++
){
velocities
[
ii
][
0
]
*=
scale
;
velocities
[
ii
][
0
]
*=
scale
;
velocities
[
ii
][
1
]
*=
scale
;
velocities
[
ii
][
1
]
*=
scale
;
...
@@ -5274,7 +5276,7 @@ static void setVelocitiesBasedOnTemperature( const System& system, std::vector<V
...
@@ -5274,7 +5276,7 @@ static void setVelocitiesBasedOnTemperature( const System& system, std::vector<V
}
}
(
void
)
fprintf
(
log
,
"%s KE=%15.7e approximateT=%15.7e desiredT=%15.7e dof=%12.3f final KE=%12.3e
\n
"
,
(
void
)
fprintf
(
log
,
"%s KE=%15.7e approximateT=%15.7e desiredT=%15.7e dof=%12.3f final KE=%12.3e
\n
"
,
methodName
.
c_str
(),
kineticEnergy
,
approximateT
,
temperature
/
BOLTZ
,
methodName
.
c_str
(),
kineticEnergy
,
approximateT
,
temperature
,
degreesOfFreedom
,
0.5
*
finalKineticEnergy
);
degreesOfFreedom
,
0.5
*
finalKineticEnergy
);
}
}
...
@@ -5360,6 +5362,7 @@ static void getVerletKineticEnergy( Context& context, double& currentTime, doubl
...
@@ -5360,6 +5362,7 @@ static void getVerletKineticEnergy( Context& context, double& currentTime, doubl
kineticEnergy
+=
velocity
*
system
.
getParticleMass
(
ii
);
kineticEnergy
+=
velocity
*
system
.
getParticleMass
(
ii
);
}
}
kineticEnergy
*=
0.125
;
kineticEnergy
*=
0.125
;
//kineticEnergy = statePlus1.getKineticEnergy();
return
;
return
;
}
}
...
@@ -5634,10 +5637,10 @@ void testEnergyConservation( std::string parameterFileName, MapStringInt& forceM
...
@@ -5634,10 +5637,10 @@ void testEnergyConservation( std::string parameterFileName, MapStringInt& forceM
}
}
if
(
log
){
if
(
log
){
(
void
)
fprintf
(
log
,
"Equilibration/simulation times [%12.3f %12.3f] timeBetweenReports [ %12.3e %12.3e] ratios [%12.4f %12.4f] variable=%d
\n
"
,
(
void
)
fprintf
(
log
,
"Equilibration/simulation times [%12.3f %12.3f] timeBetweenReports [ %12.3e %12.3e] ratios [%12.4f %12.4f] variable
Integrator=%d VerletIntegrator
=%d
\n
"
,
equilibrationTime
,
simulationTime
,
equilibrationTime
,
simulationTime
,
equilibrationTimeBetweenReports
,
simulationTimeBetweenReports
,
equilibrationTimeBetweenReports
,
simulationTimeBetweenReports
,
equilibrationTimeBetweenReportsRatio
,
simulationTimeBetweenReportsRatio
,
isVariableIntegrator
);
equilibrationTimeBetweenReportsRatio
,
simulationTimeBetweenReportsRatio
,
isVariableIntegrator
,
isVerletIntegrator
);
(
void
)
fflush
(
log
);
(
void
)
fflush
(
log
);
}
}
...
...
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