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);
 
  130                          double dt_fs) 
override;
 
  143   virtual void do_advance_chunk(
double dtfs, 
double ikt,
 
  145                              unsigned int begin, 
unsigned int end);
 
  159   void reset_random_pool();
 
  165     if(i_random_pool_ >= random_pool_.size()){
 
  168     return random_pool_[i_random_pool_++]*sigma;
 
  184     { 
return forces_[i]; }
 
  189                              double dtfs, 
double ikT);
 
  191                              double dtfs, 
double ikT);
 
  192   void advance_orientation_0(
ParticleIndex pi, 
double dtfs, 
double ikT);
 
  203 IMPATOMEXPORT 
double get_harmonic_sigma(
double D, 
double f);
 
  205 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. 
 
Base class for "simulators", such as molecular dynamics. 
 
Classes to handle individual model particles. (Note that implementation of inline functions is in int...
 
Macros for maintaining molecular hierarchies. 
 
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)