root / ase / gui / neb.py @ 11
Historique | Voir | Annoter | Télécharger (687 octet)
1 | 1 | tkerber | # -*- coding: utf-8 -*-
|
---|---|---|---|
2 | 1 | tkerber | from math import sqrt |
3 | 1 | tkerber | |
4 | 1 | tkerber | import numpy as np |
5 | 1 | tkerber | |
6 | 1 | tkerber | from ase.neb import fit0 |
7 | 1 | tkerber | |
8 | 1 | tkerber | def NudgedElasticBand(images): |
9 | 1 | tkerber | N = images.repeat.prod() |
10 | 1 | tkerber | natoms = images.natoms // N |
11 | 1 | tkerber | |
12 | 1 | tkerber | R = images.P[:, :natoms] |
13 | 1 | tkerber | E = images.E |
14 | 1 | tkerber | F = images.F[:, :natoms] |
15 | 1 | tkerber | |
16 | 1 | tkerber | s, E, Sfit, Efit, lines = fit0(E, F, R) |
17 | 1 | tkerber | import pylab |
18 | 1 | tkerber | import matplotlib |
19 | 1 | tkerber | #matplotlib.use('GTK')
|
20 | 1 | tkerber | pylab.ion() |
21 | 1 | tkerber | x = 2.95
|
22 | 1 | tkerber | pylab.figure(figsize=(x * 2.5**0.5, x)) |
23 | 1 | tkerber | pylab.plot(s, E, 'o')
|
24 | 1 | tkerber | for x, y in lines: |
25 | 1 | tkerber | pylab.plot(x, y, '-g')
|
26 | 1 | tkerber | pylab.plot(Sfit, Efit, 'k-')
|
27 | 1 | tkerber | pylab.xlabel(u'path [Å]')
|
28 | 1 | tkerber | pylab.ylabel(u'energy [eV]')
|
29 | 1 | tkerber | pylab.title('Maximum: %.3f eV' % max(Efit)) |
30 | 1 | tkerber | pylab.show() |