root / ase / test / verlet.py @ 4
Historique | Voir | Annoter | Télécharger (868 octet)
| 1 |
import numpy as np |
|---|---|
| 2 |
from ase import Atoms |
| 3 |
from ase.units import fs |
| 4 |
from ase.calculators.test import TestPotential |
| 5 |
from ase.calculators.emt import EMT |
| 6 |
from ase.md import VelocityVerlet |
| 7 |
from ase.io import PickleTrajectory, read |
| 8 |
from ase.optimize import QuasiNewton |
| 9 |
|
| 10 |
np.seterr(all='raise')
|
| 11 |
a = Atoms('4X',
|
| 12 |
masses=[1, 2, 3, 4], |
| 13 |
positions=[(0, 0, 0), |
| 14 |
(1, 0, 0), |
| 15 |
(0, 1, 0), |
| 16 |
(0.1, 0.2, 0.7)], |
| 17 |
calculator=TestPotential()) |
| 18 |
print a.get_forces()
|
| 19 |
md = VelocityVerlet(a, dt=0.5 * fs, logfile='-', loginterval=500) |
| 20 |
traj = PickleTrajectory('4N.traj', 'w', a) |
| 21 |
md.attach(traj.write, 100)
|
| 22 |
e0 = a.get_total_energy() |
| 23 |
md.run(steps=10000)
|
| 24 |
del traj
|
| 25 |
assert abs(read('4N.traj').get_total_energy() - e0) < 0.0001 |
| 26 |
|
| 27 |
qn = QuasiNewton(a) |
| 28 |
qn.run(0.001)
|
| 29 |
assert abs(a.get_potential_energy() - 1.0) < 0.000002 |