ESPResSo
Extensible Simulation Package for Research on Soft Matter Systems
Loading...
Searching...
No Matches
BoxGeometry Class Reference

#include <BoxGeometry.hpp>

Public Member Functions

 BoxGeometry ()
 
 BoxGeometry (BoxGeometry const &rhs)
 
void set_periodic (unsigned coord, bool val)
 Set periodicity for direction.
 
constexpr bool periodic (unsigned coord) const
 Check periodicity in direction.
 
Utils::Vector3d constlength () const
 Box length.
 
Utils::Vector3d constlength_inv () const
 Inverse box length.
 
Utils::Vector3d constlength_half () const
 Half box length.
 
void set_length (Utils::Vector3d const &box_l)
 Set box side lengths.
 
double volume () const
 Box volume.
 
template<typename T >
get_mi_coord (T a, T b, unsigned coord) const
 Get the minimum-image distance between two coordinates.
 
template<typename T >
ESPRESSO_ATTR_ALWAYS_INLINE Utils::Vector3< T > get_mi_vector (Utils::Vector3< T > const &a, Utils::Vector3< T > const &b) const
 Get the minimum-image vector between two coordinates.
 
template<typename T >
ESPRESSO_ATTR_ALWAYS_INLINE Utils::Vector3< T > get_mi_vector (T const &a0, T const &a1, T const &a2, T const &b0, T const &b1, T const &b2) const
 Get the minimum-image vector between two coordinates.
 
BoxType type () const
 
void set_type (BoxType type)
 
LeesEdwardsBC constlees_edwards_bc () const
 
void set_lees_edwards_bc (LeesEdwardsBC bc)
 
void lees_edwards_update (double pos_offset, double shear_velocity)
 Update the Lees-Edwards parameters of the box geometry for the current simulation time.
 
Utils::Vector3d velocity_difference (Utils::Vector3d const &x, Utils::Vector3d const &y, Utils::Vector3d const &u, Utils::Vector3d const &v) const
 Calculate the velocity difference including the Lees-Edwards velocity.
 
void fold_position (Utils::Vector3d &pos, Utils::Vector3i &image_box) const
 Fold coordinates to primary simulation box in-place.
 
auto folded_position (Utils::Vector3d const &pos) const
 Calculate coordinates folded to primary simulation box.
 
auto folded_image_box (Utils::Vector3d const &pos, Utils::Vector3i const &image_box) const
 Calculate image box of coordinates folded to primary simulation box.
 
auto image_shift (Utils::Vector3i const &image_box) const
 Calculate image box shift vector.
 
auto unfolded_position (Utils::Vector3d const &pos, Utils::Vector3i const &image_box) const
 Unfold particle coordinates to image box.
 

Detailed Description

Definition at line 103 of file BoxGeometry.hpp.

Constructor & Destructor Documentation

◆ BoxGeometry() [1/2]

BoxGeometry::BoxGeometry ( )
inline

Definition at line 105 of file BoxGeometry.hpp.

References CUBOID, set_length(), set_periodic(), set_type(), and stream.

◆ BoxGeometry() [2/2]

BoxGeometry::BoxGeometry ( BoxGeometry const rhs)
inline

Definition at line 112 of file BoxGeometry.hpp.

References set_length(), set_periodic(), and stream.

Member Function Documentation

◆ fold_position()

void BoxGeometry::fold_position ( Utils::Vector3d pos,
Utils::Vector3i image_box 
) const
inline

Fold coordinates to primary simulation box in-place.

Lees-Edwards offset is ignored.

Parameters
[in,out]poscoordinates to fold
[in,out]image_boximage box offset

Definition at line 307 of file BoxGeometry.hpp.

References Algorithm::periodic_fold(), and stream.

Referenced by fold_and_reset(), LeesEdwards::Push::operator()(), AtomDecomposition::resort(), serialize_and_reduce(), vs_com_update_particles(), and vs_relative_update_particles().

◆ folded_image_box()

auto BoxGeometry::folded_image_box ( Utils::Vector3d const pos,
Utils::Vector3i const image_box 
) const
inline

Calculate image box of coordinates folded to primary simulation box.

Parameters
[in]poscoordinates
[in]image_boximage box to fold
Returns
Folded image box.

Definition at line 346 of file BoxGeometry.hpp.

References Algorithm::periodic_fold(), and stream.

◆ folded_position()

auto BoxGeometry::folded_position ( Utils::Vector3d const pos) const
inline

Calculate coordinates folded to primary simulation box.

Parameters
[in]poscoordinates to fold
Returns
Folded coordinates.

Definition at line 329 of file BoxGeometry.hpp.

References Algorithm::periodic_fold(), and stream.

Referenced by gather_particle_data(), is_valid_position(), LB::ParticleCoupling::kernel(), and positions_in_halo().

◆ get_mi_coord()

template<typename T >
T BoxGeometry::get_mi_coord ( a,
b,
unsigned  coord 
) const
inline

Get the minimum-image distance between two coordinates.

Parameters
aCoordinate of the terminal point.
bCoordinate of the initial point.
coordDirection
Returns
Shortest distance from b to a across periodic images, i.e. a - b. Can be negative.

Definition at line 198 of file BoxGeometry.hpp.

References coord(), and stream.

Referenced by get_mi_vector(), and get_mi_vector().

◆ get_mi_vector() [1/2]

template<typename T >
ESPRESSO_ATTR_ALWAYS_INLINE Utils::Vector3< T > BoxGeometry::get_mi_vector ( T const a0,
T const a1,
T const a2,
T const b0,
T const b1,
T const b2 
) const
inline

Get the minimum-image vector between two coordinates.

Template Parameters
TFloating point type.
Parameters
a0x element of the terminal point.
a1y element of the terminal point.
a2z element of the terminal point.
b0x element of the initial point.
b1y element of the initial point.
b2z element of the initial point.
Returns
Vector from b to a that minimizes the distance across periodic images, i.e. a - b.

Definition at line 250 of file BoxGeometry.hpp.

References CUBOID, LeesEdwardsBC::distance(), get_mi_coord(), LEES_EDWARDS, lees_edwards_bc(), Algorithm::periodic_fold(), LeesEdwardsBC::shear_plane_normal, stream, and type().

◆ get_mi_vector() [2/2]

◆ image_shift()

auto BoxGeometry::image_shift ( Utils::Vector3i const image_box) const
inline

Calculate image box shift vector.

Definition at line 360 of file BoxGeometry.hpp.

◆ lees_edwards_bc()

◆ lees_edwards_update()

void BoxGeometry::lees_edwards_update ( double  pos_offset,
double  shear_velocity 
)
inline

Update the Lees-Edwards parameters of the box geometry for the current simulation time.

Definition at line 278 of file BoxGeometry.hpp.

References LEES_EDWARDS, LeesEdwardsBC::pos_offset, LeesEdwardsBC::shear_velocity, stream, and type().

Referenced by LeesEdwards::LeesEdwards::update_box_params().

◆ length()

◆ length_half()

Utils::Vector3d const & BoxGeometry::length_half ( ) const
inline

Half box length.

Returns
Return vector of half side-lengths of the box.

Definition at line 171 of file BoxGeometry.hpp.

Referenced by velocity_difference().

◆ length_inv()

Utils::Vector3d const & BoxGeometry::length_inv ( ) const
inline

Inverse box length.

Returns
Return vector of inverse side-lengths of the box.

Definition at line 165 of file BoxGeometry.hpp.

Referenced by add_PQ_force(), dipolar_energy_correction(), dipolar_force_corrections(), prepare_sc_cache(), setup_PoQ(), and setup_PQ().

◆ periodic()

constexpr bool BoxGeometry::periodic ( unsigned  coord) const
inlineconstexpr

Check periodicity in direction.

Parameters
coordDirection to check
Returns
true iff periodic in direction.

Definition at line 150 of file BoxGeometry.hpp.

References coord(), and stream.

Referenced by get_n_cut(), and get_simulation_box().

◆ set_lees_edwards_bc()

void BoxGeometry::set_lees_edwards_bc ( LeesEdwardsBC  bc)
inline

Definition at line 272 of file BoxGeometry.hpp.

References stream.

◆ set_length()

void BoxGeometry::set_length ( Utils::Vector3d const box_l)
inline

Set box side lengths.

Parameters
box_lLength that should be set.

Definition at line 177 of file BoxGeometry.hpp.

References Utils::Vector< T, N >::broadcast(), and stream.

Referenced by BoxGeometry(), and BoxGeometry().

◆ set_periodic()

void BoxGeometry::set_periodic ( unsigned  coord,
bool  val 
)
inline

Set periodicity for direction.

Parameters
coordThe coordinate to set the periodicity for.
valTrue if this direction should be periodic.

Definition at line 142 of file BoxGeometry.hpp.

References coord(), and stream.

Referenced by BoxGeometry(), and BoxGeometry().

◆ set_type()

void BoxGeometry::set_type ( BoxType  type)
inline

Definition at line 269 of file BoxGeometry.hpp.

References type().

Referenced by BoxGeometry().

◆ type()

◆ unfolded_position()

auto BoxGeometry::unfolded_position ( Utils::Vector3d const pos,
Utils::Vector3i const image_box 
) const
inline

Unfold particle coordinates to image box.

Definition at line 365 of file BoxGeometry.hpp.

Referenced by add_oif_global_forces(), OifLocalForcesBond::calc_forces(), calc_oif_mesh(), GatherPos::kernel(), GatherCom::kernel(), and vs_com_update_particles().

◆ velocity_difference()

Utils::Vector3d BoxGeometry::velocity_difference ( Utils::Vector3d const x,
Utils::Vector3d const y,
Utils::Vector3d const u,
Utils::Vector3d const v 
) const
inline

Calculate the velocity difference including the Lees-Edwards velocity.

Definition at line 285 of file BoxGeometry.hpp.

References LEES_EDWARDS, length_half(), LeesEdwardsBC::shear_plane_normal, stream, and type().

Referenced by dpd_pair_force().

◆ volume()

double BoxGeometry::volume ( ) const
inline

Box volume.

Returns
Return the volume of the box.

Definition at line 188 of file BoxGeometry.hpp.

References Utils::product().


The documentation for this class was generated from the following file: