![]() |
ESPResSo
Extensible Simulation Package for Research on Soft Matter Systems
|
Describes a cell structure / cell system. More...
#include <CellStructure.hpp>
Inheritance diagram for CellStructure:
Collaboration diagram for CellStructure:Classes | |
| struct | AoSoA_pack |
Public Types | |
| using | memory_space = Kokkos::HostSpace |
| using | execution_space = Kokkos::DefaultHostExecutionSpace |
| using | ForceType = Kokkos::View< double *[3], Kokkos::LayoutRight, memory_space > |
| using | VirialType = Kokkos::View< double[3], Kokkos::LayoutRight, memory_space > |
| using | ScatterForce = Kokkos::Experimental::ScatterView< double *[3], Kokkos::LayoutRight, memory_space > |
| using | ScatterVirial = Kokkos::Experimental::ScatterView< double[3], Kokkos::LayoutRight, memory_space > |
| using | ListAlgorithm = Cabana::HalfNeighborTag |
| using | ListType = CustomVerletList< memory_space, ListAlgorithm, Cabana::VerletLayout2D, Cabana::TeamVectorOpTag > |
Public Member Functions | |
| CellStructure (BoxGeometry const &box) | |
| virtual | ~CellStructure () |
| void | update_particle_index (int id, Particle *p) |
| Update local particle index. | |
| void | update_particle_index (Particle &p) |
| Update local particle index. | |
| void | update_particle_index (ParticleList &pl) |
| Update local particle index. | |
| void | clear_particle_index () |
| Clear the particles index. | |
| Particle * | get_local_particle (int id) |
| Get a local particle by id. | |
| const Particle * | get_local_particle (int id) const |
| This is an overloaded member function, provided for convenience. It differs from the above function only in what argument(s) it accepts. | |
| template<class InputRange , class OutputIterator > | |
| void | get_local_particles (InputRange ids, OutputIterator out) |
| CellStructureType | decomposition_type () const |
| Utils::Vector3d | max_cutoff () const |
| Maximal cutoff supported by current cell system. | |
| Utils::Vector3d | max_range () const |
| Maximal pair range supported by current cell system. | |
| ParticleRange | local_particles () const |
| ParticleRange | ghost_particles () const |
| std::size_t | count_local_particles () const |
| bool | use_parallel_for_each_local_particle () const |
| whether to use parallel version of for_each_local_particle | |
| void | for_each_local_particle (ParticleCallback auto &&f, bool parallel=true) const |
| Run a kernel on all local particles. | |
| void | for_each_interior_particle (ParticleCallback auto &&f) const |
| Run a kernel on interior (non-boundary) local particles only. | |
| void | for_each_boundary_particle (ParticleCallback auto &&f) const |
| Run a kernel on boundary local particles only. | |
| void | for_each_ghost_particle (ParticleCallback auto &&f) const |
| Run a kernel on all ghost particles. | |
| Particle * | add_particle (Particle &&p) |
| Add a particle. | |
| Particle * | add_local_particle (Particle &&p) |
| Add a particle. | |
| void | remove_particle (int id) |
| Remove a particle. | |
| int | get_max_local_particle_id () const |
| Get the maximal particle id on this node. | |
| int | get_cached_max_local_particle_id () const |
| std::size_t | get_num_local_particles_cached () const |
| int | get_local_pair_bond_numbers () const |
| int | get_local_angle_bond_numbers () const |
| int | get_local_dihedral_bond_numbers () const |
| void | set_local_bond_numbers (int p, int a, int d) |
| void | clear_new_bonds () |
| void | add_new_bond (int bond_id, std::vector< int > const &particle_ids) |
| void | rebuild_bond_list () |
| void | remove_all_particles () |
| Remove all particles from the cell system. | |
| ParticleDecomposition const & | decomposition () const |
| Get the underlying particle decomposition. | |
| void | set_resort_particles (Cells::Resort level) |
Increase the local resort level at least to level. | |
| unsigned | get_resort_particles () const |
| Get the currently scheduled resort level. | |
| void | clear_resort_particles () |
| Set the resort level to sorted. | |
| bool | check_resort_required (Utils::Vector3d const &additional_offset={}) const |
| Check whether a particle has moved further than half the skin since the last Verlet list update, thus requiring a resort. | |
| auto | get_le_pos_offset_at_last_resort () const |
| void | ghosts_count () |
| Synchronize number of ghosts. | |
| void | ghosts_update (unsigned data_parts) |
| Update ghost particles. | |
| void | update_ghosts_and_resort_particle (unsigned data_parts) |
| Update ghost particles, with particle resort if needed. | |
| void | ghosts_reduce_forces () |
| Add forces and torques from ghost particles to real particles. | |
| void | ghosts_reduce_forces_start () |
| Begin the split-phase ghost force reduction (non-blocking). | |
| void | ghosts_reduce_forces_finish () |
| Complete the split-phase ghost force reduction. | |
| bool | has_pending_ghost_reduce () const |
| True when a split-phase force reduction is in flight. | |
| void | ghosts_reduce_dipole_field () |
| Add dipole fields from ghost particles to real particles. | |
| void | ghosts_reset_dipole_fields () |
| Set dipole fields on all ghosts to zero. | |
| void | ghosts_reset_forces () |
| Set forces and torques on all ghosts to zero. | |
| void | ghosts_reduce_rattle_correction () |
| Add rattle corrections from ghost particles to real particles. | |
| void | resort_particles (bool global_flag) |
| Resort particles. | |
| auto | is_verlet_skin_set () const |
| Whether the Verlet skin is set. | |
| auto | get_verlet_skin () const |
| Get the Verlet skin. | |
| void | set_verlet_skin (double value) |
| Set the Verlet skin. | |
| void | set_verlet_skin_heuristic () |
| Set the Verlet skin using a heuristic. | |
| void | update_verlet_stats (int n_steps, int n_verlet_updates) |
| auto | get_verlet_reuse () const |
| Average number of integration steps the Verlet list was re-used. | |
| auto | resolve_bond_partners (std::span< const int > partner_ids) |
| Resolve ids to particles. | |
| void | set_atom_decomposition () |
| Set the particle decomposition to AtomDecomposition. | |
| void | set_regular_decomposition (double range, std::optional< std::pair< int, int > > fully_connected_boundary) |
| Set the particle decomposition to RegularDecomposition. | |
| void | set_hybrid_decomposition (double cutoff_regular, std::set< int > n_square_types) |
| Set the particle decomposition to HybridDecomposition. | |
| auto | get_max_id () const |
| void | set_kokkos_handle (std::shared_ptr< KokkosHandle > handle) |
| void | rebuild_local_properties (double pair_cutoff) |
| void | reset_local_properties () |
| void | reset_local_force_buffers () |
| Zero the local force view and its scatter replicas. | |
| auto & | get_id_to_index () |
| auto & | get_local_force () |
| auto | get_scatter_force () |
| auto & | get_local_torque () |
| auto | get_scatter_torque () |
| void | mark_torque_replicas_dirty () |
| Declare that a kernel scattering into the torque view is about to run. | |
| auto | torque_replicas_dirty () const |
| auto & | get_local_dip_fld () |
| auto | get_scatter_dip_fld () |
| void | mark_dip_fld_replicas_dirty () |
| auto | dip_fld_replicas_dirty () const |
| auto & | get_local_virial () |
| auto | get_scatter_virial () |
| void | mark_virial_replicas_dirty () |
| auto | virial_replicas_dirty () const |
| auto & | get_aosoa () |
| auto const & | get_aosoa () const |
| auto const & | get_unique_particles () const |
| auto const & | get_verlet_list_cabana () const |
| auto & | bond_state () |
| auto const & | bond_state () const |
| void | clear_local_properties () |
| void | clear_bond_properties () |
| auto | is_verlet_list_cabana_rebuild_needed () const |
| void | update_bond_storage (int &pair_count, int &angle_count, int &dihedral_count, Particle const &p) |
| Update bond storage(m_*_bond_list_kokkos and m_*_bond_id_kokkos). | |
| auto | prepare_verlet_list_cabana (double cutoff) |
| Reset local properties of the Verlet list. | |
| void | rebuild_verlet_list_cabana (auto &&kernel, bool rebuild_verlet_list) |
| void | set_index_map () |
| void | cell_list_loop (auto &&kernel) |
| template<class BondKernel > | |
| void | bond_loop (BondKernel const &bond_kernel) |
| Bonded pair loop. | |
| template<class PairKernel > | |
| void | non_bonded_loop (PairKernel pair_kernel) |
| Non-bonded pair loop. | |
| template<class PairKernel , class VerletCriterion > | |
| void | non_bonded_loop (PairKernel pair_kernel, const VerletCriterion &verlet_criterion) |
| Non-bonded pair loop with potential use of verlet lists. | |
| void | check_particle_index () const |
| Check that particle index is commensurate with particles. | |
| void | check_particle_sorting () const |
| Check that particles are in the correct cell. | |
| Cell * | find_current_cell (const Particle &p) |
| Find cell a particle is stored in. | |
| template<class Kernel > | |
| bool | run_on_particle_short_range_neighbors (Particle const &p, Kernel &kernel) |
| Run kernel on all particles inside local cell and its neighbors. | |
Public Member Functions inherited from System::Leaf< CellStructure > | |
| void | bind_system (std::shared_ptr< System > const &system) |
| void | detach_system (std::shared_ptr< System > const &system) |
Public Attributes | |
| bool | use_verlet_list = true |
Static Public Attributes | |
| static constexpr auto | vector_length = 1 |
Additional Inherited Members | |
Protected Member Functions inherited from System::Leaf< CellStructure > | |
| auto & | get_system () |
| auto & | get_system () const |
Protected Attributes inherited from System::Leaf< CellStructure > | |
| std::weak_ptr< System > | m_system |
Describes a cell structure / cell system.
Contains information about the communication of cell contents (particles, ghosts, ...) between different nodes and the relation between particle positions and the cell system. All other properties of the cell system which are not common between different cell systems have to be stored in separate structures.
Definition at line 164 of file CellStructure.hpp.
| using CellStructure::execution_space = Kokkos::DefaultHostExecutionSpace |
Definition at line 168 of file CellStructure.hpp.
| using CellStructure::ForceType = Kokkos::View<double *[3], Kokkos::LayoutRight, memory_space> |
Definition at line 170 of file CellStructure.hpp.
| using CellStructure::ListAlgorithm = Cabana::HalfNeighborTag |
Definition at line 179 of file CellStructure.hpp.
| using CellStructure::ListType = CustomVerletList<memory_space, ListAlgorithm, Cabana::VerletLayout2D, Cabana::TeamVectorOpTag> |
Definition at line 180 of file CellStructure.hpp.
| using CellStructure::memory_space = Kokkos::HostSpace |
Definition at line 167 of file CellStructure.hpp.
| using CellStructure::ScatterForce = Kokkos::Experimental::ScatterView<double *[3], Kokkos::LayoutRight, memory_space> |
Definition at line 173 of file CellStructure.hpp.
| using CellStructure::ScatterVirial = Kokkos::Experimental::ScatterView<double[3], Kokkos::LayoutRight, memory_space> |
Definition at line 176 of file CellStructure.hpp.
| using CellStructure::VirialType = Kokkos::View<double[3], Kokkos::LayoutRight, memory_space> |
Definition at line 172 of file CellStructure.hpp.
| CellStructure::CellStructure | ( | BoxGeometry const & | box | ) |
Definition at line 392 of file CellStructure.cpp.
|
virtual |
Definition at line 77 of file CellStructure.cpp.
References clear_local_properties().
Add a particle.
Moves a particle into the cell system, if it belongs to this node. Otherwise this does not have an effect and the particle is discarded. This can be used to add a particle without knowledge where it should be placed by calling the function on all nodes, it will then add the particle in exactly one place.
| p | Particle to add. |
Definition at line 465 of file CellStructure.cpp.
| void CellStructure::add_new_bond | ( | int | bond_id, |
| std::vector< int > const & | particle_ids | ||
| ) |
Definition at line 511 of file CellStructure.cpp.
References get_id_to_index().
Add a particle.
Moves a particle into the cell system. This adds a particle to the local node, irrespective of where it belongs.
| p | Particle to add. |
Definition at line 475 of file CellStructure.cpp.
References decomposition(), ParticleDecomposition::local_cells(), Cells::RESORT_GLOBAL, Cells::RESORT_LOCAL, and set_resort_particles().
Referenced by Mpiio::mpi_mpiio_common_read(), and CollisionDetection::place_vs_and_relate_to_particle().
|
inline |
Bonded pair loop.
| bond_kernel | Kernel to apply |
Definition at line 1022 of file CellStructure.hpp.
References local_particles().
Referenced by add_oif_global_forces(), calc_oif_mesh(), and compute_correction_vector().
|
inline |
Definition at line 914 of file CellStructure.hpp.
|
inline |
Definition at line 915 of file CellStructure.hpp.
|
inline |
Definition at line 963 of file CellStructure.hpp.
| void CellStructure::check_particle_index | ( | ) | const |
Check that particle index is commensurate with particles.
For each local particles is checked that has a correct entry in the particles index, and that there are no excess (non-existing) particles in the index.
Definition at line 395 of file CellStructure.cpp.
References get_local_particle(), get_max_local_particle_id(), Particle::id(), and local_particles().
Referenced by resort_particles().
| void CellStructure::check_particle_sorting | ( | ) | const |
Check that particles are in the correct cell.
This checks for all local particles that the result of particles_to_cell is the cell the particles is actually in, e.g. that the particles are sorted according to particles_to_cell.
Definition at line 428 of file CellStructure.cpp.
References decomposition(), and ParticleDecomposition::local_cells().
Referenced by resort_particles().
| bool CellStructure::check_resort_required | ( | Utils::Vector3d const & | additional_offset = {} | ) | const |
Check whether a particle has moved further than half the skin since the last Verlet list update, thus requiring a resort.
| additional_offset | Offset which is added to the distance the particle has travelled when comparing to half the Verlet skin (e.g., for Lees-Edwards BC). |
Definition at line 792 of file CellStructure.cpp.
References Utils::Vector< T, N >::norm2(), and Utils::sqr().
Referenced by correct_position_shake(), and vs_relative_update_particles().
| void CellStructure::clear_bond_properties | ( | ) |
Definition at line 107 of file CellStructure.cpp.
Referenced by remove_all_particles().
| void CellStructure::clear_local_properties | ( | ) |
Definition at line 86 of file CellStructure.cpp.
Referenced by ~CellStructure().
| void CellStructure::clear_new_bonds | ( | ) |
Definition at line 510 of file CellStructure.cpp.
|
inline |
Clear the particles index.
Definition at line 322 of file CellStructure.hpp.
|
inline |
Set the resort level to sorted.
Definition at line 615 of file CellStructure.hpp.
References Cells::RESORT_NONE.
Referenced by update_ghosts_and_resort_particle().
|
inline |
Definition at line 396 of file CellStructure.hpp.
Referenced by anonymous_namespace{p3m.impl.definitions.hpp}::AssignForces< cao >::operator()(), and set_index_map().
|
inline |
Get the underlying particle decomposition.
Should be used solely for informative purposes.
Definition at line 589 of file CellStructure.hpp.
Referenced by add_particle(), check_particle_sorting(), enumerate_local_particles(), for_each_boundary_particle(), for_each_interior_particle(), for_each_local_particle(), ghost_particles(), ghosts_count(), ghosts_reduce_dipole_field(), ghosts_reduce_forces(), ghosts_reduce_forces_start(), ghosts_reduce_rattle_correction(), ghosts_update(), local_particles(), max_cutoff(), max_range(), reduce_over_local_particles(), remove_all_particles(), remove_particle(), and run_on_particle_short_range_neighbors().
|
inline |
Definition at line 380 of file CellStructure.hpp.
|
inline |
Definition at line 901 of file CellStructure.hpp.
Find cell a particle is stored in.
For local particles, this returns the cell they are stored in, otherwise nullptr is returned.
| p | Particle to find cell for |
Definition at line 1080 of file CellStructure.hpp.
References get_resort_particles(), and Particle::is_ghost().
Referenced by run_on_particle_short_range_neighbors().
|
inline |
Run a kernel on boundary local particles only.
Complement of for_each_interior_particle: visits particles in cells where Cell::is_boundary returns true. Uses the same Kokkos parallelization structure as for_each_local_particle.
The kernel is assumed to be thread-safe.
Definition at line 462 of file CellStructure.hpp.
References decomposition(), ParticleDecomposition::local_cells(), and use_parallel_for_each_local_particle().
Referenced by integrator_step_2_filtered().
|
inline |
Run a kernel on all ghost particles.
The kernel is assumed to be thread-safe.
Definition at line 486 of file CellStructure.hpp.
References ghost_particles().
Referenced by force_calc_icc(), ghosts_reset_dipole_fields(), and ghosts_reset_forces().
|
inline |
Run a kernel on interior (non-boundary) local particles only.
A cell is interior iff none of its neighbors is a ghost cell (Cell::is_boundary returns false). This filtered variant uses the same Kokkos parallelization as for_each_local_particle — it builds a filtered cell list and delegates to parallel_for_each_particle_impl so that thread-level behavior is identical to the unfiltered path.
The kernel is assumed to be thread-safe.
Definition at line 433 of file CellStructure.hpp.
References decomposition(), ParticleDecomposition::local_cells(), and use_parallel_for_each_local_particle().
Referenced by integrator_step_2_filtered().
|
inline |
Run a kernel on all local particles.
The kernel is assumed to be thread-safe.
Definition at line 411 of file CellStructure.hpp.
References decomposition(), local_particles(), and use_parallel_for_each_local_particle().
Referenced by force_calc_icc(), force_capping(), get_pid_for_vs_com(), integrator_step_1(), integrator_step_2(), reinit_dip_fld(), vs_com_back_transfer_forces_and_torques(), vs_com_update_particles(), vs_relative_back_transfer_forces_and_torques(), and vs_relative_update_particles().
|
inline |
Definition at line 910 of file CellStructure.hpp.
Referenced by anonymous_namespace{p3m.impl.definitions.hpp}::AssignForces< cao >::operator()(), reset_local_properties(), update_aosoa_charges(), and update_cabana_state().
|
inline |
Definition at line 911 of file CellStructure.hpp.
|
inline |
Definition at line 557 of file CellStructure.hpp.
Referenced by rebuild_local_properties(), and update_cabana_state().
|
inline |
Definition at line 884 of file CellStructure.hpp.
Referenced by add_new_bond(), rebuild_local_properties(), and update_cabana_state().
|
inline |
Definition at line 628 of file CellStructure.hpp.
| int CellStructure::get_local_angle_bond_numbers | ( | ) | const |
Definition at line 499 of file CellStructure.cpp.
| int CellStructure::get_local_dihedral_bond_numbers | ( | ) | const |
Definition at line 502 of file CellStructure.cpp.
|
inline |
Definition at line 898 of file CellStructure.hpp.
Referenced by rebuild_local_properties().
|
inline |
Definition at line 885 of file CellStructure.hpp.
Referenced by rebuild_local_properties(), and reset_local_force_buffers().
| int CellStructure::get_local_pair_bond_numbers | ( | ) | const |
Definition at line 496 of file CellStructure.cpp.
|
inline |
Get a local particle by id.
| id | Particle to get. |
Definition at line 355 of file CellStructure.hpp.
Referenced by BondBreakage::actions_for_breakage(), check_particle_index(), ScriptInterface::Analysis::check_topology(), GatherParticleTraits< T >::fetch(), get_ibm_particle_position(), get_local_particles(), CollisionDetection::get_part(), ScriptInterface::Particles::get_particles_properties(), ScriptInterface::Particles::get_real_particle(), get_reference_particle(), ScriptInterface::Particles::local_add_exclusion(), ScriptInterface::Particles::local_remove_exclusion(), BondBreakage::execute::operator()(), BondBreakage::execute::operator()(), BondBreakage::execute::operator()(), set_index_map(), ScriptInterface::Particles::set_particles_bonds(), ScriptInterface::Particles::set_particles_charges(), ScriptInterface::Particles::set_particles_exclusions(), ScriptInterface::Particles::set_particles_types(), update_ghosts_and_resort_particle(), vs_com_update_particles(), and vs_relative_pressure_tensor().
|
inline |
This is an overloaded member function, provided for convenience. It differs from the above function only in what argument(s) it accepts.
Definition at line 365 of file CellStructure.hpp.
|
inline |
Definition at line 375 of file CellStructure.hpp.
References get_local_particle().
Referenced by resolve_bond_partners().
|
inline |
Definition at line 888 of file CellStructure.hpp.
Referenced by rebuild_local_properties().
|
inline |
Definition at line 904 of file CellStructure.hpp.
|
inline |
Definition at line 876 of file CellStructure.hpp.
| int CellStructure::get_max_local_particle_id | ( | ) | const |
Get the maximal particle id on this node.
This returns the highest particle id on this node, or -1 if there are no particles on this node.
Definition at line 489 of file CellStructure.cpp.
Referenced by check_particle_index().
|
inline |
Definition at line 560 of file CellStructure.hpp.
Referenced by rebuild_local_properties().
|
inline |
Get the currently scheduled resort level.
Definition at line 610 of file CellStructure.hpp.
Referenced by find_current_cell().
|
inline |
Definition at line 899 of file CellStructure.hpp.
Referenced by anonymous_namespace{dp3m_heffte.impl.hpp}::AssignTorques< cao >::operator()().
|
inline |
Definition at line 886 of file CellStructure.hpp.
Referenced by anonymous_namespace{dp3m_heffte.impl.hpp}::AssignForcesDip< cao >::operator()(), and anonymous_namespace{p3m.impl.definitions.hpp}::AssignForces< cao >::operator()().
|
inline |
Definition at line 889 of file CellStructure.hpp.
Referenced by anonymous_namespace{dp3m_heffte.impl.hpp}::AssignTorques< cao >::operator()().
|
inline |
Definition at line 905 of file CellStructure.hpp.
|
inline |
Definition at line 912 of file CellStructure.hpp.
Referenced by anonymous_namespace{dp3m_heffte.impl.hpp}::AssignTorques< cao >::operator()(), anonymous_namespace{dp3m_heffte.impl.hpp}::AssignForcesDip< cao >::operator()(), rebuild_local_properties(), update_aosoa_charges(), and update_cabana_state().
|
inline |
Definition at line 913 of file CellStructure.hpp.
|
inline |
Average number of integration steps the Verlet list was re-used.
Definition at line 739 of file CellStructure.hpp.
|
inline |
Get the Verlet skin.
Definition at line 722 of file CellStructure.hpp.
Referenced by lb_tracers_propagate().
|
inline |
Definition at line 392 of file CellStructure.hpp.
References decomposition(), and Cells::particles().
Referenced by correct_position_shake(), correct_velocity_shake(), for_each_ghost_particle(), lb_tracers_add_particle_force_to_fluid(), set_index_map(), and update_ghosts_and_resort_particle().
| void CellStructure::ghosts_count | ( | ) |
Synchronize number of ghosts.
Definition at line 554 of file CellStructure.cpp.
References decomposition(), ESPRESSO_CALI_MARK_FUNCTION, System::Leaf< CellStructure >::get_system(), GHOSTTRANS_PARTNUM, GhostComm::halo_exchange(), GhostComm::Overwrite, and GhostComm::Push.
Referenced by update_ghosts_and_resort_particle().
| void CellStructure::ghosts_reduce_dipole_field | ( | ) |
Add dipole fields from ghost particles to real particles.
Definition at line 639 of file CellStructure.cpp.
References GhostComm::Add, decomposition(), System::Leaf< CellStructure >::get_system(), GHOSTTRANS_DIPFLD, GhostComm::halo_exchange(), and GhostComm::Reduce.
| void CellStructure::ghosts_reduce_forces | ( | ) |
Add forces and torques from ghost particles to real particles.
Definition at line 575 of file CellStructure.cpp.
References GhostComm::Add, decomposition(), ESPRESSO_CALI_MARK_FUNCTION, System::Leaf< CellStructure >::get_system(), GhostComm::halo_exchange(), and GhostComm::Reduce.
Referenced by vs_com_back_transfer_forces_and_torques(), and vs_relative_back_transfer_forces_and_torques().
| void CellStructure::ghosts_reduce_forces_finish | ( | ) |
Complete the split-phase ghost force reduction.
Waits for all outstanding MPI requests and unpacks/reduces force data into real particles. Clears the pending state afterwards.
Must be called exactly once after ghosts_reduce_forces_start.
Definition at line 614 of file CellStructure.cpp.
References ghost_reduce_async_attr(), and GhostComm::halo_exchange_finish().
Referenced by System::System::integrate().
| void CellStructure::ghosts_reduce_forces_start | ( | ) |
Begin the split-phase ghost force reduction (non-blocking).
Posts all MPI sends/receives for the force reduction and returns immediately. The caller must later call ghosts_reduce_forces_finish. Asserts that no reduction is already in flight.
Only meaningful when comm_cart.size() > 1. At one rank the blocking ghosts_reduce_forces must be used instead (the reduction is then a pure local copy with nothing to hide).
Definition at line 598 of file CellStructure.cpp.
References GhostComm::Add, decomposition(), System::Leaf< CellStructure >::get_system(), ghost_reduce_async_attr(), GhostComm::halo_exchange_start(), and GhostComm::Reduce.
| void CellStructure::ghosts_reduce_rattle_correction | ( | ) |
Add rattle corrections from ghost particles to real particles.
Definition at line 646 of file CellStructure.cpp.
References GhostComm::Add, decomposition(), ESPRESSO_CALI_MARK_FUNCTION, System::Leaf< CellStructure >::get_system(), GHOSTTRANS_RATTLE, GhostComm::halo_exchange(), and GhostComm::Reduce.
Referenced by correct_position_shake(), and correct_velocity_shake().
|
inline |
Set dipole fields on all ghosts to zero.
Definition at line 696 of file CellStructure.hpp.
References Particle::dip_fld(), and for_each_ghost_particle().
|
inline |
Set forces and torques on all ghosts to zero.
Definition at line 702 of file CellStructure.hpp.
References for_each_ghost_particle(), and Particle::force_and_torque().
Referenced by lb_tracers_add_particle_force_to_fluid(), vs_com_back_transfer_forces_and_torques(), and vs_relative_back_transfer_forces_and_torques().
| void CellStructure::ghosts_update | ( | unsigned | data_parts | ) |
Update ghost particles.
Update ghost particles with data from the real particles.
| data_parts | Particle parts to update, combination of Cells::DataPart |
Definition at line 564 of file CellStructure.cpp.
References decomposition(), ESPRESSO_CALI_MARK_FUNCTION, System::Leaf< CellStructure >::get_system(), GhostComm::halo_exchange(), map_data_parts(), GhostComm::Overwrite, and GhostComm::Push.
Referenced by correct_position_shake(), correct_velocity_shake(), update_ghosts_and_resort_particle(), vs_com_update_particles(), and vs_relative_update_particles().
|
inline |
True when a split-phase force reduction is in flight.
Definition at line 687 of file CellStructure.hpp.
Referenced by System::System::integrate().
|
inline |
Definition at line 919 of file CellStructure.hpp.
Referenced by prepare_verlet_list_cabana(), and rebuild_verlet_list_cabana().
|
inline |
Whether the Verlet skin is set.
Definition at line 719 of file CellStructure.hpp.
Referenced by set_verlet_skin_heuristic().
|
inline |
Definition at line 388 of file CellStructure.hpp.
References decomposition(), and Cells::particles().
Referenced by bond_loop(), check_particle_index(), correct_position_shake(), correct_velocity_shake(), enumerate_local_particles(), for_each_local_particle(), integrator_step_1(), integrator_step_2(), lb_tracers_add_particle_force_to_fluid(), lb_tracers_propagate(), SteepestDescent::propagate(), ScriptInterface::System::rotate_system(), and vs_relative_pressure_tensor().
|
inline |
Definition at line 900 of file CellStructure.hpp.
|
inline |
Declare that a kernel scattering into the torque view is about to run.
Must be called before the torque replicas are reduced via the force loop dispatch.
Definition at line 894 of file CellStructure.hpp.
Referenced by anonymous_namespace{dp3m_heffte.impl.hpp}::AssignTorques< cao >::operator()().
|
inline |
Definition at line 906 of file CellStructure.hpp.
|
inline |
Maximal cutoff supported by current cell system.
Definition at line 383 of file CellStructure.hpp.
References decomposition(), and ParticleDecomposition::max_cutoff().
Referenced by set_verlet_skin_heuristic().
|
inline |
Maximal pair range supported by current cell system.
Definition at line 386 of file CellStructure.hpp.
References decomposition(), and ParticleDecomposition::max_range().
Referenced by set_verlet_skin_heuristic().
|
inline |
Non-bonded pair loop.
| pair_kernel | Kernel to apply |
Definition at line 1031 of file CellStructure.hpp.
Referenced by force_calc_icc().
|
inline |
Non-bonded pair loop with potential use of verlet lists.
| pair_kernel | Kernel to apply |
| verlet_criterion | Filter for verlet lists. |
Definition at line 1041 of file CellStructure.hpp.
References use_verlet_list.
|
inline |
Reset local properties of the Verlet list.
| cutoff | Pair interaction cutoff. |
Definition at line 938 of file CellStructure.hpp.
References is_verlet_list_cabana_rebuild_needed(), rebuild_local_properties(), reset_local_properties(), and set_index_map().
Referenced by update_cabana_state().
| void CellStructure::rebuild_bond_list | ( | ) |
Definition at line 515 of file CellStructure.cpp.
| void CellStructure::rebuild_local_properties | ( | double | pair_cutoff | ) |
Definition at line 144 of file CellStructure.cpp.
References ESPRESSO_CALI_MARK_FUNCTION, estimate_max_counts(), get_cached_max_local_particle_id(), get_id_to_index(), get_local_dip_fld(), get_local_force(), get_local_torque(), get_num_local_particles_cached(), System::Leaf< CellStructure >::get_system(), get_unique_particles(), kokkos_deep_copy(), and reset_local_force_buffers().
Referenced by prepare_verlet_list_cabana().
|
inline |
Definition at line 952 of file CellStructure.hpp.
References is_verlet_list_cabana_rebuild_needed().
| void CellStructure::remove_all_particles | ( | ) |
Remove all particles from the cell system.
This allows linear time removal of all particles from the system, removing each particle individually would be quadratic.
Definition at line 518 of file CellStructure.cpp.
References clear_bond_properties(), clear_particle_node(), decomposition(), System::Leaf< CellStructure >::get_system(), and ParticleDecomposition::local_cells().
Referenced by Mpiio::mpi_mpiio_common_read().
| void CellStructure::remove_particle | ( | int | id | ) |
Remove a particle.
Removes a particle and all bonds pointing to it. This is a collective call.
| id | Id of particle to remove. |
Definition at line 439 of file CellStructure.cpp.
References Utils::contains(), decomposition(), ParticleDecomposition::local_cells(), and update_particle_index().
| void CellStructure::reset_local_force_buffers | ( | ) |
Zero the local force view and its scatter replicas.
Definition at line 237 of file CellStructure.cpp.
References get_local_force(), and kokkos_deep_copy().
Referenced by force_calc_icc(), rebuild_local_properties(), and reset_local_properties().
| void CellStructure::reset_local_properties | ( | ) |
Definition at line 272 of file CellStructure.cpp.
References ESPRESSO_CALI_MARK_FUNCTION, get_aosoa(), kokkos_deep_copy(), and reset_local_force_buffers().
Referenced by prepare_verlet_list_cabana().
|
inline |
Resolve ids to particles.
| BondResolutionError | if one of the ids was not found. |
| partner_ids | Ids to resolve. |
Definition at line 750 of file CellStructure.hpp.
References get_local_particles().
Referenced by update_bond_storage().
| void CellStructure::resort_particles | ( | bool | global_flag | ) |
Resort particles.
Definition at line 670 of file CellStructure.cpp.
References check_particle_index(), check_particle_sorting(), ESPRESSO_CALI_MARK_FUNCTION, and System::Leaf< CellStructure >::get_system().
Referenced by update_ghosts_and_resort_particle().
|
inline |
Run kernel on all particles inside local cell and its neighbors.
| p | Particle to find cell for |
| kernel | Function with signature double(Particle const&,
Particle const&, Utils::Vector3d const&) |
Definition at line 1099 of file CellStructure.hpp.
References ParticleDecomposition::box(), decomposition(), find_current_cell(), and ParticleDecomposition::minimum_image_distance().
| void CellStructure::set_atom_decomposition | ( | ) |
Set the particle decomposition to AtomDecomposition.
Definition at line 698 of file CellStructure.cpp.
References comm_cart, System::Leaf< CellStructure >::get_system(), and NSQUARE.
| void CellStructure::set_hybrid_decomposition | ( | double | cutoff_regular, |
| std::set< int > | n_square_types | ||
| ) |
Set the particle decomposition to HybridDecomposition.
| cutoff_regular | Interaction cutoff_regular. |
| n_square_types | Particle types to put into n_square decomposition. |
Definition at line 721 of file CellStructure.cpp.
References comm_cart, System::Leaf< CellStructure >::get_system(), and HYBRID.
| void CellStructure::set_index_map | ( | ) |
Definition at line 321 of file CellStructure.cpp.
References Particle::bonds(), count_local_particles(), enumerate_local_particles(), ESPRESSO_CALI_MARK_FUNCTION, get_local_particle(), ghost_particles(), Particle::id(), and set_local_bond_numbers().
Referenced by prepare_verlet_list_cabana().
| void CellStructure::set_kokkos_handle | ( | std::shared_ptr< KokkosHandle > | handle | ) |
Definition at line 109 of file CellStructure.cpp.
| void CellStructure::set_local_bond_numbers | ( | int | p, |
| int | a, | ||
| int | d | ||
| ) |
Definition at line 505 of file CellStructure.cpp.
Referenced by set_index_map().
| void CellStructure::set_regular_decomposition | ( | double | range, |
| std::optional< std::pair< int, int > > | fully_connected_boundary | ||
| ) |
Set the particle decomposition to RegularDecomposition.
| range | Interaction range. |
| fully_connected_boundary | neighbor cell directions for Lees-Edwards. |
Definition at line 709 of file CellStructure.cpp.
References comm_cart, System::Leaf< CellStructure >::get_system(), and REGULAR.
|
inline |
Increase the local resort level at least to level.
Definition at line 602 of file CellStructure.hpp.
Referenced by add_particle(), correct_position_shake(), lb_tracers_propagate(), SteepestDescent::propagate(), ScriptInterface::System::rotate_system(), and vs_relative_update_particles().
| void CellStructure::set_verlet_skin | ( | double | value | ) |
Set the Verlet skin.
Definition at line 735 of file CellStructure.cpp.
References System::Leaf< CellStructure >::get_system().
Referenced by set_verlet_skin_heuristic().
| void CellStructure::set_verlet_skin_heuristic | ( | ) |
Set the Verlet skin using a heuristic.
Definition at line 743 of file CellStructure.cpp.
References System::Leaf< CellStructure >::get_system(), is_verlet_skin_set(), max_cutoff(), max_range(), and set_verlet_skin().
|
inline |
Definition at line 895 of file CellStructure.hpp.
| void CellStructure::update_bond_storage | ( | int & | pair_count, |
| int & | angle_count, | ||
| int & | dihedral_count, | ||
| Particle const & | p | ||
| ) |
Update bond storage(m_*_bond_list_kokkos and m_*_bond_id_kokkos).
| pair_count | Index for pair bond storage. |
| angle_count | Index for angle bond storage. |
| dihedral_count | Index for dihedral bond storage. |
| p | Particle pointer. |
Definition at line 283 of file CellStructure.cpp.
References bond_resolution_error(), Particle::bonds(), Particle::id(), and resolve_bond_partners().
| void CellStructure::update_ghosts_and_resort_particle | ( | unsigned | data_parts | ) |
Update ghost particles, with particle resort if needed.
Update ghost particles with data from the real particles. Resort particles if a resort is due.
| data_parts | Particle parts to update, combination of Cells::DataPart |
Definition at line 757 of file CellStructure.cpp.
References clear_resort_particles(), comm_cart, Cells::DATA_PART_BONDS, Cells::DATA_PART_PROPERTIES, ESPRESSO_CALI_MARK_FUNCTION, get_local_particle(), ghost_particles(), ghosts_count(), ghosts_update(), Cells::RESORT_GLOBAL, Cells::RESORT_NONE, resort_particles(), and update_particle_index().
Referenced by correct_position_shake(), lb_tracers_add_particle_force_to_fluid(), and ScriptInterface::System::rotate_system().
|
inline |
Update local particle index.
Update the entry for a particle in the local particle index.
| id | Entry to update. |
| p | Pointer to the particle. |
Definition at line 285 of file CellStructure.hpp.
References Particle::id().
Referenced by anonymous_namespace{CellStructure.cpp}::UpdateParticleIndexVisitor::operator()(), anonymous_namespace{CellStructure.cpp}::UpdateParticleIndexVisitor::operator()(), remove_particle(), update_ghosts_and_resort_particle(), update_particle_index(), and update_particle_index().
|
inline |
Update local particle index.
Update the entry for a particle in the local particle index.
| p | Pointer to the particle. |
Definition at line 304 of file CellStructure.hpp.
References Particle::id(), and update_particle_index().
|
inline |
Update local particle index.
| pl | List of particles whose index entries should be updated. |
Definition at line 313 of file CellStructure.hpp.
References update_particle_index().
|
inline |
Definition at line 730 of file CellStructure.hpp.
|
inline |
whether to use parallel version of for_each_local_particle
Definition at line 405 of file CellStructure.hpp.
Referenced by enumerate_local_particles(), for_each_boundary_particle(), for_each_interior_particle(), and for_each_local_particle().
|
inline |
Definition at line 907 of file CellStructure.hpp.
| bool CellStructure::use_verlet_list = true |
Definition at line 274 of file CellStructure.hpp.
Referenced by non_bonded_loop().
|
staticconstexpr |
Definition at line 166 of file CellStructure.hpp.