Statistiques
| Révision :

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)