root / ase / test / basin.py @ 4
Historique | Voir | Annoter | Télécharger (821 octet)
| 1 | 1 | tkerber | import numpy as np |
|---|---|---|---|
| 2 | 1 | tkerber | from math import pi, sqrt |
| 3 | 1 | tkerber | from ase import Atoms |
| 4 | 1 | tkerber | from ase.calculators.lj import LennardJones |
| 5 | 1 | tkerber | from ase.optimize.basin import BasinHopping |
| 6 | 1 | tkerber | from ase.io import PickleTrajectory, read |
| 7 | 1 | tkerber | from ase.units import kB |
| 8 | 1 | tkerber | |
| 9 | 1 | tkerber | N = 7
|
| 10 | 1 | tkerber | R = N**(1./3.) |
| 11 | 1 | tkerber | pos = np.random.uniform(-R, R, (N, 3))
|
| 12 | 1 | tkerber | s = Atoms('He' + str(N), |
| 13 | 1 | tkerber | positions = pos) |
| 14 | 1 | tkerber | s.set_calculator(LennardJones()) |
| 15 | 1 | tkerber | |
| 16 | 1 | tkerber | ftraj = 'lowest.traj'
|
| 17 | 1 | tkerber | traj = PickleTrajectory(ftraj, 'w', s)
|
| 18 | 1 | tkerber | bh = BasinHopping(s, |
| 19 | 1 | tkerber | temperature=100 * kB, dr=0.5, |
| 20 | 1 | tkerber | optimizer_logfile=None)
|
| 21 | 1 | tkerber | bh.attach(traj) |
| 22 | 1 | tkerber | bh.run(10)
|
| 23 | 1 | tkerber | |
| 24 | 1 | tkerber | Emin, smin = bh.get_minimum() |
| 25 | 1 | tkerber | |
| 26 | 1 | tkerber | # recalc energy
|
| 27 | 1 | tkerber | smin.set_calculator(LennardJones()) |
| 28 | 1 | tkerber | E = smin.get_potential_energy() |
| 29 | 1 | tkerber | assert abs(E - Emin) < 1e-15 |
| 30 | 1 | tkerber | traj.close() |
| 31 | 1 | tkerber | smim = read(ftraj) |
| 32 | 1 | tkerber | E = smin.get_potential_energy() |
| 33 | 1 | tkerber | assert abs(E - Emin) < 1e-15 |
| 34 | 1 | tkerber | |
| 35 | 1 | tkerber | #view(smin) |