IMP  2.2.1
The Integrative Modeling Platform
IMP::atom::Simulator Class Referenceabstract

The base class for simulators. More...

#include <IMP/atom/Simulator.h>

+ Inheritance diagram for IMP::atom::Simulator:

Public Member Functions

 Simulator (kernel::Model *m, std::string name="Simulator %1%", double wave_factor=1.0)
 
double get_current_time () const
 
double get_kt () const
 
kernel::ParticleIndexes get_simulation_particle_indexes () const
 
kernel::ParticlesTemp get_simulation_particles () const
 
double get_temperature () const
 
void set_current_time (double ct)
 
void set_temperature (double d)
 
double simulate (double time_in_fs)
 Simulate for a given time in fs. More...
 
double simulate_wave (double time_in_fs, double max_time_step_factor=10.0, double base=1.5)
 
- Public Member Functions inherited from IMP::kernel::Optimizer
 Optimizer (kernel::Model *m, std::string name="Optimizer %1%")
 
double get_last_score () const
 Return the score found in the last evaluate.
 
ScoringFunctionget_scoring_function () const
 Return the scoring function that is being used.
 
bool get_stop_on_good_score () const
 
double optimize (unsigned int max_steps)
 Optimize the model for up to max_steps iterations. More...
 
virtual void set_scoring_function (ScoringFunctionAdaptor sf)
 
void set_stop_on_good_score (bool tf)
 
void remove_optimizer_state (OptimizerState *d)
 
void remove_optimizer_states (const OptimizerStates &d)
 
void set_optimizer_states (const OptimizerStates &ps)
 
void set_optimizer_states_order (const OptimizerStates &objs)
 
unsigned int add_optimizer_state (OptimizerState *obj)
 
void add_optimizer_states (const OptimizerStates &objs)
 
void clear_optimizer_states ()
 
unsigned int get_number_of_optimizer_states () const
 
bool get_has_optimizer_states ()
 
OptimizerStateget_optimizer_state (unsigned int i) const
 
OptimizerStates get_optimizer_states () const
 
void reserve_optimizer_states (unsigned int sz)
 
- Public Member Functions inherited from IMP::kernel::ModelObject
 ModelObject (kernel::Model *m, std::string name)
 
bool get_has_dependencies () const
 Return whether this object has dependencies computed.
 
bool get_has_required_score_states () const
 
ModelObjectsTemp get_inputs () const
 
ModelObjectsTemps get_interactions () const
 
Modelget_model () const
 
ModelObjectsTemp get_outputs () const
 
const ScoreStatesTempget_required_score_states () const
 
void set_has_dependencies (bool tf)
 
void set_has_required_score_states (bool tf)
 
- Public Member Functions inherited from IMP::base::Object
virtual void clear_caches ()
 
virtual void do_destroy ()
 
CheckLevel get_check_level () const
 
LogLevel get_log_level () const
 
virtual VersionInfo get_version_info () const
 Get information about the module and version of the object.
 
void set_check_level (CheckLevel l)
 
void set_log_level (LogLevel l)
 Set the logging level used in this object. More...
 
void set_was_used (bool tf) const
 
void show (std::ostream &out=std::cout) const
 
const std::string & get_name () const
 
void set_name (std::string name)
 
virtual std::string get_type_name () const
 

Protected Member Functions

virtual Float do_optimize (unsigned int max_steps)
 override this function to do actual optimization
 
virtual double do_step (const kernel::ParticleIndexes &sc, double dt)=0
 
virtual bool get_is_simulation_particle (kernel::ParticleIndex p) const =0
 
virtual void setup (const kernel::ParticleIndexes &)
 
- Protected Member Functions inherited from IMP::kernel::Optimizer
virtual ModelObjectsTemp do_get_inputs () const
 
virtual ModelObjectsTemp do_get_outputs () const
 don't return anything here to avoid pointless dependencies
 
ModelObjectsTemp get_optimizer_state_inputs () const
 
void update_states () const
 Update optimizer states, should be called at each successful step. More...
 
- Protected Member Functions inherited from IMP::kernel::ModelObject
virtual ModelObjectsTemps do_get_interactions () const
 
virtual void handle_set_has_required_score_states (bool)
 
- Protected Member Functions inherited from IMP::base::Object
 Object (std::string name)
 Construct an object with the given name. More...
 

Time steps

The simulator has a maximum allowed time step. It can take shorter ones if needed due to stability concerns.

As with all times in IMP, the time step is in fs.

void set_maximum_time_step (double ts)
 
double get_maximum_time_step () const
 
double get_last_time_step () const
 

Explicitly accessing the particles list

One can explicitly specify which particles should be used for the simulation, or retrieve information about the list of particles. Each particle must be a Mass and core::XYZ particle. If none are specified, the model is searched for appropriate particles, based on the get_simulation_particles() method, which can be overridden by child classes.

void remove_particle (kernel::Particle *d)
 
void remove_particles (const kernel::Particles &d)
 
void set_particles (const kernel::Particles &ps)
 
void set_particles_order (const kernel::Particles &objs)
 
unsigned int add_particle (kernel::Particle *obj)
 
void add_particles (const kernel::Particles &objs)
 
void clear_particles ()
 
unsigned int get_number_of_particles () const
 
bool get_has_particles ()
 
kernel::Particleget_particle (unsigned int i) const
 
kernel::Particles get_particles () const
 
void reserve_particles (unsigned int sz)
 

Detailed Description

A simulator is an optimizer with dynamic tracking of time, such that each frame is associated with a (possibly variable size) time step.

The simulation can be invoked directly by calling simulate(fs) for a given time in femtoseconds, or by calling Optimizer::optimize(nf) for a give number of frames.

Definition at line 34 of file Simulator.h.

Constructor & Destructor Documentation

IMP::atom::Simulator::Simulator ( kernel::Model m,
std::string  name = "Simulator %1%",
double  wave_factor = 1.0 
)
Parameters
mmodel associated with simulater
namesimulater name where %1% is a joker
wave_factorif >=1.001, use wave time step size with larger maximal time step, using simulate_wave() when calling optimize()
Note
wave_factor is an advanced feature - if you're not sure, just use its default, see also simulate_wave()
wave_factor is experimental and liable to change at any time.
See Also
simulate()

Member Function Documentation

virtual double IMP::atom::Simulator::do_step ( const kernel::ParticleIndexes sc,
double  dt 
)
protectedpure virtual

Perform a single time step and return the amount that time should be advanced. A maximum time step value is passed.

Implemented in IMP::atom::MolecularDynamics.

double IMP::atom::Simulator::get_current_time ( ) const

returns the simulation time in femtoseconds that was performed by this simulator since it was constructed

Note
this time can be tweaked using set_current_time() )

Definition at line 109 of file Simulator.h.

virtual bool IMP::atom::Simulator::get_is_simulation_particle ( kernel::ParticleIndex  p) const
protectedpure virtual

Return true if the passed particle is appropriate for the simulation.

Implemented in IMP::atom::MolecularDynamics, and IMP::isd::MolecularDynamics.

kernel::ParticleIndexes IMP::atom::Simulator::get_simulation_particle_indexes ( ) const

Same as get_simulation_particles(), but returns particle model indexes.

See Also
get_simulation_particles()
kernel::ParticlesTemp IMP::atom::Simulator::get_simulation_particles ( ) const

Returns the set of particles used in the simulation. If a non-empty set of particles was provided explicitly by earlier calls to the particles list accessor methods, eg, add_particles(), this set it returned. Otherwise, the associated kernel::Model object is searched for appropriate particles that have a mass and XYZ decorators.

See Also
add_particle()
add_particles()
remove_particle()
clear_particles()
set_particles()
set_particles_order()
void IMP::atom::Simulator::set_current_time ( double  ct)

Sets the current simulation time in femtoseconds to ct.

Definition at line 114 of file Simulator.h.

virtual void IMP::atom::Simulator::setup ( const kernel::ParticleIndexes )
protectedvirtual

A Simulator class can perform setup operations before a series of simulation steps is taken.

Reimplemented in IMP::atom::MolecularDynamics.

Definition at line 158 of file Simulator.h.

double IMP::atom::Simulator::simulate ( double  time_in_fs)

simulate for a given time, by calling the protected method do_step() iteratively.

Parameters
time_in_fstime in femtoseconds
double IMP::atom::Simulator::simulate_wave ( double  time_in_fs,
double  max_time_step_factor = 10.0,
double  base = 1.5 
)

Simulate for a given time in fs using a wave step function with maximal time step increased by up to max_time_step_factor simulate for a given time, by calling the protected method do_step() iteratively, and using a self adjusting time step that can grow up to max_time_step_factor times than the default time step returned by get_maximum_time_step()

Parameters
time_in_fstime_in_fs in femtoseconds
max_time_step_factorthe maximal factor by which the maximum time step is exceeded
basebase by which time step increases or decreases during the wave
Note
This function is experimental and liable to change at any time.

The documentation for this class was generated from the following file: