9 #ifndef IMPATOM_SIMULATOR_H
10 #define IMPATOM_SIMULATOR_H
12 #include <IMP/atom/atom_config.h>
16 #include <IMP/internal/units.h>
19 IMPATOM_BEGIN_NAMESPACE
22 class SimulationParameters;
49 double wave_factor = 1.0);
58 double simulate(
double time_in_fs);
75 double simulate_wave(
double time_in_fs,
double max_time_step_factor = 10.0,
78 double get_temperature()
const {
return temperature_; }
79 void set_temperature(
double d) { temperature_ = d; }
87 void set_maximum_time_step(
double ts) { max_time_step_ = ts; }
88 double get_maximum_time_step()
const {
return max_time_step_; }
89 double get_last_time_step()
const {
90 if (last_time_step_ < 0)
91 return get_maximum_time_step();
93 return last_time_step_;
97 void set_time_step(
double ts) { set_maximum_time_step(ts); }
169 virtual bool get_is_simulation_particle(
ParticleIndex p)
const = 0;
179 virtual double do_simulate(
double time);
188 virtual double do_simulate_wave(
double time_in_fs,
double max_time_step_factor = 10.0,
193 double max_time_step_;
194 double current_time_;
195 double last_time_step_;
206 IMPATOMEXPORT
double get_energy_in_femto_joules(
double energy_in_kcal_per_mol);
210 double force_in_kcal_per_mol_per_angstrom);
214 double k_in_kcal_per_mol_per_angstrom_square);
218 IMPATOM_END_NAMESPACE
double get_kt(double T)
Return kT for a given temperature in units of [kcal/mol/K].
The base class for simulators.
double get_current_time() const
double get_spring_constant_in_femto_newtons_per_angstrom(double k_in_kcal_per_mol_per_angstrom_square)
Convert spring constant from kcal/mol/A^2 to femtonewton/A.
#define IMP_FINAL
Have the compiler report an error if anything overrides this method.
Base class for all optimizers.
#define IMP_LIST(protection, Ucname, lcname, Data, PluralData)
A macro to provide a uniform interface for storing lists of objects.
Class for storing model, its restraints, constraints, and particles.
virtual void setup(const ParticleIndexes &)
virtual double do_optimize(unsigned int ns)=0
override this function to do actual optimization
void set_current_time(double ct)
Sets the current simulation time in femtoseconds to ct.
Base class for all optimizers.
Classes to handle individual model particles. (Note that implementation of inline functions is in int...
#define IMP_OBJECTS(Name, PluralName)
Define the types for storing lists of object pointers.
double get_force_in_femto_newtons(double force_in_kcal_per_mol_per_angstrom)
Convert force from kcal/mol/A to femtonewtons.
double Float
Basic floating-point value (could be float, double...)
Class to handle individual model particles.
#define IMP_OVERRIDE
Cause a compile error if this method does not override a parent method.