34#include "system/System.hpp"
49 9ul,
static_cast<std::size_t
>(bonded_ias->get_next_key()),
50 nonbonded_ias->get_max_seen_particle_type());
52 if (long_range_interactions_sanity_checks()) {
60 auto const volume = box_geo->volume();
61 auto const local_parts = cell_structure->local_particles();
74 auto const &
iaparams = *bonded_ias->at(bond_id);
78 auto const &
tensor = result.value();
81 for (std::size_t k = 0
u; k < 3u; k++)
82 for (std::size_t l = 0
u; l < 3u; l++)
94 nonbonded_ias->get_ia_param(
p1.type(),
p2.type());
100 *cell_structure, maximal_cutoff(), bonded_ias->maximal_cutoff());
102#ifdef ESPRESSO_ELECTROSTATICS
107#ifdef ESPRESSO_DIPOLES
109 dipoles.calc_pressure_long_range();
112#ifdef ESPRESSO_VIRTUAL_SITES_RELATIVE
Vector implementation and trait types for boost qvm interoperability.
Data structures for bonded interactions.
std::shared_ptr< Observable_stat > calculate_pressure()
Calculate the pressure from a virial expansion.
DEVICE_QUALIFIER constexpr iterator begin() noexcept
cudaStream_t stream[1]
CUDA streams for parallel computing on CPU and GPU.
const T * get_ptr(std::optional< T > const &opt)
Utils::Vector9d dpd_pressure_local(System::System &system)
Local contribution to the pressure tensor.
Routines to use DPD as thermostat or pair force .
void flatten(Range const &v, OutputIterator out)
Flatten a range of ranges.
Various procedures concerning interactions between particles.
std::optional< Utils::Matrix< double, 3, 3 > > calc_bonded_pressure_tensor(Bonded_IA_Parameters const &iaparams, Particle const &p1, std::span< Particle * > partners, BoxGeometry const &box_geo, Coulomb::ShortRangeForceKernel::kernel_type const *kernel)
void add_kinetic_virials(Particle const &p1, Observable_stat &obs_pressure)
Calculate kinetic pressure (aka energy) for one particle.
void add_non_bonded_pair_virials(Particle const &p1, Particle const &p2, Utils::Vector3d const &d, double dist, IA_parameters const &ia_params, BondedInteractionsMap const &bonded_ias, Dipoles::Solver const &dipoles, Coulomb::ShortRangeForceKernel::kernel_type const *kernel_forces, Coulomb::ShortRangePressureKernel::kernel_type const *kernel_pressure, Observable_stat &obs_pressure)
Calculate non-bonded energies between a pair of particles.
Utils::Matrix< double, 3, 3 > vs_relative_pressure_tensor(CellStructure const &cell_structure)
void short_range_loop(BondKernel bond_kernel, PairKernel pair_kernel, CellStructure &cell_structure, double pair_cutoff, double bond_cutoff, VerletCriterion const &verlet_criterion={})
Distance vector and length handed to pair kernels.
Struct holding all information for one particle.