root / ase / gui / neb.py @ 4
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() |