Statistiques
| Révision :

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