9 #ifndef IMPATOM_BROWNIAN_DYNAMICS_H
10 #define IMPATOM_BROWNIAN_DYNAMICS_H
12 #include <IMP/atom/atom_config.h>
19 #include <IMP/internal/units.h>
22 IMPATOM_BEGIN_NAMESPACE
24 #ifdef IMP_KERNEL_CUDA_LIB
25 #define IMP_ATOM_DEFAULT_BD_RANDOM_POOL_SIZE 1000000
27 #define IMP_ATOM_DEFAULT_BD_RANDOM_POOL_SIZE 10000
31 class SimulationParameters;
83 double max_step_in_A_;
87 unsigned int i_random_pool_;
108 double wave_factor = 1.0,
109 unsigned int random_pool_size=IMP_ATOM_DEFAULT_BD_RANDOM_POOL_SIZE);
145 virtual void do_advance_chunk(
double dtfs,
double ikt,
147 unsigned int begin,
unsigned int end);
161 void reset_random_pool();
167 if(i_random_pool_ >= random_pool_.size()){
170 return random_pool_[i_random_pool_++]*sigma;
186 {
return forces_[i]; }
191 double dtfs,
double ikT);
193 double dtfs,
double ikT);
194 void advance_orientation_0(
ParticleIndex pi,
double dtfs,
double ikT);
205 IMPATOMEXPORT
double get_harmonic_sigma(
double D,
double f);
207 IMPATOM_END_NAMESPACE
The base class for simulators.
A decorator for a diffusing particle.
algebra::Vector3D const & get_force(unsigned int i) const
get the force felt on particle i in kCal/mol/A
void set_maximum_move(double ms_in_A)
sets the maximum move in A along either x,y or z axes
void set_use_stochastic_runge_kutta(bool tf)
Set whether to use the stochastic Runge Kutta scheme.
#define IMP_OBJECT_METHODS(Name)
Define the basic things needed by any Object.
algebra::Vector3Ds const & get_forces() const
get the force vectors felt on each particle in kCal/mol/A
virtual bool get_is_simulation_particle(ParticleIndex p) const =0
Return true if the passed particle is appropriate for the simulation.
double get_max_step() const
Base class for all optimizers.
virtual double do_step(const ParticleIndexes &sc, double dt)=0
Perform a single time step.
Class for storing model, its restraints, constraints, and particles.
virtual void setup(const ParticleIndexes &)
Simple Brownian dynamics simulator.
Simple molecular dynamics optimizer.
Classes to handle individual model particles. (Note that implementation of inline functions is in int...
Various important macros for implementing decorators.
void set_force(unsigned int i, algebra::Vector3D const &f)
set the force felt on particle i to f
double get_maximum_time_step_estimate(BrownianDynamics *bd)
double get_sample(double sigma)
#define IMP_OVERRIDE
Cause a compile error if this method does not override a parent method.