#include <Pbc.h>
|
| Pbc () |
| Constructor.
|
|
void | apply (std::vector< Vector > &dlist, unsigned max_index=0) const |
|
void | apply (VectorView dlist, unsigned max_index=0) const |
| Apply PBC to a set of positions or distance vectors.
|
|
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.
|
|
Vector | distance (const Vector &, const Vector &, int *nshifts=nullptr) const |
| Computes v2-v1, using minimal image convention if specified, also returns the number of attempted shifts.
|
|
void | fullSearch (Vector &) const |
| Full search (for testing).
|
|
const Tensor & | getBox () const |
| Returns the box.
|
|
const Tensor & | getInvBox () const |
| Returns the inverse matrix of box.
|
|
bool | isOrthorombic () const |
| Returns true if the box vectors are orthogonal.
|
|
bool | isSet () const |
| Returns true if box is set and non zero.
|
|
Vector | realToScaled (const Vector &) const |
| Transform a vector in real space to a vector in scaled coordinates.
|
|
Vector | scaledToReal (const Vector &) const |
| Transform a vector in scaled coordinates to a vector in real space.
|
|
void | setBox (const Tensor &b) |
| Set the lattice vectors.
|
|
|
static constexpr unsigned | maxshiftsize =6 |
| This is the maximum expected size for general boxes.
|
|
◆ anonymous enum
Type of box.
Enumerator |
---|
unset | |
orthorombic | |
generic | |
◆ Pbc()
◆ apply() [1/2]
void PLMD::Pbc::apply |
( |
std::vector< Vector > & | dlist, |
|
|
unsigned | max_index = 0 ) const |
◆ apply() [2/2]
void PLMD::Pbc::apply |
( |
VectorView | dlist, |
|
|
unsigned | max_index = 0 ) const |
Apply PBC to a set of positions or distance vectors.
◆ buildShifts()
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/2]
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/2]
Computes v2-v1, using minimal image convention if specified, 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 |
◆ 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()
Transform a vector in real space to a vector in scaled coordinates.
Thus:pbc.realToScaled(v) == matmul(transpose(inverse(pbc.getBox(),v)));
◆ scaledToReal()
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
◆ box
◆ diag
Alternative representation for orthorombic cells.
Not really used, but could be used to optimize search in orthorombic cells.
◆ hdiag
◆ invBox
◆ invReduced
Inverse of the reduced box.
◆ maxshiftsize
unsigned PLMD::Pbc::maxshiftsize =6 |
|
staticconstexprprivate |
This is the maximum expected size for general boxes.
I found this empirically by manually modifying regtest basic/rt-make-1 Since it uses randomly generated boxes it should be correct. In any case, this is just used as a hint for small_vector, which will then switch to heap allocations if more shifts are needed
◆ mdiag
◆ reduced
Reduced box.
This is a set of lattice vectors generating the same lattice but "minimally skewed". Useful to optimize image search.
◆ shifts
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 |
The documentation for this class was generated from the following files: