Topology : Berry curvature computations¶
This submodule provides functions that compute topological quantities (Berry curvature, Chern number, etc.)
- pyqcm.berry.Berry_curvature(nk=200, eta=0.0, period='G', range=None, label=0, orb=None, subdivide=False, plane='xy', k_perp=0.0, file=None, plt_ax=None, **kwargs)¶
Draws a 2D density plot of the Berry curvature as a function of wavevector, on a square grid going from -pi to pi in each direction.
- Parameters
nk (int) – number of wavevectors on the side of the grid
eta (float) – imaginary part of the frequency at zero, i.e., w = eta*1j
period (str) – type of periodization used (e.g. ‘G’, ‘M’, ‘None’)
range (list) – range of plot [originX, originY, side], in multiples of pi
label (int) – label of the model instance (0 by default)
orb (int) – the orbital to use in the computation (1 to number of bands). None (default) means a sum over all bands.
subdivide (int) – True if plaquette subdivision is used.
k_perp (float) – momentum component in the third direction (x pi)
plane (str) – momentum plane, ‘xy’=’z’, ‘yz’=’x’=’zy’ or ‘xz’=’zx’=’y’
file (str) – Name of the file to save the plot. If None, shows the plot on screen.
plt_ax – optional matplotlib axis set, to be passed when one wants to collect a subplot of a larger set
kwargs – keyword arguments passed to the matplotlib ‘plot’ function
- Returns
the contourplot object of matplotlib
- pyqcm.berry.Berry_field_map(nk=40, nsides=4, plane='z', k_perp=0.0, label=0, orb=None, file=None, plt_ax=None, **kwargs)¶
Creates a plot of the Berry flux as a function of wavevector
- Parameters
nk (int) – number of wavevector grid points on each side
nsides (int) – number of sides of the polygon used to compute the circulation of the Berry field.
plane (str) – momentum plane, ‘xy’=’z’, ‘yz’=’x’=’zy’ or ‘xz’=’zx’=’y’
k_perp (str) – offset in wavevector in the direction perpendicular to the plane (x pi)
label (int) – label of the model instance (0 by default)
orb (int) – the orbital to use in the computation (1 to number of bands). None (default) means a sum over all bands.
file (str) – Name of the file to save the plot. If None, shows the plot on screen.
plt_ax – optional matplotlib axis set, to be passed when one wants to collect a subplot of a larger set
kwargs – keyword arguments passed to the matplotlib ‘plot’ function
- Returns
the contourplot object of matplotlib, the quiver object of matplotlib
- pyqcm.berry.Berry_flux(k0, R, nk=40, plane='xy', label=0, orb=None)¶
Computes the integral of the Berry connexion along a closed circle
- Parameters
k0 (int) – center of the circle
R (float) – radius of the circle
nk (int) – number of wavevectors on the circle
plane (str) – momentum plane, ‘xy’=’z’, ‘yz’=’x’=’zy’ or ‘xz’=’zx’=’y’
label (int) – label of the model instance (0 by default)
orb (int) – the orbital to use in the computation (1 to number of bands). None (default) means a sum over all bands.
label – label of the model instance (0 by default)
- Returns float
the flux
- pyqcm.berry.Berry_flux_map(nk=40, plane='z', dir='z', k_perp=0.0, label=0, orb=None, npoints=4, radius=None, file=None, plt_ax=None, **kwargs)¶
Creates a plot of the Berry flux as a function of wavevector
- Parameters
nk (int) – number of wavevector grid points on each side
plane (str) – momentum plane, ‘xy’=’z’, ‘yz’=’x’=’zy’ or ‘xz’=’zx’=’y’
dir (str) – direction of flux, ‘xy’=’z’, ‘yz’=’x’=’zy’ or ‘xz’=’zx’=’y’
k_perp (str) – offset in wavevector in the direction perpendicular to the plane (x pi)
label (int) – label of the model instance (0 by default)
orb (int) – the orbital to use in the computation (1 to number of bands). None (default) means a sum over all bands.
npoints (int) – nombre de points sur chaque boucle
file (str) – Name of the file to save the plot. If None, shows the plot on screen.
plt_ax – optional matplotlib axis set, to be passed when one wants to collect a subplot of a larger set
kwargs – keyword arguments passed to the matplotlib ‘plot’ function
- Returns
the contourplot object of matplotlib
- pyqcm.berry.Chern_number(nk=100, eta=0.0, period='G', offset=[0.0, 0.0, 0.0], label=0, orb=None, subdivide=False)¶
Computes the Chern number by summing the Berry curvature over wavevectors on a square grid going from (0,0) to (pi,pi)
- Parameters
nk (int) – number of wavevectors on the side of the grid
eta (float) – imaginary part of the frequency at zero, i.e., w = eta*1j
period (str) – type of periodization used (e.g. ‘G’, ‘M’, ‘None’)
offset (wavevector) – wavevector offset of the computation grid
label (int) – label of the model instance (0 by default)
orb (int) – the orbital to use in the computation (1 to number of bands). None (default) means a sum over all occupied bands.
subdivide (boolean) – recursivity flag (wavevector grid subdivision)
- Returns float
The Chern number
- pyqcm.berry.monopole(k, a=0.01, nk=20, label=0, orb=None, subdivide=False)¶
computes the topological charge of a node in a Weyl semi-metal
- Parameters
k ([double]) – wavevector, position of the node
a (float) – half-side of the cube surrounding the node
nk (int) – number of divisions along the side of the cube
label (int) – label of the model instance (0 by default)
orb (int) – orbital to compute the charge of (if None, sums over all bands)
subdivide (booleean) – True if subdivision is allowed (False by default)
label – label of the model instance (0 by default)
- Return float
the monopole charge
- pyqcm.berry.monopole_map(nk=40, label=0, orb=None, plane='z', k_perp=0.0, file=None, plt_ax=None, **kwargs)¶
Creates a plot of the monopole density (divergence of B) as a function of wavevector
- Parameters
nk (int) – number of wavevector grid points on each side
plane (str) – momentum plane, ‘xy’=’z’, ‘yz’=’x’=’zy’ or ‘xz’=’zx’=’y’
k_perp (str) – offset in wavevector in the direction perpendicular to the plane (x pi)
label (int) – label of the model instance (0 by default)
orb (int) – the orbital to use in the computation (1 to number of bands). None (default) means a sum over all bands.
file (str) – Name of the file to save the plot. If None, shows the plot on screen.
plt_ax – optional matplotlib axis set, to be passed when one wants to collect a subplot of a larger set
kwargs – keyword arguments passed to the matplotlib ‘plot’ function
- Returns
the contourplot object of matplotlib