kwant.builder.add_peierls_phase

kwant.builder.add_peierls_phase#

kwant.builder.add_peierls_phase(syst, peierls_parameter='phi', fix_gauge=True)[source]#

Add a Peierls phase parameter to a Builder.

Parameters:
  • syst (kwant.Builder) – The system to which to add a Peierls phase.

  • peierls_parameter (str) – The name of the Peierls phase parameter to value functions.

  • fix_gauge (bool (default: True)) – If True, fix the gauge of the system and return it also

Returns:

  • syst (kwant.builder.Finitesystem or kwant.builder.InfiniteSystem) – A system where all hoppings are given by value functions that have an additional parameter ‘phi’ that should be the Peierls phase. Any leads have similar parameters named ‘phi_lead0’, ‘phi_lead1’ etc. This parameter should be provided as a callable phi(site1, site2), that returns the phase of the hopping between two sites exp(1j * phi_12). This is the same format as returned by kwant.physics.magnetic_gauge.

  • gauge (callable) – Only returned if fix_gauge is True. Called with magnetic field(s), and returns a parameter dictionary that can be passed to the system as ‘params’ (see the example below and kwant.physics.magnetic_gauge for more information).

Examples

>>> import numpy as np
>>> import kwant
>>>
>>> syst = make_system()
>>> lead = make_lead()
>>> syst.attach_lead(lead)
>>> syst.attach_lead(lead.reversed())
>>>
>>> fsyst, phase = kwant.builder.add_peierls_phase(syst)
>>>
>>> def B_syst(pos):
>>>     return np.exp(-np.sum(pos * pos))
>>>
>>> kwant.smatrix(fsyst, parameters=dict(t=-1, **phase(B_syst, 0, 0)))