BrillouinZone

class sisl.physics.BrillouinZone(obj)[source]

A class to construct Brillouin zone related quantities

It takes any object as an argument and can then return the k-points in non-reduced units from reduced units.

The object associated with the BrillouinZone object has to implement at least two different properties:

  1. cell which is the lattice vector
  2. rcell which is the reciprocal lattice vectors.

The object may also be an array of floats in which case an internal SuperCell object will be created from the cell vectors (see SuperCell for details).

Attributes

cell
k A list of all k-points (if available)
rcell
weight Weight of the k-points in the BrillouinZone object

Methods

__init__(obj) Initialize a BrillouinZone object from a given SuperCell
array([dtype]) Return self with numpy.ndarray returned quantities
average([dtype]) Return self with yielded quantities
mean([dtype]) Return self with yielded quantities
tocartesian(k) Transfer a k-point in reduced coordinates to the Cartesian coordinates
toreduced(k) Transfer a k-point in Cartesian coordinates to the reduced coordinates
yields([dtype]) Return self with yielded quantities
array(dtype=<type 'numpy.float64'>)[source]

Return self with numpy.ndarray returned quantities

This forces the __call__ routine to return a single array.

Parameters:

dtype : numpy.dtype, optional

the data-type to cast the values to

See also

yields
all output returned through an iterator
average
take the average (with k-weights) of the Brillouin zone

Examples

>>> obj = BrillouinZone(...) 
>>> obj.array().eigh() 
average(dtype=<type 'numpy.float64'>)[source]

Return self with yielded quantities

This forces the __call__ routine to return a an iterator which may yield the quantities calculated.

Parameters:

dtype : numpy.dtype, optional

the data-type to cast the values to

See also

array
all output as a single array
yields
all output returned through an iterator

Examples

>>> obj = BrillouinZone(Hamiltonian) 
>>> obj.average().eigh() 
>>> obj = BrillouinZone(Hamiltonian) 
>>> obj.average() 
>>> obj.eigh() 
>>> obj.eighs() 
cell
k

A list of all k-points (if available)

mean(dtype=<type 'numpy.float64'>)

Return self with yielded quantities

This forces the __call__ routine to return a an iterator which may yield the quantities calculated.

Parameters:

dtype : numpy.dtype, optional

the data-type to cast the values to

See also

array
all output as a single array
yields
all output returned through an iterator

Examples

>>> obj = BrillouinZone(Hamiltonian) 
>>> obj.average().eigh() 
>>> obj = BrillouinZone(Hamiltonian) 
>>> obj.average() 
>>> obj.eigh() 
>>> obj.eighs() 
rcell
tocartesian(k)[source]

Transfer a k-point in reduced coordinates to the Cartesian coordinates

Parameters:

k : list of float

k-point in reduced coordinates

toreduced(k)[source]

Transfer a k-point in Cartesian coordinates to the reduced coordinates

Parameters:

k : list of float

k-point in Cartesian coordinates

weight

Weight of the k-points in the BrillouinZone object

yields(dtype=<type 'numpy.float64'>)[source]

Return self with yielded quantities

This forces the __call__ routine to return a an iterator which may yield the quantities calculated.

Parameters:

dtype : numpy.dtype, optional

the data-type to cast the values to

See also

array
all output as a single array
average
take the average (with k-weights) of the Brillouin zone

Examples

>>> obj = BrillouinZone(Hamiltonian) 
>>> obj.yields().eigh()