nanotools.scattering module

Scattering states calculator

class nanotools.scattering.ScatteringStates(center, left=None, right=None, left_equal_right: bool = False, transport_axis: int = -1, energy=<Quantity([0.], 'electron_volt')>, classname: str = NOTHING)[source]

Bases: Base

ScatteringStates class.

dos

density of states

transport_axis
Type:

int

left_equal_right

boolean variable indicating whether the two lead structures are identical.

Type:

bool

classmethod from_twoprobe(twoprb, **kwargs)[source]

initializes instance from TwoProbe object

get_bloch(lead, direction, k_long_index=None, k_trans_index=0, energy_index=0, spin=1)[source]

get information about certain Bloch-wave in leads.

Parameters:
  • k_trans_index (int) – index of transverse wave vector, see system.kpoint.fractional_coordinates

  • energy_index (int) – index of energy-point

  • spin (int) – +1/-1 spin-up/down

  • k_long_index (int / None) – index of the longitudinal wave vector; if None, take all wave vectors.

  • lead (str) – in which lead, “left” or “right”

  • direction (str) – “in”coming or “out”going

Returns:

dictionary

get_scatt_wave(lead, k_long_index, k_trans_index=0, energy_index=0, spin=1, **kwargs)[source]

Returns certain wave-function as 3d-array, given incident wave.

Parameters:
  • k_trans_index (int) – index of transverse wave vector, see system.kpoint.fractional_coordinates

  • energy_index (int) – index of energy-point

  • spin (int) – +1/-1 spin-up/down

  • k_long_index (int) – index of the longitudinal wave vector

  • lead (str) – from which lead, “left” or “right”, the incident wave comes

get_scatter_rate(incoming, outgoing)[source]

Returns scattering rate from an incoming to an outgoing state.

Parameters:
  • incoming (dict) – see get_bloch

  • outgoing (dict) – see get_bloch

plot_isosurfaces(lead, k_long_index, k_trans_index=0, energy_index=0, spin=1, vals=None, **kwargs)[source]

Plots isosurface of selected wavefunction at given contour-values.

Parameters:
  • k_trans_index (int) – index of transverse wave vector, see system.kpoint.fractional_coordinates

  • energy_index (int) – index of energy-point

  • spin (int) – +1/-1 spin-up/down

  • k_long_index (int) – index of the longitudinal wave vector

  • lead (str) – from which lead, “left” or “right”, the incident wave comes

  • vals (list of float) – contour values

solve(energy=None, input='nano_scatt_in', output='nano_scatt_out')[source]

Calculates transmission This method triggers the nanodcalplus executable. Result is stored in self.dos.transmission

Parameters:

energies (float / iterable) – energy grid over which the transmission is to be calculated. eg. energies=0.1 eg. energies=[0.1,0.2,0.3]