IMP Reference Guide
develop.63b38c487d,2024/12/21
The Integrative Modeling Platform
|
Simple Brownian dynamics simulator. More...
#include <IMP/atom/BrownianDynamicsTAMD.h>
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.
Time step The time step is always equal precisely to Simulator::get_maximum_time_step() when using either Simulator::simulate() or Optimizer::optimize()
Definition at line 72 of file BrownianDynamicsTAMD.h.
Public Member Functions | |
BrownianDynamicsTAMD (Model *m, std::string name="BrownianDynamicsTAMD%1%", double wave_factor=1.0) | |
Create the optimizer. More... | |
Public Member Functions inherited from 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. More... | |
virtual std::string | get_type_name () const override |
virtual ::IMP::VersionInfo | get_version_info () const override |
Get information about the module and version of the object. More... | |
void | set_maximum_move (double ms_in_A) |
sets the maximum move in A along either x,y or z axes More... | |
void | set_use_stochastic_runge_kutta (bool tf) |
Set whether to use the stochastic Runge Kutta scheme. More... | |
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 temperature 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 | remove_particle (Particle *d) |
void | remove_particles (const Particles &d) |
void | set_particles (const Particles &ps) |
void | set_particles_order (const Particles &objs) |
unsigned int | add_particle (Particle *obj) |
void | add_particles (const Particles &objs) |
void | clear_particles () |
unsigned int | get_number_of_particles () const |
bool | get_has_particles () |
Particle * | get_particle (unsigned int i) const |
Particles | get_particles () const |
void | erase_particle (unsigned int i) |
void | reserve_particles (unsigned int sz) |
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 |
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... | |
ScoringFunction * | get_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... | |
virtual void | set_scoring_function (ScoringFunctionAdaptor sf) |
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) |
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 () |
OptimizerState * | get_optimizer_state (unsigned int i) const |
OptimizerStates | get_optimizer_states () const |
void | erase_optimizer_state (unsigned int i) |
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... | |
Model * | get_model () const |
ModelObjectsTemp | get_outputs () const |
const ScoreStatesTemp & | get_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 | |
void | do_advance_chunk (double dtfs, double ikt, const ParticleIndexes &ps, unsigned int begin, unsigned int end) override |
advances a chunk of ps from index begin to end More... | |
Protected Member Functions inherited from IMP::atom::BrownianDynamics | |
virtual double | do_step (const ParticleIndexes &sc, double dt_fs) override |
Calls do_advance_chunk() to advance ps in chunks. More... | |
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 override |
Return true if the passed particle is appropriate for the simulation. More... | |
bool | get_is_srk () const |
double | get_max_step () const |
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) override |
a set of setup operations before a series of simulation steps More... | |
Protected Member Functions inherited from IMP::atom::Simulator | |
virtual Float | do_optimize (unsigned int max_steps) override |
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 override |
virtual ModelObjectsTemp | do_get_outputs () const override |
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 () |
IMP::atom::BrownianDynamicsTAMD::BrownianDynamicsTAMD | ( | Model * | m, |
std::string | name = "BrownianDynamicsTAMD%1%" , |
||
double | wave_factor = 1.0 |
||
) |
Create the optimizer.
If sc is not null, that container will be used to find particles to move, otherwise the model will be searched.
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 |
|
overrideprotectedvirtual |
advances a chunk of ps from index begin to end
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 from IMP::atom::BrownianDynamics.
Reimplemented in IMP::npctransport::BrownianDynamicsTAMDWithSlabSupport.