Extract upper and lower energy cutoffs from the lead occupations.

We give an example how this routine works: Let be energy_range = [(None, 1), (2, 3)] for one lead, where each tuple has a meaning of an energy interval. For this lead, the largest energy interval, including all these intervals is (None, 3). Note that None as the first tuple elements is interpreted as - infinity. The same is done now for all elements of the occupations sequence, which represent the leads. The (emin, emax) values returned by this routine is the largest interval, that contain all energy intervals of the leads. If a lead is not present, the corresponding element of the occupations sequence must be None, such that it does contribute. Pay attention that None has double meaning: As an energy interval (None, 0) or (0, None) it is interpreted as - infinity, respectively + infinity. For the occupations sequence, None means absence, such that emin/emax are not changed by the corresponding lead. If all lead elements are None, (None, None) is returned.


occupation (tkwant.manybody.Occupation or sequence thereof) –

Lead occupation, see lead_occupation for details. If a lead is not occupied, the corresponding element must be set to None. Otherwise, each element of the occupations sequence must have at least the following attribute:


  • emin (float or None) – Lower energy cutoff, None means a cutoff of - infinity.

  • emin (float or None) – Upper energy cutoff, None means a cutoff of + infinity.