root / ase / dft / __init__.py @ 1
Historique | Voir | Annoter | Télécharger (780 octet)
1 | 1 | tkerber | import numpy as np |
---|---|---|---|
2 | 1 | tkerber | from ase.dft.stm import STM |
3 | 1 | tkerber | from ase.dft.dos import DOS |
4 | 1 | tkerber | from ase.dft.wannier import Wannier |
5 | 1 | tkerber | from ase.dft.kpoints import monkhorst_pack |
6 | 1 | tkerber | |
7 | 1 | tkerber | def get_distribution_moment(x, y, order=0): |
8 | 1 | tkerber | """Return the moment of nth order of distribution.
|
9 | 1 | tkerber |
|
10 | 1 | tkerber | 1st and 2nd order moments of a band correspond to the band's
|
11 | 1 | tkerber | center and width respectively.
|
12 | 1 | tkerber |
|
13 | 1 | tkerber | For integration, the trapezoid rule is used.
|
14 | 1 | tkerber | """
|
15 | 1 | tkerber | |
16 | 1 | tkerber | x = np.asarray(x) |
17 | 1 | tkerber | y = np.asarray(y) |
18 | 1 | tkerber | |
19 | 1 | tkerber | if order==0: |
20 | 1 | tkerber | return np.trapz(y, x)
|
21 | 1 | tkerber | elif isinstance(order, int): |
22 | 1 | tkerber | return np.trapz(x**order * y, x) / np.trapz(y, x)
|
23 | 1 | tkerber | elif hasattr(order, '__iter__'): |
24 | 1 | tkerber | return [get_distribution_moment(x, y, n) for n in order] |
25 | 1 | tkerber | else:
|
26 | 1 | tkerber | raise ValueError('Illegal order: %s' % order) |