# kwant.solvers.common.SMatrix¶

class kwant.solvers.common.SMatrix(data, lead_info, out_leads, in_leads, current_conserving=False)[source]

A scattering matrix.

Transport properties can be easily accessed using the transmission method (don’t be fooled by the name, it can also compute reflection, which is just transmission from one lead back into the same lead.)

SMatrix however also allows for a more direct access to the result: The data stored in SMatrix is a scattering matrix with respect to lead modes and these modes themselves. The details of this data can be directly accessed through the instance variables data and lead_info. Subblocks of data corresponding to particular leads are conveniently obtained by submatrix.

SMatrix also respects the conservation laws present in the lead, such as spin conservation, if they are declared during system construction. If queried with length-2 sequence the first number is the number of the lead, and the second number is the index of the corresponding conserved quantity. For example smatrix.transmission((1, 3), (0, 2)) is transmission from block 2 of the conserved quantity in lead 0 to the block 3 of the conserved quantity in lead 1.

Attributes
dataNumPy array

a matrix containing all the requested matrix elements of the scattering matrix.

a list containing kwant.physics.PropagatingModes for each lead.

indices of the leads where current is extracted (out) or injected (in). Only those are listed for which SMatrix contains the calculated result.

Methods

block_coords(lead_out, lead_in)[source]

conductance_matrix()[source]

Return the conductance matrix.

This is the matrix $$C$$ such that $$I = CV$$ where $$I$$ and $$V$$ are, respectively, the vectors of currents and voltages for each lead.

This matrix is useful for calculating non-local resistances. See Section 2.4 of the book by S. Datta.

in_block_coords(lead_in)[source]

Return a slice with the columns in the block corresponding to lead_in.

num_propagating(lead)[source]

Return the number of propagating modes in the lead.

out_block_coords(lead_out)[source]

Return a slice with the rows in the block corresponding to lead_out.

submatrix(lead_out, lead_in)[source]

transmission(lead_out, lead_in)[source]