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