Public Member Functions | Static 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...
 

Static Public Member Functions

static void test ()
 Perform some check. Useful for debugging. 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
private

Type of box.

Enumerator
unset 
orthorombic 
generic 

Constructor & Destructor Documentation

PLMD::Pbc::Pbc ( )

Constructor.

Member Function Documentation

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

Apply PBC to a set of positions or distance vectors.

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.

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.

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

Computes v2-v1, using minimal image convention.

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

version of distance which also returns the number of attempted shifts

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

Full search (for testing).

Perform a full search on vector

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

Returns the box.

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

Returns the inverse matrix of box.

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

bool PLMD::Pbc::isOrthorombic ( ) const

Returns true if the box vectors are orthogonal.

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

Returns true if box is set and non zero.

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)));

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);

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

Set the lattice vectors.

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

void PLMD::Pbc::test ( )
static

Perform some check. Useful for debugging.

Member Data Documentation

Tensor PLMD::Pbc::box
private

Box.

Vector PLMD::Pbc::diag
private

Alternative representation for orthorombic cells.

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

Vector PLMD::Pbc::hdiag
private
Tensor PLMD::Pbc::invBox
private

Inverse box.

Tensor PLMD::Pbc::invReduced
private

Inverse of the reduced box.

Vector PLMD::Pbc::mdiag
private
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.

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.

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

Type of box.


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