kwant.operator.
Source
(syst, onsite=1, where=None, check_hermiticity=True, *, sum=False)[source]¶An operator for calculating general sources.
An instance of this class can be called like a function to evaluate the
expectation value with a wavefunction. See
__call__
for details.
System
The onsite matrix that defines the density from which this source is defined. If a dict is given, it maps from site families to square matrices (scalars are allowed if the site family has 1 orbital per site). If a function is given it must take the same arguments as the onsite Hamiltonian functions of the system.
Site
, or callable, optionalWhere to evaluate the operator. If syst
is not a finalized Builder,
then this should be a sequence of integers. If a function is provided,
it should take a single int or Site
(if syst
is
a finalized builder) and return True or False. If not provided, the
operator will be calculated over all sites in the system.
Check whether the provided onsite
is Hermitian. If it is not
Hermitian, then an error will be raised when the operator is
evaluated.
If True, then calling this operator will return a single scalar,
otherwise a vector will be returned (see
__call__
for details).
Notes
An example of a “source” is a spin torque. In general, if there is a certain “density” (e.g. charge or spin) that is represented by a square matrix \(M_i\) associated with each site \(i\), and \(H_{i}\) is the onsite Hamiltonian on site site i, then an instance of this class represents the tensor \(Q_{iαβ}\) which is equal to \((H_{i})^† M_i - M_i H_{i}\) when α and β are orbitals on site \(i\), and zero otherwise.
Methods
act
(self, ket, args=(), *, params=None)[source]¶Act with the operator on a wavefunction.
For an operator \(Q_{iαβ}\) and ket
\(ψ_β\)
this computes \(∑_{iβ} Q_{iαβ} ψ_β\).
Wavefunctions defined over all the orbitals of the system.
The extra arguments to the Hamiltonian value functions and
the operator onsite
function.
Deprecated in favor of ‘params’ (and mutually exclusive with it).
Dictionary of parameter names and their values. Mutually exclusive with ‘args’.
bind
(self, args=(), *, params=None)[source]¶Bind the given arguments to this operator.
Returns a copy of this operator that does not need to be passed extra
arguments when subsequently called or when using the act
method.
Providing positional arguments via ‘args’ is deprecated, instead provide named parameters as a dictionary via ‘params’.
__call__
()[source]¶Return the matrix elements of the operator.
An operator A
can be called like
>>> A(psi)
to compute the expectation value \(\bra{ψ} A \ket{ψ}\), or like
>>> A(phi, psi)
to compute the matrix element \(\bra{φ} A \ket{ψ}\).
If sum=True
was provided when constructing the operator, then
a scalar is returned. If sum=False
, then a vector is returned.
The vector is defined over the sites of the system if the operator
is a Density
, or over the hoppings if it is a
Current
or Source
. By default,
the returned vector is ordered in the same way as the sites
(for Density
) or hoppings in the graph of the
system (for Current
or Density
).
If the keyword parameter where
was provided when constructing
the operator, then the returned vector is instead defined only over
the sites or hoppings specified, and is ordered in the same way
as where
.
Alternatively stated, for an operator \(Q_{iαβ}\), bra
\(φ_α\) and ket
\(ψ_β\) this computes
\(q_i = ∑_{αβ} φ^*_α Q_{iαβ} ψ_β\) if self.sum
is False,
otherwise computes \(q = ∑_{iαβ} φ^*_α Q_{iαβ} ψ_β\). where
\(i\) runs over all sites or hoppings, and
\(α\) and \(β\) run over all the degrees of freedom.
Must have the same length as the number of orbitals
in the system. If only one is provided, both bra
and ket
are taken as equal.
The arguments to pass to the system. Used to evaluate
the onsite
elements and, possibly, the system Hamiltonian.
Deprecated in favor of ‘params’ (and mutually exclusive with it).
Dictionary of parameter names and their values. Mutually exclusive with ‘args’.
check_hermiticity
is True, and ket
is None
,sum=True
,Attributes