tkwant.leads.add_voltage

tkwant.leads.add_voltage(syst, lead, phase)[source]

Add a time-dependent voltage to a lead.

Add a lead unit cell to the syst where lead is attached, and couple this to syst with a time-dependent hopping that effectively adds a voltage to the lead.

Parameters
  • syst (kwant.builder.Builder) – The central system, with its leads already attached. Modified on return.

  • lead (int) – The number of the lead on which to apply the voltage.

  • phase (callable) – Function specifying the anti-derivative of the voltage. Takes takes the same extra arguments as the Hamiltonian value functions, starting with the time. Returns either a scalar or a one-dimensional sequence: one element per orbital on a site. Must return 0 (or a sequence of zeros) at time 0.

Returns

The sites added to the system.

Return type

tuple

Raises

ValueError – If the phase argument is not callable, or if sites in the lead interface belong to different domains

Notes

Formally, this function adds a single lead cell to the system and attaches the previous lead interface to it with a hopping \((1 \otimes \exp[iX(t)])V\), where V is the hopping between lead unit cells, 1 is the unit matrix over the interface sites and X(t) is a square diagonal matrix over the orbitals on one site, specified by the phase parameter. This corresponds to adding a voltage X’(t) to each site in the lead. In the most common case of 1 orbital per site X(t) is a scalar.

This function only works if the lead was attached with attach_lead,

If any exceptions are raised in this function there are no guarantees that the system was not modified.