9 #ifndef IMPATOM_SIMULATOR_H
10 #define IMPATOM_SIMULATOR_H
12 #include <IMP/atom/atom_config.h>
16 #include <IMP/internal/units.h>
18 #include <cereal/access.hpp>
19 #include <cereal/types/base_class.hpp>
21 IMPATOM_BEGIN_NAMESPACE
24 class SimulationParameters;
51 double wave_factor = 1.0);
62 double simulate(
double time_in_fs);
79 double simulate_wave(
double time_in_fs,
double max_time_step_factor = 10.0,
104 void set_maximum_time_step(
double ts) { max_time_step_ = ts; }
112 if (last_time_step_ < 0)
113 return get_maximum_time_step();
115 return last_time_step_;
119 void set_time_step(
double ts) { set_maximum_time_step(ts); }
192 virtual bool get_is_simulation_particle(
ParticleIndex p)
const = 0;
202 virtual double do_simulate(
double time);
211 virtual double do_simulate_wave(
double time_in_fs,
double max_time_step_factor = 10.0,
216 double max_time_step_;
217 double current_time_;
218 double last_time_step_;
221 friend class cereal::access;
222 template<
class Archive>
void serialize(Archive &ar) {
223 ar(cereal::base_class<Optimizer>(
this), temperature_, max_time_step_,
224 current_time_, last_time_step_, wave_factor_,
225 mutable_access_particles());
232 IMPATOM_END_NAMESPACE
double get_kt(double T)
Return kT for a given temperature in units of [kcal/mol].
The base class for simulators.
double get_current_time() const
void set_temperature(double d)
Set the temperature of the simulator to d in kelvin units.
double get_maximum_time_step() const
Get the maximum allowed time step in fs.
Base class for all optimizers.
#define IMP_LIST(protection, Ucname, lcname, Data, PluralData)
A macro to provide a uniform interface for storing lists of objects.
Class for storing model, its restraints, constraints, and particles.
virtual void setup(const ParticleIndexes &)
virtual double do_optimize(unsigned int ns)=0
override this function to do actual optimization
void set_current_time(double ct)
Sets the current simulation time in femtoseconds to ct.
Base class for all optimizers.
double get_last_time_step() const
Classes to handle individual model particles. (Note that implementation of inline functions is in int...
double get_temperature() const
Return the simulator temperature in kelvin.
#define IMP_OBJECTS(Name, PluralName)
Define the types for storing lists of object pointers.
double Float
Basic floating-point value (could be float, double...)
Class to handle individual particles of a Model object.
#define IMP_SWIG_FINAL
Have the compiler report an error if anything overrides this method.