IMP  2.2.0
The Integrative Modeling Platform
IMP::atom::BrownianDynamics Class Reference

Simple Brownian dynamics simulator. More...

#include <IMP/atom/BrownianDynamics.h>

+ Inheritance diagram for IMP::atom::BrownianDynamics:

Public Member Functions

 BrownianDynamics (kernel::Model *m, std::string name="BrownianDynamics%1%", double wave_factor=1.0)
 Create the optimizer. More...
 
virtual std::string get_type_name () const
 
virtual ::IMP::base::VersionInfo get_version_info () const
 Get information about the module and version of the object.
 
void set_maximum_move (double ms)
 
void set_use_stochastic_runge_kutta (bool tf)
 
- Public Member Functions inherited from IMP::atom::Simulator
 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)
 
void set_maximum_time_step (double ts)
 
double get_maximum_time_step () const
 
double get_last_time_step () const
 
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)
 
- 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
 
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)
 

Additional Inherited Members

- Protected Member Functions inherited from IMP::atom::Simulator
virtual Float do_optimize (unsigned int max_steps)
 override this function to do actual optimization
 
- 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...
 

Detailed Description

This is an implementation of a Brownian Dynamics simulator.

Input particles and score

Each optimized particle must have x,y,z attributes that are optimizable. In addition, each optimized particle must be decorated with the Diffusion decorator. Optionally, the RigidBodyDiffusion decorator can be used to specify a rotational diffusion coefficient for core::RigidBody particles. The optimizer assumes the scoring function to be energy in kcal/mol, and the xyz coordinates to be in angstroms and the diffusion coefficent of each particle be in \(A^2/fs\) (or \(Radian^2/fs\) for rotational diffusion coefficient). kernel::Particles without optimized x,y,z and nonoptimized D are skipped.

The optimizer can either automatically determine which particles to use from the model or be passed a SingletonContainer for the particles. If such a container is passed, particles added to it during optimization state updates are handled properly.

Simulation

At each simulation time step, each particle is translated in the direction of the sum of a random diffusion vector and the gradient of the scoring function (force field) at the particle coordinates. The translation is proportional to the particle diffusion coefficient, the time step size, and the inverse of kT. Note that particles masses are not considered, only their diffusion coefficients.

Similarly, rigid bodies are rotated by the sum of a random torque and a force field torque, proportionally to the rotational diffusion coefficient, the time step size, and inversely proportional kT.

If the skt (stochastic runge kutta) flag is true, the simulation is altered slightly to apply the SKT scheme.

See Also
Diffusion
RigidBodyDiffusion

Definition at line 67 of file BrownianDynamics.h.

Constructor & Destructor Documentation

IMP::atom::BrownianDynamics::BrownianDynamics ( kernel::Model m,
std::string  name = "BrownianDynamics%1%",
double  wave_factor = 1.0 
)

If sc is not null, that container will be used to find particles to move, otherwise the model will be searched.

Parameters
mmodel associated with bd
namename of bd object
wave_factorfor wave step function, see Simulator object, if >1.001 or so, creates a wave of time steps that are larger by up to wave_factor from formal maximal time step
Note
wave_factor is an advanced feature - if you're not sure, just use its default, see also Simulator::simulate_wave()

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