Container on-the-fly

The on-the-fly method is most advanced class and does not has any noticeable memory overhead compared to the other two approaches. The basic idea is already implemented in the State class, see State enumeration with number conservation, and can be understood in the limit of partitioning a system of size L into L parts. While the State class determines the index by calculating combinatorial coefficients on-the-fly the Container class determines all possible coefficients in advance making the approach much faster. They are stored in dimensions.

Data members

std::vector<uint64_t> danceq::internal::ContainerFly::dimensions

Coefficients.

The vector stores all necessary coefficients that might be required during the computation. Maximal size is \(\textbf{L}\cdot\textbf{Q}\cdot(\textbf{n_max}+1)\).

const uint64_t danceq::internal::ContainerFly::L

Length of subsystem.

const uint64_t danceq::internal::ContainerFly::n_max

Maximal number of particles.

std::vector<State> danceq::internal::ContainerFly::maximal_state_per_n

Defines the maximal state per allowed particle number.

Maximal state per allowed particle number \(n_P\in[0,\textbf{n_max}]\) in form of IntType defined by the state class.

std::vector<State> danceq::internal::ContainerFly::minimal_state_per_n

Defines the minimal state per allowed particle number.

Minimal state per allowed particle number \(n_P\in[0,\textbf{n_max}]\) in form of IntType defined by the state class.