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>
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, 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) |
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) |
Correction of current velocities using RATTLE algorithm. | |
|
static |
Apply positional corrections.
particles | particle range |
Definition at line 134 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 213 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 75 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 187 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 |
kernel | kernel function |
Definition at line 107 of file rattle.cpp.
References BondedInteractionsMap::at(), CellStructure::bond_loop(), and bonded_ia_params.
Referenced by correct_position_shake(), and correct_velocity_shake().
void correct_position_shake | ( | CellStructure & | cs, |
BoxGeometry const & | box_geo | ||
) |
Propagate velocity and position while using SHAKE algorithm for bond constraint.
Definition at line 141 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 | ||
) |
Correction of current velocities using RATTLE algorithm.
Definition at line 218 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 58 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 44 of file rattle.cpp.
Referenced by System::System::integrate().