IMP  2.1.0
The Integrative Modeling Platform
VelocityScalingOptimizerState.h
Go to the documentation of this file.
1 /**
2  * \file IMP/atom/VelocityScalingOptimizerState.h
3  * \brief Maintains temperature during molecular dynamics by velocity scaling.
4  *
5  * Copyright 2007-2013 IMP Inventors. All rights reserved.
6  *
7  */
8 
9 #ifndef IMPATOM_VELOCITY_SCALING_OPTIMIZER_STATE_H
10 #define IMPATOM_VELOCITY_SCALING_OPTIMIZER_STATE_H
11 
12 #include <IMP/atom/atom_config.h>
13 #include <IMP/kernel/Particle.h>
14 #include <IMP/base_types.h>
15 #include <IMP/OptimizerState.h>
17 
18 IMPATOM_BEGIN_NAMESPACE
19 
20 //! Maintains temperature during molecular dynamics by velocity scaling.
21 /** This OptimizerState, when used with the MolecularDynamics optimizer,
22  implements a simple thermostat by periodically rescaling the velocities.
23  (Note that this results in discontinuous dynamics.)
24  \see MolecularDynamics
25  */
26 class IMPATOMEXPORT VelocityScalingOptimizerState : public OptimizerState {
27  public:
28  /** \deprecated_at{2.1} Use set_period() instead. */
29  IMPATOM_DEPRECATED_FUNCTION_DECL(2.1)
31  unsigned skip_steps);
34  double temperature);
35 
36  //! Set the particles to use.
37  void set_particles(const kernel::Particles &pis) { pis_ = pis; }
38 
39  //! Set the temperature to use.
40  void set_temperature(Float temperature) { temperature_ = temperature; }
41 
42  //! Rescale the velocities now
43  void rescale_velocities() const;
44 
46 
47  protected:
48  virtual void do_update(unsigned int call) IMP_OVERRIDE;
49 
50  private:
51  kernel::Particles pis_;
52  Float temperature_;
53  unsigned skip_steps_;
54  unsigned call_number_;
55 
56  //! Keys of the xyz velocities
57  FloatKey vs_[3];
58 };
59 
61 
62 IMPATOM_END_NAMESPACE
63 
64 #endif /* IMPATOM_VELOCITY_SCALING_OPTIMIZER_STATE_H */
Import IMP/kernel/base_types.h in the namespace.
virtual void do_update(unsigned int)
Shared optimizer state that is invoked upon commitment of new coordinates.
Maintains temperature during molecular dynamics by velocity scaling.
void set_particles(const kernel::Particles &pis)
Set the particles to use.
#define IMP_OBJECT_METHODS(Name)
Define the basic things needed by any Object.
Import IMP/kernel/optimizer_state_macros.h in the namespace.
Classes to handle individual model particles.
#define IMP_OBJECTS(Name, PluralName)
Define the types for storing sets of objects.
double Float
Basic floating-point value (could be float, double...)
Definition: base/types.h:20
void set_temperature(Float temperature)
Set the temperature to use.
Import IMP/kernel/OptimizerState.h in the namespace.
Class for storing model, its restraints, constraints, and particles.