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.