root / ase / test / verlet.py @ 13
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 |