ESPResSo
Extensible Simulation Package for Research on Soft Matter Systems
|
#include "rattle.hpp"
#include "BoxGeometry.hpp"
#include "Particle.hpp"
#include "ParticleRange.hpp"
#include "bonded_interactions/bonded_interaction_data.hpp"
#include "bonded_interactions/rigid_bond.hpp"
#include "cell_system/CellStructure.hpp"
#include "communication.hpp"
#include "errorhandling.hpp"
#include <boost/mpi/collectives/all_reduce.hpp>
#include <boost/range/algorithm.hpp>
#include <cmath>
#include <functional>
#include <span>
Go to the source code of this file.
Functions | |
void | save_old_position (const ParticleRange &particles, const ParticleRange &ghost_particles) |
copy current position | |
static void | init_correction_vector (const ParticleRange &particles, const ParticleRange &ghost_particles) |
reset correction vectors to zero | |
static bool | calculate_positional_correction (RigidBond const &ia_params, BoxGeometry const &box_geo, Particle &p1, Particle &p2) |
Calculate the positional correction for the particles. | |
template<typename Kernel > | |
static bool | compute_correction_vector (CellStructure &cs, BoxGeometry const &box_geo, BondedInteractionsMap const &bonded_ias, Kernel kernel) |
Compute the correction vectors using given kernel. | |
static void | apply_positional_correction (const ParticleRange &particles) |
Apply positional corrections. | |
void | correct_position_shake (CellStructure &cs, BoxGeometry const &box_geo, BondedInteractionsMap const &bonded_ias) |
Propagate velocity and position while using SHAKE algorithm for bond constraint. | |
static bool | calculate_velocity_correction (RigidBond const &ia_params, BoxGeometry const &box_geo, Particle &p1, Particle &p2) |
Calculate the velocity correction for the particles. | |
static void | apply_velocity_correction (ParticleRange const &particles) |
Apply velocity corrections. | |
void | correct_velocity_shake (CellStructure &cs, BoxGeometry const &box_geo, BondedInteractionsMap const &bonded_ias) |
Correction of current velocities using RATTLE algorithm. | |
|
static |
Apply positional corrections.
particles | particle range |
Definition at line 139 of file rattle.cpp.
References Particle::pos(), Particle::rattle_params(), and Particle::v().
Referenced by correct_position_shake().
|
static |
Apply velocity corrections.
particles | particle range |
Definition at line 219 of file rattle.cpp.
References Particle::rattle_params(), and Particle::v().
Referenced by correct_velocity_shake().
|
static |
Calculate the positional correction for the particles.
ia_params | Parameters |
box_geo | Box geometry. |
p1 | First particle. |
p2 | Second particle. |
Definition at line 79 of file rattle.cpp.
References RigidBond::d2, BoxGeometry::get_mi_vector(), Particle::mass(), RigidBond::p_tol, Particle::pos(), Particle::pos_last_time_step(), and Particle::rattle_params().
Referenced by correct_position_shake().
|
static |
Calculate the velocity correction for the particles.
The position correction is accumulated in the forces of the particles so that it can be reduced over the ghosts.
ia_params | Parameters |
box_geo | Box geometry. |
p1 | First particle. |
p2 | Second particle. |
Definition at line 193 of file rattle.cpp.
References RigidBond::d2, BoxGeometry::get_mi_vector(), Particle::mass(), Particle::pos(), Particle::rattle_params(), Particle::v(), and RigidBond::v_tol.
Referenced by correct_velocity_shake().
|
static |
Compute the correction vectors using given kernel.
cs | cell structure |
box_geo | Box geometry |
bonded_ias | Bonded interactions |
kernel | kernel function |
Definition at line 112 of file rattle.cpp.
References BondedInteractionsMap::at(), and CellStructure::bond_loop().
Referenced by correct_position_shake(), and correct_velocity_shake().
void correct_position_shake | ( | CellStructure & | cs, |
BoxGeometry const & | box_geo, | ||
BondedInteractionsMap const & | bonded_ias | ||
) |
Propagate velocity and position while using SHAKE algorithm for bond constraint.
Definition at line 146 of file rattle.cpp.
References apply_positional_correction(), calculate_positional_correction(), CellStructure::check_resort_required(), comm_cart, compute_correction_vector(), Cells::DATA_PART_MOMENTUM, Cells::DATA_PART_POSITION, Cells::DATA_PART_PROPERTIES, CellStructure::ghost_particles(), CellStructure::ghosts_reduce_rattle_correction(), CellStructure::ghosts_update(), init_correction_vector(), CellStructure::local_particles(), Cells::RESORT_LOCAL, Cells::RESORT_NONE, runtimeErrorMsg, CellStructure::set_resort_particles(), SHAKE_MAX_ITERATIONS, and CellStructure::update_ghosts_and_resort_particle().
Referenced by System::System::integrate().
void correct_velocity_shake | ( | CellStructure & | cs, |
BoxGeometry const & | box_geo, | ||
BondedInteractionsMap const & | bonded_ias | ||
) |
Correction of current velocities using RATTLE algorithm.
Definition at line 224 of file rattle.cpp.
References apply_velocity_correction(), calculate_velocity_correction(), comm_cart, compute_correction_vector(), Cells::DATA_PART_MOMENTUM, Cells::DATA_PART_POSITION, CellStructure::ghost_particles(), CellStructure::ghosts_reduce_rattle_correction(), CellStructure::ghosts_update(), init_correction_vector(), CellStructure::local_particles(), runtimeErrorMsg, and SHAKE_MAX_ITERATIONS.
Referenced by System::System::integrate().
|
static |
reset correction vectors to zero
particles | particle range |
ghost_particles | ghost particle range |
Definition at line 62 of file rattle.cpp.
Referenced by correct_position_shake(), and correct_velocity_shake().
void save_old_position | ( | const ParticleRange & | particles, |
const ParticleRange & | ghost_particles | ||
) |
copy current position
Transfer the current particle positions from Particle::pos to Particle::pos_last_time_step.
particles | particle range |
ghost_particles | ghost particle range |
Definition at line 48 of file rattle.cpp.
Referenced by System::System::integrate().