Simple molecular dynamics optimizer.
The particles to be optimized must have optimizable x,y,z attributes and a non-optimizable mass attribute; this optimizer assumes the score to be energy in kcal/mol, the xyz coordinates to be in angstroms, and the mass to be in AMU (g/mol).
Particles without optimized x,y,z and nonoptimized mass are skipped.
Examples: dock with crosslinks
Inheritance diagram for IMP::atom::MolecularDynamics:Public Member Functions | |
| MolecularDynamics (Model *m=nullptr) | |
| virtual void | assign_velocities (Float temperature) |
| Assign velocities representative of the given temperature. | |
| virtual Float | get_kinetic_energy () const |
| Float | get_kinetic_temperature (Float ekinetic) const |
| void | set_velocity_cap (Float velocity_cap) |
| Set maximum velocity in A/fs. | |
Protected Member Functions | |
| void | cap_velocity_component (Float &vel) |
| Cap a velocity component to the maximum value. | |
| void | initialize () |
| virtual void | propagate_coordinates (const ParticleIndexes &ps, double step_size) |
| First part of velocity Verlet (update coordinates and half-step velocity) | |
| virtual void | propagate_velocities (const ParticleIndexes &ps, double step_size) |
| Second part of velocity Verlet (update velocity) | |
| virtual void | setup_degrees_of_freedom (const ParticleIndexes &ps) |
Protected Attributes | |
| int | degrees_of_freedom_ |
| Number of degrees of freedom in the system. | |
| Float | velocity_cap_ |
| Maximum absolute value of a single velocity component. | |
| FloatKey | vs_ [3] |
| Keys of the xyz velocities. | |
Score based on the provided model
Reimplemented in IMP::isd::MolecularDynamics.
| virtual void IMP::atom::MolecularDynamics::assign_velocities | ( | Float | temperature | ) | [virtual] |
Assign velocities representative of the given temperature.
Reimplemented in IMP::isd::MolecularDynamics.
| void IMP::atom::MolecularDynamics::cap_velocity_component | ( | Float & | vel | ) | [protected] |
Cap a velocity component to the maximum value.
| virtual Float IMP::atom::MolecularDynamics::get_kinetic_energy | ( | ) | const [virtual] |
Reimplemented in IMP::isd::MolecularDynamics.
| [in] | ekinetic | kinetic energy, e.g. from get_kinetic_energy() |
| virtual void IMP::atom::MolecularDynamics::propagate_coordinates | ( | const ParticleIndexes & | ps, |
| double | step_size | ||
| ) | [protected, virtual] |
First part of velocity Verlet (update coordinates and half-step velocity)
Reimplemented in IMP::isd::MolecularDynamics.
| virtual void IMP::atom::MolecularDynamics::propagate_velocities | ( | const ParticleIndexes & | ps, |
| double | step_size | ||
| ) | [protected, virtual] |
Second part of velocity Verlet (update velocity)
Reimplemented in IMP::isd::MolecularDynamics.
| void IMP::atom::MolecularDynamics::set_velocity_cap | ( | Float | velocity_cap | ) |
Set maximum velocity in A/fs.
At each dynamics time step, the absolute value of each velocity component is capped at this value. This prevents spurious strong forces (occasionally encountered with frustrated conformations) from causing large oscillations in the system. By default, velocities are not capped.
int IMP::atom::MolecularDynamics::degrees_of_freedom_ [protected] |
Number of degrees of freedom in the system.
Float IMP::atom::MolecularDynamics::velocity_cap_ [protected] |
Maximum absolute value of a single velocity component.
FloatKey IMP::atom::MolecularDynamics::vs_[3] [protected] |
Keys of the xyz velocities.