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;
49 auto const n_non_bonded = get_non_bonded_offset(max_type, max_type) + 1ul;
50 constexpr std::size_t n_ext_fields = 1;
51 constexpr std::size_t n_kinetic = 1;
53 auto const n_elements = n_kinetic + n_bonded + 2ul * n_non_bonded +
54 n_coulomb + n_dipolar + n_vs + n_ext_fields;
55 m_data = std::vector<double>(m_chunk_size * n_elements);
58 kinetic = std::span<double>(m_data.data(), m_chunk_size);
59 bonded = std::span<double>(
kinetic.end(), n_bonded * m_chunk_size);
60 coulomb = std::span<double>(
bonded.end(), n_coulomb * m_chunk_size);
61 dipolar = std::span<double>(
coulomb.end(), n_dipolar * m_chunk_size);
64 std::span<double>(
virtual_sites.end(), n_ext_fields * m_chunk_size);