40 : m_data{}, m_chunk_size{chunk_size} {
42 constexpr std::size_t n_coulomb = 2;
43 constexpr std::size_t n_dipolar = 2;
45 constexpr std::size_t n_vs = 1;
47 constexpr std::size_t n_vs = 0;
50 constexpr std::size_t n_dpd = 1;
52 constexpr std::size_t n_dpd = 0;
54 auto const n_non_bonded = get_non_bonded_offset(max_type, max_type) + 1ul;
55 constexpr std::size_t n_ext_fields = 1;
56 constexpr std::size_t n_kinetic_lin = 1;
57 constexpr std::size_t n_kinetic_rot = 1;
59 auto const n_elements = n_kinetic_lin + n_kinetic_rot + n_bonded +
60 2ul * n_non_bonded + n_coulomb + n_dipolar + n_vs +
62 m_data = std::vector<double>(m_chunk_size * n_elements);
65 kinetic_lin = std::span<double>(m_data.data(), m_chunk_size);
68 coulomb = std::span<double>(
bonded.end(), n_coulomb * m_chunk_size);
69 dipolar = std::span<double>(
coulomb.end(), n_dipolar * m_chunk_size);