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