ReferenceDynamics.cpp 5.84 KB
Newer Older
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24

/* Portions copyright (c) 2006 Stanford University and Simbios.
 * Contributors: Pande Group
 *
 * Permission is hereby granted, free of charge, to any person obtaining
 * a copy of this software and associated documentation files (the
 * "Software"), to deal in the Software without restriction, including
 * without limitation the rights to use, copy, modify, merge, publish,
 * distribute, sublicense, and/or sell copies of the Software, and to
 * permit persons to whom the Software is furnished to do so, subject
 * to the following conditions:
 *
 * The above copyright notice and this permission notice shall be included
 * in all copies or substantial portions of the Software.
 *
 * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
 * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
 * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
 * IN NO EVENT SHALL THE AUTHORS, CONTRIBUTORS OR COPYRIGHT HOLDERS BE
 * LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
 * OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
 * WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
 */

25
#include <cstring>
26
27
#include <sstream>

28
#include "SimTKOpenMMUtilities.h"
29
#include "ReferenceDynamics.h"
30
#include "openmm/OpenMMException.h"
31

32
33
#include <cstdio>

34
using std::vector;
35
using namespace OpenMM;
36

37

38
39
40
41
42
43
44
45
46
47
/**---------------------------------------------------------------------------------------

   ReferenceDynamics constructor

   @param numberOfAtoms  number of atoms
   @param deltaT         delta t for dynamics
   @param temperature    temperature

   --------------------------------------------------------------------------------------- */

peastman's avatar
peastman committed
48
ReferenceDynamics::ReferenceDynamics(int numberOfAtoms,  double deltaT, double temperature) : 
49
                  _numberOfAtoms(numberOfAtoms), _deltaT(deltaT), _temperature(temperature), virtualSites(NULL) {
50

peastman's avatar
peastman committed
51
   _timeStep = 0;
52
   _referenceConstraint = NULL;
53
54
55
56
57
58
59
60
}

/**---------------------------------------------------------------------------------------

   ReferenceDynamics destructor

   --------------------------------------------------------------------------------------- */

61
ReferenceDynamics::~ReferenceDynamics() {
62
63
64
65
66
67
68
69
70
71
}

/**---------------------------------------------------------------------------------------

   Get number of atoms

   @return number of atoms

   --------------------------------------------------------------------------------------- */

72
int ReferenceDynamics::getNumberOfAtoms() const {
73
74
75
76
77
78
79
80
81
82
83
   return _numberOfAtoms;
}

/**---------------------------------------------------------------------------------------

   Get time step

   @return time step

   --------------------------------------------------------------------------------------- */

84
int ReferenceDynamics::getTimeStep() const {
85
86
87
88
89
90
91
92
93
94
95
   return _timeStep;
}

/**---------------------------------------------------------------------------------------

   Increment time step

   @return incremented time step

   --------------------------------------------------------------------------------------- */

96
int ReferenceDynamics::incrementTimeStep() {
97
98
99
100
101
102
103
104
105
106
107
   return (++_timeStep);
}

/**---------------------------------------------------------------------------------------

   Get delta t

   @return deltaT

   --------------------------------------------------------------------------------------- */

peastman's avatar
peastman committed
108
double ReferenceDynamics::getDeltaT() const {
109
110
111
   return _deltaT;
}

112
113
114
115
116
117
/**---------------------------------------------------------------------------------------

   Set delta t

   --------------------------------------------------------------------------------------- */

peastman's avatar
peastman committed
118
void ReferenceDynamics::setDeltaT(double deltaT) {
119
120
121
   _deltaT = deltaT;
}

122
123
124
125
126
127
128
129
/**---------------------------------------------------------------------------------------

   Get temperature

   @return temperature

   --------------------------------------------------------------------------------------- */

peastman's avatar
peastman committed
130
double ReferenceDynamics::getTemperature() const {
131
132
133
134
135
   return _temperature;
}

/**---------------------------------------------------------------------------------------

136
   Get ReferenceConstraint
137

138
   @return ReferenceConstraint  object
139
140
141

   --------------------------------------------------------------------------------------- */

142
ReferenceConstraintAlgorithm* ReferenceDynamics::getReferenceConstraintAlgorithm() const {
143
   return _referenceConstraint;
144
145
146
147
}

/**---------------------------------------------------------------------------------------

148
   Set ReferenceConstraint
149

150
   @param referenceConstraint  ReferenceConstraint object
151
152
153

   --------------------------------------------------------------------------------------- */

154
void ReferenceDynamics::setReferenceConstraintAlgorithm(ReferenceConstraintAlgorithm* referenceConstraint) {
155
   _referenceConstraint = referenceConstraint;
156
157
158
159
}

/**---------------------------------------------------------------------------------------

160
   Update -- driver routine for performing dynamics update of coordinates
161
162
   and velocities

163
   @param system              the System to be integrated
164
165
166
167
   @param atomCoordinates     atom coordinates
   @param velocities          velocities
   @param forces              forces
   @param masses              atom masses
168
   @param tolerance           the constraint tolerance
169
170
171

   --------------------------------------------------------------------------------------- */

peastman's avatar
peastman committed
172
173
void ReferenceDynamics::update(const OpenMM::System& system, vector<Vec3>& atomCoordinates,
                               vector<Vec3>& velocities, vector<Vec3>& forces, vector<double>& masses, double tolerance) {
174
}
175
176
177
178
179
180
181
182
183
184

const ReferenceVirtualSites& ReferenceDynamics::getVirtualSites() const {
    if (virtualSites == NULL)
        throw OpenMMException("ReferenceVirtualSites has not been set");
    return *virtualSites;
}

void ReferenceDynamics::setVirtualSites(const ReferenceVirtualSites& sites) {
    virtualSites = &sites;
}