Public Member Functions | Private Types | Private Member Functions | Private Attributes | List of all members
PLMD::Pbc Class Reference

#include <Pbc.h>

Public Member Functions

 Pbc ()
 Constructor. More...
 
double distance (const bool pbc, const Vector &v1, const Vector &v2) const
 Compute modulo of (v2-v1), using or not pbc depending on bool pbc. More...
 
Vector distance (const Vector &v1, const Vector &v2) const
 Computes v2-v1, using minimal image convention. More...
 
Vector distance (const Vector &, const Vector &, int *nshifts) const
 version of distance which also returns the number of attempted shifts More...
 
void apply (std::vector< Vector > &dlist, unsigned max_index=0) const
 Apply PBC to a set of positions or distance vectors. More...
 
void setBox (const Tensor &b)
 Set the lattice vectors. More...
 
const TensorgetBox () const
 Returns the box. More...
 
const TensorgetInvBox () const
 Returns the inverse matrix of box. More...
 
Vector realToScaled (const Vector &) const
 Transform a vector in real space to a vector in scaled coordinates. More...
 
Vector scaledToReal (const Vector &) const
 Transform a vector in scaled coordinates to a vector in real space. More...
 
bool isOrthorombic () const
 Returns true if the box vectors are orthogonal. More...
 
void fullSearch (Vector &) const
 Full search (for testing). More...
 
bool isSet () const
 Returns true if box is set and non zero. More...
 

Private Types

enum  { unset, orthorombic, generic }
 Type of box. More...
 

Private Member Functions

void buildShifts (std::vector< Vector > shifts[2][2][2]) const
 Build list of shifts. More...
 

Private Attributes

enum PLMD::Pbc:: { ... }  type
 Type of box. More...
 
Tensor box
 Box. More...
 
Tensor invBox
 Inverse box. More...
 
Tensor reduced
 Reduced box. More...
 
Tensor invReduced
 Inverse of the reduced box. More...
 
std::vector< Vectorshifts [2][2][2]
 List of shifts that should be attempted. More...
 
Vector diag
 Alternative representation for orthorombic cells. More...
 
Vector hdiag
 
Vector mdiag
 

Member Enumeration Documentation

◆ anonymous enum

anonymous enum
private

Type of box.

Enumerator
unset 
orthorombic 
generic 

Constructor & Destructor Documentation

◆ Pbc()

PLMD::Pbc::Pbc ( )

Constructor.

Member Function Documentation

◆ apply()

void PLMD::Pbc::apply ( std::vector< Vector > &  dlist,
unsigned  max_index = 0 
) const

Apply PBC to a set of positions or distance vectors.

◆ buildShifts()

void PLMD::Pbc::buildShifts ( std::vector< Vector shifts[2][2][2]) const
private

Build list of shifts.

This is expensive, and must be called only when box is reset. It allows building a minimal set of shifts depending on the sign of the scaled coordinates representing a distance vector.

◆ distance() [1/3]

double PLMD::Pbc::distance ( const bool  pbc,
const Vector v1,
const Vector v2 
) const

Compute modulo of (v2-v1), using or not pbc depending on bool pbc.

◆ distance() [2/3]

Vector PLMD::Pbc::distance ( const Vector v1,
const Vector v2 
) const
inline

Computes v2-v1, using minimal image convention.

◆ distance() [3/3]

Vector PLMD::Pbc::distance ( const Vector v1,
const Vector v2,
int *  nshifts 
) const

version of distance which also returns the number of attempted shifts

◆ fullSearch()

void PLMD::Pbc::fullSearch ( Vector d) const

Full search (for testing).

Perform a full search on vector

◆ getBox()

const Tensor & PLMD::Pbc::getBox ( ) const

Returns the box.

◆ getInvBox()

const Tensor & PLMD::Pbc::getInvBox ( ) const

Returns the inverse matrix of box.

Thus: pbc.getInvBox() == inverse(pbc.getBox()).

◆ isOrthorombic()

bool PLMD::Pbc::isOrthorombic ( ) const

Returns true if the box vectors are orthogonal.

◆ isSet()

bool PLMD::Pbc::isSet ( ) const
inline

Returns true if box is set and non zero.

◆ realToScaled()

Vector PLMD::Pbc::realToScaled ( const Vector d) const

Transform a vector in real space to a vector in scaled coordinates.

Thus:pbc.realToScaled(v) == matmul(transpose(inverse(pbc.getBox(),v)));

◆ scaledToReal()

Vector PLMD::Pbc::scaledToReal ( const Vector d) const

Transform a vector in scaled coordinates to a vector in real space.

Thus:pbc.scaledToRead(v) == matmul(transpose(pbc.getBox()),v);

◆ setBox()

void PLMD::Pbc::setBox ( const Tensor b)

Set the lattice vectors.

b[i][j] is the j-th component of the i-th vector

Member Data Documentation

◆ box

Tensor PLMD::Pbc::box
private

Box.

◆ diag

Vector PLMD::Pbc::diag
private

Alternative representation for orthorombic cells.

Not really used, but could be used to optimize search in orthorombic cells.

◆ hdiag

Vector PLMD::Pbc::hdiag
private

◆ invBox

Tensor PLMD::Pbc::invBox
private

Inverse box.

◆ invReduced

Tensor PLMD::Pbc::invReduced
private

Inverse of the reduced box.

◆ mdiag

Vector PLMD::Pbc::mdiag
private

◆ reduced

Tensor PLMD::Pbc::reduced
private

Reduced box.

This is a set of lattice vectors generating the same lattice but "minimally skewed". Useful to optimize image search.

◆ shifts

std::vector<Vector> PLMD::Pbc::shifts[2][2][2]
private

List of shifts that should be attempted.

Depending on the sign of the scaled coordinates representing a distance vector, a different set of shifts must be tried.

◆ type

enum { ... } PLMD::Pbc::type

Type of box.


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