root / ase / test / md.py @ 4
Historique | Voir | Annoter | Télécharger (598 octet)
| 1 | 1 | tkerber | from ase import Atoms |
|---|---|---|---|
| 2 | 1 | tkerber | from ase.calculators.emt import EMT |
| 3 | 1 | tkerber | from ase.md import VelocityVerlet |
| 4 | 1 | tkerber | from ase.io import PickleTrajectory |
| 5 | 1 | tkerber | |
| 6 | 1 | tkerber | a = 3.6
|
| 7 | 1 | tkerber | b = a / 2
|
| 8 | 1 | tkerber | fcc = Atoms('Cu', positions=[(0, 0, 0)], |
| 9 | 1 | tkerber | cell=[(0, b, b), (b, 0, b), (b, b, 0)], |
| 10 | 1 | tkerber | pbc=1)
|
| 11 | 1 | tkerber | fcc *= (2, 1, 1) |
| 12 | 1 | tkerber | fcc.set_calculator(EMT()) |
| 13 | 1 | tkerber | fcc.set_momenta([(0.9, 0.0, 0.0), (-0.9, 0, 0)]) |
| 14 | 1 | tkerber | md = VelocityVerlet(fcc, dt=0.1)
|
| 15 | 1 | tkerber | def f(): |
| 16 | 1 | tkerber | print fcc.get_potential_energy(), fcc.get_total_energy()
|
| 17 | 1 | tkerber | md.attach(f) |
| 18 | 1 | tkerber | md.attach(PickleTrajectory('Cu2.traj', 'w', fcc).write, interval=3) |
| 19 | 1 | tkerber | md.run(steps=20)
|
| 20 | 1 | tkerber | fcc2 = PickleTrajectory('Cu2.traj', 'r')[-1] |