85class System :
public std::enable_shared_from_this<System> {
93 static std::shared_ptr<System> create();
96 std::shared_ptr<GpuParticleData>
gpu;
104 void set_time_step(
double value);
110 void set_sim_time(
double value);
116 void set_force_cap(
double value);
122 void set_min_global_cut(
double value);
132 void tune_verlet_skin(
double min_skin,
double max_skin,
double tol,
133 int int_steps,
bool adjust_max_skin);
139 void rebuild_cell_structure();
140 void rebuild_aosoa();
143 double maximal_cutoff()
const;
146 double get_interaction_range()
const;
148 unsigned get_global_ghost_flags()
const;
153 bool long_range_interactions_sanity_checks()
const;
156 std::shared_ptr<Observable_stat> calculate_energy();
159 std::shared_ptr<Observable_stat> calculate_pressure();
163 void synchronize_npt_state();
165 void npt_ensemble_init(
bool recalc_forces);
166 void npt_add_virial_contribution(
double energy);
167 bool has_npt_enabled()
const;
172 void calculate_forces();
174#ifdef ESPRESSO_DIPOLE_FIELD_TRACKING
179#ifdef ESPRESSO_COLLISION_DETECTION
180 bool has_collision_detection_enabled()
const;
192 double particle_short_range_energy_contribution(
int pid);
207 std::optional<double> particle_bond_energy(
int pid,
int bond_id,
208 std::vector<int> partners);
242 int integrate(
int n_steps,
int reuse_forces);
244 int integrate_with_signal_handler(
int n_steps,
int reuse_forces,
245 bool update_accumulators);
248 void lb_couple_particles();
263 void on_boxl_change(
bool skip_method_adaption =
false);
264 void on_node_grid_change();
265 void on_periodicity_change();
266 void on_cell_structure_change();
267 void on_thermostat_param_change();
268 void on_temperature_change();
269 void on_verlet_skin_change();
270 void on_timestep_change();
271 void on_integration_start();
272 void on_short_range_ia_change();
273 void on_non_bonded_ia_change();
274 void on_coulomb_change();
275 void on_dipoles_change();
277 void on_constraint_change();
281 void on_lb_boundary_conditions_change();
283 void on_particle_local_change();
285 void on_particle_change();
287 void on_particle_charge_change();
292 void on_observable_calc();
293 void on_lees_edwards_change();
294 void veto_boxl_change(
bool skip_particle_checks =
false)
const;
301 void update_dependent_particles();
305 void update_used_propagations();
309 void check_kT(
double value)
const;
326#ifdef ESPRESSO_COLLISION_DETECTION
331 std::shared_ptr<Accumulators::AutoUpdateAccumulators>
335#ifdef ESPRESSO_STOKESIAN_DYNAMICS
339 std::shared_ptr<NptIsoParameters>
nptiso;
360 void update_local_geo();
361#ifdef ESPRESSO_ELECTROSTATICS
362 void update_icc_particles();
363 bool has_icc_enabled()
const;
365#ifdef ESPRESSO_THERMAL_STONER_WOHLFARTH
366 void integrate_magnetodynamics();
374 void integrator_sanity_checks()
const;
Particle data communication manager for the GPU.