IMP Reference Guide  2.7.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:

## Detailed Description

Simple Brownian dynamics simulator.

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 coefficient of each particle be in $$A^2/fs$$ (or $$Radian^2/fs$$ for rotational diffusion coefficient). 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.

Diffusion
RigidBodyDiffusion

Definition at line 74 of file BrownianDynamics.h.

## Public Member Functions

BrownianDynamics (Model *m, std::string name="BrownianDynamics%1%", double wave_factor=1.0, unsigned int random_pool_size=10000)
Create the optimizer. More...

virtual std::string get_type_name () const

virtual ::IMP::VersionInfo get_version_info () const
Get information about the module and version of the object. More...

void set_maximum_move (double ms)

void set_use_stochastic_runge_kutta (bool tf)

Public Member Functions inherited from IMP::atom::Simulator
Simulator (Model *m, std::string name="Simulator %1%", double wave_factor=1.0)

double get_current_time () const

double get_kt () const

ParticleIndexes get_simulation_particle_indexes () const

ParticlesTemp get_simulation_particles () const
Returns the set of particles used in the simulation. More...

double get_temperature () const
Return the simulator temeprature in kelvin. More...

void set_current_time (double ct)
Sets the current simulation time in femtoseconds to ct. More...

void set_temperature (double d)
Set the temperature of the simulator to d in kelvin units. More...

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
Get the maximum allowed time step in fs. More...

double get_last_time_step () const

void remove_particle (Particle *d)

void remove_particles (const Particles &d)

void set_particles (const Particles &ps)

void set_particles_order (const Particles &objs)

void clear_particles ()

unsigned int get_number_of_particles () const

bool get_has_particles ()

Particleget_particle (unsigned int i) const

Particles get_particles () const

void reserve_particles (unsigned int sz)

Public Member Functions inherited from IMP::Optimizer
Optimizer (Model *m, std::string name="Optimizer %1%")

double get_last_score () const
Return the score found in the last evaluate. More...

ScoringFunctionget_scoring_function () const
Return the scoring function that is being used. More...

bool get_stop_on_good_score () const

double optimize (unsigned int max_steps)
Optimize the model for up to max_steps iterations. More...

Set the scoring function to use. More...

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)

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::ModelObject
ModelObject (Model *m, std::string name)

bool get_has_dependencies () const
Return whether this object has dependencies computed. More...

bool get_has_required_score_states () const
Return whether score states are computed. More...

ModelObjectsTemp get_inputs () const

ModelObjectsTemps get_interactions () const
Get the interacting sets induced by this ModelObject. More...

Modelget_model () const

ModelObjectsTemp get_outputs () const

const ScoreStatesTempget_required_score_states () const
Get the score states that are ancestors of this in the dependency graph. More...

void set_has_dependencies (bool tf)
Either invalidate the dependencies or ensure they are correct. More...

void set_has_required_score_states (bool tf)
Compute the required score states. More...

Public Member Functions inherited from IMP::Object
virtual void clear_caches ()

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)

## Protected Member Functions

virtual void do_advance_chunk (double dtfs, double ikt, const ParticleIndexes &ps, unsigned int begin, unsigned int end)

virtual double do_step (const ParticleIndexes &sc, double dt)

algebra::Vector3D const & get_force (unsigned int i) const
get the force felt on particle i in kCal/mol/A More...

algebra::Vector3Ds const & get_forces () const
get the force vectors felt on each particle in kCal/mol/A More...

virtual bool get_is_simulation_particle (ParticleIndex p) const
Return true if the passed particle is appropriate for the simulation. More...

bool get_is_srk () const

double get_max_step () const
returns the maximal step size allowed in this simulation More...

double get_sample (double sigma)

void reset_random_pool ()
regenerate internal cached pool of random numbers More...

void set_force (unsigned int i, algebra::Vector3D const &f)
set the force felt on particle i to f More...

virtual void setup (const ParticleIndexes &ps)

Protected Member Functions inherited from IMP::atom::Simulator
virtual Float do_optimize (unsigned int max_steps)
override this function to do actual optimization More...

virtual double do_simulate (double time)

virtual double do_simulate_wave (double time_in_fs, double max_time_step_factor=10.0, double base=1.5)

Protected Member Functions inherited from IMP::Optimizer
virtual ModelObjectsTemp do_get_inputs () const

virtual ModelObjectsTemp do_get_outputs () const
don't return anything here to avoid pointless dependencies More...

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::ModelObject
virtual ModelObjectsTemps do_get_interactions () const

virtual void handle_set_has_required_score_states (bool)

Protected Member Functions inherited from IMP::Object
Object (std::string name)
Construct an object with the given name. More...

virtual void do_destroy ()

## Constructor & Destructor Documentation

 IMP::atom::BrownianDynamics::BrownianDynamics ( Model * m, std::string name = "BrownianDynamics%1%", double wave_factor = 1.0, unsigned int random_pool_size = 10000 )

Create the optimizer.

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

Parameters
 m model associated with bd name name of bd object wave_factor for 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 random_pool_size number of random numbers in internal pool used to accelerate random number generation. Memory requirement scales accordingly.
Note
wave_factor is an advanced feature - if you're not sure, just use its default, see also Simulator::simulate_wave()

## Member Function Documentation

 virtual void IMP::atom::BrownianDynamics::do_advance_chunk ( double dtfs, double ikt, const ParticleIndexes & ps, unsigned int begin, unsigned int end )
protectedvirtual

advances a chunk of ps from index begin to end

Parameters
 dtfs time step in femtoseconds ikt inverse kT for current chunk step ps particle indexes to advance begin beginning index of chunk of ps end end index of chunk of ps

Reimplemented in IMP::atom::BrownianDynamicsTAMD.

 virtual double IMP::atom::BrownianDynamics::do_step ( const ParticleIndexes & sc, double dt )
protectedvirtual

Parameters
 sc particles to simulate in this step dt maximal step size in femtoseconds
Returns
the time step actually simulated (for this class, it is always equal to the inut dt)

Implements IMP::atom::Simulator.

 algebra::Vector3D const& IMP::atom::BrownianDynamics::get_force ( unsigned int i ) const
protected

get the force felt on particle i in kCal/mol/A

Definition at line 175 of file BrownianDynamics.h.

 algebra::Vector3Ds const& IMP::atom::BrownianDynamics::get_forces ( ) const
protected

get the force vectors felt on each particle in kCal/mol/A

Definition at line 171 of file BrownianDynamics.h.

 virtual bool IMP::atom::BrownianDynamics::get_is_simulation_particle ( ParticleIndex p ) const
protectedvirtual

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

Implements IMP::atom::Simulator.

 bool IMP::atom::BrownianDynamics::get_is_srk ( ) const
protected

returns true if implementing the Stochastic Runga-Kutta Brownian Dynamics variant

Definition at line 147 of file BrownianDynamics.h.

 double IMP::atom::BrownianDynamics::get_max_step ( ) const
protected

returns the maximal step size allowed in this simulation

Definition at line 143 of file BrownianDynamics.h.

 double IMP::atom::BrownianDynamics::get_sample ( double sigma )
protected

returns a normally distributed sample with mean zero and std-dev sigma

Definition at line 155 of file BrownianDynamics.h.

 virtual ::IMP::VersionInfo IMP::atom::BrownianDynamics::get_version_info ( ) const
virtual

Get information about the module and version of the object.

Reimplemented from IMP::Object.

Definition at line 107 of file BrownianDynamics.h.

 void IMP::atom::BrownianDynamics::reset_random_pool ( )
protected

regenerate internal cached pool of random numbers

 void IMP::atom::BrownianDynamics::set_force ( unsigned int i, algebra::Vector3D const & f )
protected

set the force felt on particle i to f

Definition at line 166 of file BrownianDynamics.h.

 virtual void IMP::atom::BrownianDynamics::setup ( const ParticleIndexes & ps )
protectedvirtual

a set of setup operations before a series of simulation steps

Reimplemented from IMP::atom::Simulator.

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