kwant.system.FiniteSystem#
- class kwant.system.FiniteSystem[source]#
Bases:
System
Abstract finite low-level system, possibly with leads.
- leads[source]#
Each lead has to provide a method
selfenergy
that has the same signature asInfiniteSystem.selfenergy
(without theself
parameter), and must have propertyparameters
: a collection of strings that name the system parameters ( though this requirement is provisional and may be removed in a future version of Kwant). It may also providemodes
that has the same signature asInfiniteSystem.modes
(without theself
parameter).- Type:
sequence of leads
- lead_interfaces[source]#
Each sub-sequence contains the indices of the system sites to which the lead is connected.
- Type:
sequence of sequences of integers
- lead_paddings[source]#
Each sub-sequence contains the indices of the system sites that belong to the lead, and therefore have the same onsite as the lead sites, and are connected by the same hoppings as the lead sites.
- Type:
sequence of sequences of integers
- parameters[source]#
The names of the parameters on which the system depends. This does not include the parameters for any leads. This attribute is provisional and may be changed in a future version of Kwant
- Type:
frozenset of strings
Notes
The length of
leads
must be equal to the length oflead_interfaces
andlead_paddings
.For lead
n
, the method leads[n].selfenergy must return a square matrix whose size issum(len(self.hamiltonian(site, site)) for site in self.lead_interfaces[n])
. The output ofleads[n].modes
has to be a tuple ofPropagatingModes
,StabilizedModes
.Often, the elements of leads will be instances of
InfiniteSystem
. If this is the case for leadn
, the siteslead_interfaces[n]
match the firstlen(lead_interfaces[n])
sites of the InfiniteSystem.Methods
- discrete_symmetry(args, *, params=None)[source]#
Return the discrete symmetry of the system.
The returned object is an instance of
DiscreteSymmetry
.Providing positional arguments via ‘args’ is deprecated, instead, provide named parameters as a dictionary via ‘params’.
- abstract hamiltonian(i, j, *args, params=None)[source]#
Return the hamiltonian matrix element for sites
i
andj
.If
i == j
, return the on-site Hamiltonian of sitei
.if
i != j
, return the hopping between sitei
andj
.Hamiltonians may depend (optionally) on positional and keyword arguments.
Providing positional arguments via ‘args’ is deprecated, instead, provide named parameters as a dictionary via ‘params’.
- hamiltonian_submatrix(self, args=(), to_sites=None, from_sites=None, sparse=False, return_norb=False, *, params=None)[source]#
Return a submatrix of the system Hamiltonian.
- Parameters:
args (tuple, defaults to empty) – Positional arguments to pass to the
hamiltonian
method. Mutually exclusive with ‘params’.to_sites (sequence of sites or None (default))
from_sites (sequence of sites or None (default))
sparse (bool) – Whether to return a sparse or a dense matrix. Defaults to
False
.return_norb (bool) – Whether to return arrays of numbers of orbitals. Defaults to
False
.params (dict, optional) – Dictionary of parameter names and their values. Mutually exclusive with ‘args’.
- Returns:
hamiltonian_part (numpy.ndarray or scipy.sparse.coo_matrix) – Submatrix of Hamiltonian of the system.
to_norb (array of integers) – Numbers of orbitals on each site in to_sites. Only returned when
return_norb
is true.from_norb (array of integers) – Numbers of orbitals on each site in from_sites. Only returned when
return_norb
is true.
Notes
The returned submatrix contains all the Hamiltonian matrix elements from
from_sites
toto_sites
. The default forfrom_sites
andto_sites
isNone
which means to use all sites of the system in the order in which they appear.
- precalculate(energy=0, args=(), leads=None, what='modes', *, params=None)[source]#
Precalculate modes or self-energies in the leads.
Construct a copy of the system, with the lead modes precalculated, which may significantly speed up calculations where only the system is changing.
- Parameters:
energy (float) – Energy at which the modes or self-energies have to be evaluated.
args (sequence) – Additional parameters required for calculating the Hamiltionians. Deprecated in favor of ‘params’ (and mutually exclusive with it).
leads (sequence of integers or None) – Numbers of the leads to be precalculated. If
None
, all are precalculated.what ('modes', 'selfenergy', 'all') – The quantitity to precompute. ‘all’ will compute both modes and self-energies. Defaults to ‘modes’.
params (dict, optional) – Dictionary of parameter names and their values. Mutually exclusive with ‘args’.
- Returns:
syst – A copy of the original system with some leads precalculated.
- Return type:
Notes
If the leads are precalculated at certain energy or args values, they might give wrong results if used to solve the system with different parameter values. Use this function with caution.
- validate_symmetries(args=(), *, params=None)[source]#
Check that the Hamiltonian satisfies discrete symmetries.
Applies
validate
to the Hamiltonian, see its documentation for details on the return format.Providing positional arguments via ‘args’ is deprecated, instead, provide named parameters as a dictionary via ‘params’.