Float MolecularDynamics::get_kinetic_energy() const { // Conversion factor to get energy in kcal/mol from velocities in A/fs and // mass in g/mol static const Float conversion = 1.0 / 4.1868e-4; Float ekinetic = 0.; ParticlesTemp ps = get_simulation_particles(); for (ParticlesTemp::iterator iter = ps.begin(); iter != ps.end(); ++iter) { Particle *p = *iter; algebra::Vector3D v = LinearVelocity(p).get_velocity(); Float mass = Mass(p).get_mass(); ekinetic += mass * (v[0] * v[0] + v[1] * v[1] + v[2] * v[2]); } return 0.5 * ekinetic * conversion; }
Float MolecularDynamics::get_kinetic_energy() const { // Conversion factor to get energy in kcal/mol from velocities in A/fs and // mass in g/mol static const Float conversion = 1.0 / 4.1868e-4; Float ekinetic = 0.; ParticlesTemp ps=get_simulation_particles(); for (ParticlesTemp::iterator iter = ps.begin(); iter != ps.end(); ++iter) { Particle *p = *iter; Float vx = p->get_value(vs_[0]); Float vy = p->get_value(vs_[1]); Float vz = p->get_value(vs_[2]); Float mass = Mass(p).get_mass(); ekinetic += mass * (vx * vx + vy * vy + vz * vz); } return 0.5 * ekinetic * conversion; }