kwant.plotter.interpolate_density

kwant.plotter.interpolate_density#

kwant.plotter.interpolate_density(syst, density, relwidth=None, abswidth=None, n=9, mask=True)[source]#

Interpolate density in a system onto a regular grid.

The system sites together with a scalar for each site defines a “discrete” density field where the density is non-zero only at the site positions.

To make this vector field easier to visualize and interpret at different length scales, it is smoothed by convoluting it with the bell-shaped bump function f(r) = max(1 - (2*r / width)**2, 0)**2. The bump width is determined by the relwidth and abswidth parameters.

This routine samples the smoothed field on a regular (square or cubic) grid.

Parameters:
  • syst (A finalized system) – The system on which we are going to calculate the field.

  • density (1D array of float) – Must contain the intensity on each site in the same order that they appear in syst.sites.

  • relwidth (float, optional) – Relative width of the bumps used to smooth the field, as a fraction of the length of the longest side of the bounding box. This argument is only used if abswidth is not given.

  • abswidth (float, optional) – Absolute width of the bumps used to smooth the field. Takes precedence over relwidth. If neither is given, the bump width is set to four times the length of the shortest hopping.

  • n (int) – Number of points the grid must have over the width of the bump.

  • mask (Bool) – If True, this function returns a masked array that masks positions that are too far away from any sites. This is useful for showing an approximate outline of the system when the field is plotted.

Returns:

  • field (n-d arraylike of float) – n-d array of n-d vectors.

  • box (sequence of 2-sequences of float) – the extents of field: ((x0, x1), (y0, y1), …)