OpenMM
 All Classes Namespaces Functions Variables Typedefs Enumerations Enumerator Friends Pages
DrudeLangevinIntegrator.h
1 #ifndef OPENMM_DRUDELANGEVININTEGRATOR_H_
2 #define OPENMM_DRUDELANGEVININTEGRATOR_H_
3 
4 /* -------------------------------------------------------------------------- *
5  * OpenMM *
6  * -------------------------------------------------------------------------- *
7  * This is part of the OpenMM molecular simulation toolkit originating from *
8  * Simbios, the NIH National Center for Physics-Based Simulation of *
9  * Biological Structures at Stanford, funded under the NIH Roadmap for *
10  * Medical Research, grant U54 GM072970. See https://simtk.org. *
11  * *
12  * Portions copyright (c) 2008-2013 Stanford University and the Authors. *
13  * Authors: Peter Eastman *
14  * Contributors: *
15  * *
16  * Permission is hereby granted, free of charge, to any person obtaining a *
17  * copy of this software and associated documentation files (the "Software"), *
18  * to deal in the Software without restriction, including without limitation *
19  * the rights to use, copy, modify, merge, publish, distribute, sublicense, *
20  * and/or sell copies of the Software, and to permit persons to whom the *
21  * Software is furnished to do so, subject to the following conditions: *
22  * *
23  * The above copyright notice and this permission notice shall be included in *
24  * all copies or substantial portions of the Software. *
25  * *
26  * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR *
27  * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, *
28  * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL *
29  * THE AUTHORS, CONTRIBUTORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, *
30  * DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR *
31  * OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE *
32  * USE OR OTHER DEALINGS IN THE SOFTWARE. *
33  * -------------------------------------------------------------------------- */
34 
35 #include "openmm/Integrator.h"
36 #include "openmm/Kernel.h"
37 #include "openmm/internal/windowsExportDrude.h"
38 
39 namespace OpenMM {
40 
52 class OPENMM_EXPORT_DRUDE DrudeLangevinIntegrator : public Integrator {
53 public:
63  DrudeLangevinIntegrator(double temperature, double frictionCoeff, double drudeTemperature, double drudeFrictionCoeff, double stepSize);
69  double getTemperature() const {
70  return temperature;
71  }
77  void setTemperature(double temp) {
78  temperature = temp;
79  }
86  double getFriction() const {
87  return friction;
88  }
95  void setFriction(double coeff) {
96  friction = coeff;
97  }
103  double getDrudeTemperature() const {
104  return drudeTemperature;
105  }
111  void setDrudeTemperature(double temp) {
112  drudeTemperature = temp;
113  }
120  double getDrudeFriction() const {
121  return drudeFriction;
122  }
129  void setDrudeFriction(double coeff) {
130  drudeFriction = coeff;
131  }
135  int getRandomNumberSeed() const {
136  return randomNumberSeed;
137  }
150  void setRandomNumberSeed(int seed) {
151  randomNumberSeed = seed;
152  }
158  void step(int steps);
159 protected:
165  void initialize(ContextImpl& context);
170  void cleanup();
174  void stateChanged(State::DataType changed);
178  std::vector<std::string> getKernelNames();
182  double computeKineticEnergy();
183 private:
184  double temperature, friction, drudeTemperature, drudeFriction;
185  int randomNumberSeed;
186  Kernel kernel;
187 };
188 
189 } // namespace OpenMM
190 
191 #endif /*OPENMM_DRUDELANGEVININTEGRATOR_H_*/
This Integrator simulates systems that include Drude particles.
Definition: DrudeLangevinIntegrator.h:52
void setTemperature(double temp)
Set the temperature of the main heat bath (in Kelvin).
Definition: DrudeLangevinIntegrator.h:77
void setFriction(double coeff)
Set the friction coefficient which determines how strongly the system is coupled to the main heat bat...
Definition: DrudeLangevinIntegrator.h:95
void setDrudeTemperature(double temp)
Set the temperature of the heat bath applied to internal coordinates of Drude particles (in Kelvin)...
Definition: DrudeLangevinIntegrator.h:111
double getDrudeFriction() const
Get the friction coefficient which determines how strongly the internal coordinates of Drude particle...
Definition: DrudeLangevinIntegrator.h:120
An Integrator defines a method for simulating a System by integrating the equations of motion...
Definition: Integrator.h:54
double getTemperature() const
Get the temperature of the main heat bath (in Kelvin).
Definition: DrudeLangevinIntegrator.h:69
double getDrudeTemperature() const
Get the temperature of the heat bath applied to internal coordinates of Drude particles (in Kelvin)...
Definition: DrudeLangevinIntegrator.h:103
void setRandomNumberSeed(int seed)
Set the random number seed.
Definition: DrudeLangevinIntegrator.h:150
DataType
This is an enumeration of the types of data which may be stored in a State.
Definition: State.h:61
void setDrudeFriction(double coeff)
Set the friction coefficient which determines how strongly the internal coordinates of Drude particle...
Definition: DrudeLangevinIntegrator.h:129
A Kernel encapsulates a particular implementation of a calculation that can be performed on the data ...
Definition: Kernel.h:58
double getFriction() const
Get the friction coefficient which determines how strongly the system is coupled to the main heat bat...
Definition: DrudeLangevinIntegrator.h:86
int getRandomNumberSeed() const
Get the random number seed.
Definition: DrudeLangevinIntegrator.h:135
Definition: AndersenThermostat.h:40