Statistiques
| Révision :

root / ase / test / verlet.py @ 13

Historique | Voir | Annoter | Télécharger (868 octet)

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