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