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;
81 unsigned int i_random_pool_;
102 double wave_factor = 1.0,
103 unsigned int random_pool_size=IMP_ATOM_DEFAULT_BD_RANDOM_POOL_SIZE);
104 void set_maximum_move(
double ms) { max_step_ = ms; }
105 void set_use_stochastic_runge_kutta(
bool tf) { srk_ = tf; }
136 virtual void do_advance_chunk(
double dtfs,
double ikt,
138 unsigned int begin,
unsigned int end);
151 void reset_random_pool();
157 if(i_random_pool_ >= random_pool_.size()){
160 return random_pool_[i_random_pool_++]*sigma;
176 {
return forces_[i]; }
181 double dtfs,
double ikT);
183 double dtfs,
double ikT);
184 void advance_orientation_0(
ParticleIndex pi,
double dtfs,
double ikT);
195 IMPATOMEXPORT
double get_harmonic_sigma(
double D,
double f);
197 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
#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
returns the maximal step size allowed in this simulation
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.