Comprises modules representing operators of special structure (tridiagonal, sparse) over Hilbert spaces of arbitrary arity. More...
Classes | |
class | Sigma |
Stateless class implementing the unary quantumoperator . More... | |
class | Tridiagonal |
Class representing a (unary) tridiagonal matrix or direct product of such matrices. More... | |
class | TridiagonalHamiltonian |
Implements the action of a Hamiltonian whose matrix consists of a sum of tridiagonal matrices. More... | |
Functions | |
template<int RANK, bool IS_HEAD> | |
const quantumdata::Types< RANK-1 >::StateVectorLow | partialProject (const typename quantumdata::Types< RANK >::StateVectorLow &psi, int n) |
Helper for DirectProduct::apply. More... | |
template<int RANK> | |
void | apply (const typename quantumdata::Types< RANK >::StateVectorLow &psi, typename quantumdata::Types< RANK >::StateVectorLow &dpsidt, const Tridiagonal< RANK > &tridiag) |
Comprises modules representing operators of special structure (tridiagonal, sparse) over Hilbert spaces of arbitrary arity.
const quantumdata::Types<RANK-1>::StateVectorLow quantumoperator::partialProject | ( | const typename quantumdata::Types< RANK >::StateVectorLow & | psi, |
int | n | ||
) |
Helper for DirectProduct::apply.
Calculates the state-vector slice
if IS_HEAD=true
and
if IS_HEAD=false
. The code is automatically generated for all template-parameter combinations (RANK
up to BLITZ_ARRAY_LARGEST_RANK) via preprocessor metaprogramming. Cf. quantumoperator/Sigma.cc
~~~
n
into a runtime variable because then we can use complete specializations of this function. Eventually it has to be converted anyway into an index of psi
.