C++QEDCore  v2 Milestone 10
a framework for simulating open quantum dynamics – core
High-level data structures

The StateVector and DensityOperator classes (and their non-orthogonal counterparts) exist for two main reasons:

  • As interfaces to Types::StateVectorLow and Types::DensityOperatorLow, respectively, which are more convenient to use on higher levels of the framework, e.g. in scripts and in quantum trajectories. This is especially because while blitz::Array uses by-reference copy semantics and expression templates, these classes use the more usual by-value copy semantics and normal semantics for arithmetic operations. This means, however, that copying and arithmetics should be used judiciously, if possible only in the startup phase of simulations.
  • As implementations of the LazyDensityOperator interface.