root / ase / test / basin.py @ 1
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) |