mcpele  1.0.0
The Monte Carlo Python Energy Landscape Explorer
Classes | Typedefs | Functions | Variables
pele Namespace Reference

Classes

class  CoordsAdaptor
class  TransformPolicy
class  TransformAACluster
class  MeasureAngleAxisCluster
class  RigidFragment
class  RBTopology
class  RBPotentialWrapper
class  _ArrayMemory
class  Array
class  AtomListPotential
class  BasePotential
class  PairIteratorPotential
class  CellListPotential
class  CombinedPotential
struct  meta_dist
struct  meta_dist< 1 >
struct  cartesian_distance
struct  meta_periodic_distance
struct  meta_periodic_distance< 1 >
struct  meta_image
struct  meta_image< 1 >
class  periodic_distance
class  DistanceInterface
class  CartesianDistanceWrapper
class  PeriodicDistanceWrapper
class  FrozenCoordsConverter
class  FrozenPotentialWrapper
class  Edge
class  Node
class  Graph
class  BaseHarmonic
class  Harmonic
class  HarmonicCOM
struct  harmonic_interaction
class  HarmonicAtomList
class  HarmonicNeighborList
struct  sf_HS_WCA_interaction
struct  HS_WCA_interaction
class  HS_WCA
class  HS_WCAPeriodic
class  HS_WCACellLists
class  HS_WCAPeriodicCellLists
class  HS_WCAFrozen
class  HS_WCAPeriodicFrozen
class  HS_WCACellListsFrozen
class  HS_WCAPeriodicCellListsFrozen
class  HS_WCANeighborList
struct  InversePower_interaction
struct  InverseIntPower_interaction
struct  InverseHalfIntPower_interaction
class  InversePower
class  InversePowerPeriodic
class  InverseIntPower
class  InverseIntPowerPeriodic
class  InverseHalfIntPower
class  InverseHalfIntPowerPeriodic
class  InversePowerCellLists
class  InversePowerPeriodicCellLists
class  LBFGS
struct  lj_interaction
class  LJ
class  LJPeriodic
class  LJFrozen
class  LJNeighborList
struct  lj_interaction_cut_smooth
class  LJCut
class  LJCutPeriodic
class  LJCutAtomList
class  LJCutPeriodicAtomList
class  LJCutPeriodicCellLists
class  Orthogonalize
class  OrthogonalizeTranslational
class  LowestEigPotential
class  MatrixAdapter
struct  meta_pow
struct  meta_pow< T, 0 >
class  MODIFIED_FIRE
struct  morse_interaction
class  Morse
struct  periodic_policy_check_helper
struct  periodic_policy_check_helper< pele::periodic_distance< box_dimension >, box_dimension >
struct  periodic_policy_check
class  AtomInCellIterator
class  CellIter
class  NGT
class  Optimizer
class  GradientOptimizer
class  PythonPotential
class  SimplePairwiseNeighborList
class  SimplePairwisePotential
class  VecN
class  MatrixNM
struct  WCA_interaction
class  WCA
class  WCA2D
class  WCAPeriodic
class  WCAPeriodic2D
class  WCANeighborList
class  WCAAtomList

Typedefs

typedef size_t node_id
typedef Nodenode_ptr
typedef Edgeedge_ptr
typedef int color_type

Functions

MatrixNM< 3, 3 > aa_to_rot_mat (pele::VecN< 3 > const &p)
pele::VecN< 4 > rot_mat_to_quaternion (pele::MatrixNM< 3, 3 > const &mx)
pele::VecN< 3 > quaternion_to_aa (pele::VecN< 4 > const &qin)
pele::VecN< 4 > aa_to_quaternion (pele::VecN< 3 > const &aa)
pele::VecN< 4 > quaternion_multiply (pele::VecN< 4 > const &q0, pele::VecN< 4 > const &q1)
void rot_mat_derivatives_small_theta (pele::VecN< 3 > const &p, MatrixNM< 3, 3 > &rmat, MatrixNM< 3, 3 > &drm1, MatrixNM< 3, 3 > &drm2, MatrixNM< 3, 3 > &drm3, bool with_grad)
void rot_mat_derivatives (pele::VecN< 3 > const &p, MatrixNM< 3, 3 > &rmat, MatrixNM< 3, 3 > &drm1, MatrixNM< 3, 3 > &drm2, MatrixNM< 3, 3 > &drm3)
template<class dtype >
std::ostream & operator<< (std::ostream &out, const Array< dtype > &a)
double dot (Array< double > const &v1, Array< double > const &v2)
double norm (Array< double > const &v)
std::ostream & operator<< (std::ostream &out, std::shared_ptr< Graph > g)
void zero_modes_translational (std::vector< pele::Array< double > > &zev, size_t natoms, size_t bdim)
template<class dtype >
MatrixAdapter< dtype > hacky_mat_mul (MatrixAdapter< dtype > const &A, MatrixAdapter< dtype > const &B)
template<int N, class T >
pos_int_pow (const T x)
template<int N, class T >
neg_int_pow (const T x)
template<int N, class T >
pos_half_int_pow (const T x)
template<int N, class T >
neg_half_int_pow (const T x)
bool compare_degree (node_ptr u, node_ptr v)
pele::VecN< 3 > rot_mat_to_aa (pele::MatrixNM< 3, 3 > const &mx)
pele::VecN< 3 > rotate_aa (pele::VecN< 3 > const &p1, pele::VecN< 3 > const &p2)
template<size_t N>
double dot (VecN< N > const &v1, VecN< N > const &v2)
template<size_t N>
double norm (VecN< N > const &v)
template<size_t N, size_t L, size_t M>
MatrixNM< N, M > dot (MatrixNM< N, L > const &A, MatrixNM< L, M > const &B)
template<size_t N, size_t M>
pele::VecN< N > dot (MatrixNM< N, M > const &A, pele::VecN< M > const &v)
template<size_t N, size_t M>
pele::MatrixNM< M, N > transpose (MatrixNM< N, M > const &A)
template<size_t N>
pele::MatrixNM< N, N > identity ()
template<size_t N, size_t M>
std::ostream & operator<< (std::ostream &out, const MatrixNM< N, M > &a)
template<size_t N>
std::ostream & operator<< (std::ostream &out, const VecN< N > &a)

Variables

color_type color_white = 0
color_type color_grey = 1
color_type color_black = 4

Detailed Description

This is a partial c++ implementation of the tools needed to interact with systems of rigid bodies. This is not a complete reimplementation, only the parts that were too slow in python were implemented here.

References on round etc: http://www.cplusplus.com/reference/cmath/floor/ http://www.cplusplus.com/reference/cmath/ceil/ http://www.cplusplus.com/reference/cmath/round/ These classes and structs are used by the potentials to compute distances. They must have a member function get_rij() with signature

void get_rij(double * r_ij, double const * const r1, double const * const r2)

Where r1 and r2 are the position of the two atoms and r_ij is an array of size 3 which will be used to return the distance vector from r1 to r2.

References: Used here: general reference on template meta-programming and recursive template functions: http://www.itp.phys.ethz.ch/education/hs12/programming_techniques


Typedef Documentation

typedef int pele::color_type

Definition at line 39 of file graph.hpp.

typedef Edge* pele::edge_ptr

Definition at line 38 of file graph.hpp.

typedef size_t pele::node_id

Definition at line 35 of file graph.hpp.

typedef Node* pele::node_ptr

Definition at line 37 of file graph.hpp.


Function Documentation

pele::VecN< 4 > pele::aa_to_quaternion ( pele::VecN< 3 > const &  aa)

Definition at line 119 of file rotations.cpp.

pele::MatrixNM< 3, 3 > pele::aa_to_rot_mat ( pele::VecN< 3 > const &  p)

make a rotation matrix from an angle axis

Definition at line 10 of file rotations.cpp.

bool pele::compare_degree ( node_ptr  u,
node_ptr  v 
)

Definition at line 29 of file ngt.hpp.

template<size_t N>
double pele::dot ( VecN< N > const &  v1,
VecN< N > const &  v2 
) [inline]

compute the dot product of two Arrays

Definition at line 296 of file vecn.h.

template<size_t N, size_t L, size_t M>
MatrixNM<N,M> pele::dot ( MatrixNM< N, L > const &  A,
MatrixNM< L, M > const &  B 
)

matrix_multiplication

This is a really simple implementation of matrix multiplication. It is order N*M*L but can be done with much better scaling

Definition at line 322 of file vecn.h.

template<size_t N, size_t M>
pele::VecN<N> pele::dot ( MatrixNM< N, M > const &  A,
pele::VecN< M > const &  v 
)

multiply a matrix times an vector

Definition at line 341 of file vecn.h.

double pele::dot ( Array< double > const &  v1,
Array< double > const &  v2 
) [inline]

compute the dot product of two Arrays

Definition at line 433 of file array.h.

template<class dtype >
MatrixAdapter<dtype> pele::hacky_mat_mul ( MatrixAdapter< dtype > const &  A,
MatrixAdapter< dtype > const &  B 
)

multiply two matrices. Note, this is a very inefficient way of doing matrix multiplication. If you have large matrices or care about speed you should use something else.

Definition at line 80 of file matrix.h.

template<size_t N>
pele::MatrixNM<N,N> pele::identity ( )

Definition at line 367 of file vecn.h.

template<int N, class T >
T pele::neg_half_int_pow ( const T  x) [inline]

pow(x, - N / 2) where N >= 0, integer usage: neg_half_int_pow<-N>(x)

Definition at line 74 of file meta_pow.h.

template<int N, class T >
T pele::neg_int_pow ( const T  x) [inline]

pow(x, - N) where N >= 0, integer usage: neg_int_pow<-N>(x)

Definition at line 52 of file meta_pow.h.

template<size_t N>
double pele::norm ( VecN< N > const &  v) [inline]

compute the L2 norm of an Array

Definition at line 309 of file vecn.h.

double pele::norm ( Array< double > const &  v) [inline]

compute the L2 norm of an Array

Definition at line 442 of file array.h.

std::ostream& pele::operator<< ( std::ostream &  out,
std::shared_ptr< Graph >  g 
) [inline]

Definition at line 303 of file graph.hpp.

template<size_t N, size_t M>
std::ostream& pele::operator<< ( std::ostream &  out,
const MatrixNM< N, M > &  a 
) [inline]

Definition at line 378 of file vecn.h.

template<size_t N>
std::ostream& pele::operator<< ( std::ostream &  out,
const VecN< N > &  a 
) [inline]

Definition at line 393 of file vecn.h.

template<class dtype >
std::ostream& pele::operator<< ( std::ostream &  out,
const Array< dtype > &  a 
) [inline]

Definition at line 419 of file array.h.

template<int N, class T >
T pele::pos_half_int_pow ( const T  x) [inline]

pow(x, N / 2) where N >= 0, integer usage: pos_half_int_pow<N>(x)

Definition at line 63 of file meta_pow.h.

template<int N, class T >
T pele::pos_int_pow ( const T  x) [inline]

pow(x, N) where N >= 0, integer usage: pos_int_pow<N>(x)

Definition at line 41 of file meta_pow.h.

pele::VecN< 4 > pele::quaternion_multiply ( pele::VecN< 4 > const &  q0,
pele::VecN< 4 > const &  q1 
)

Definition at line 145 of file rotations.cpp.

pele::VecN< 3 > pele::quaternion_to_aa ( pele::VecN< 4 > const &  qin)

Definition at line 94 of file rotations.cpp.

void pele::rot_mat_derivatives ( pele::VecN< 3 > const &  p,
MatrixNM< 3, 3 > &  rmat,
MatrixNM< 3, 3 > &  drm1,
MatrixNM< 3, 3 > &  drm2,
MatrixNM< 3, 3 > &  drm3 
)

make a rotation matrix and it's derivatives from an angle axis

Definition at line 232 of file rotations.cpp.

void pele::rot_mat_derivatives_small_theta ( pele::VecN< 3 > const &  p,
MatrixNM< 3, 3 > &  rmat,
MatrixNM< 3, 3 > &  drm1,
MatrixNM< 3, 3 > &  drm2,
MatrixNM< 3, 3 > &  drm3,
bool  with_grad 
)

compute the rotation matrix and it's derivatives from an angle axis vector if the rotation angle is very small

Definition at line 159 of file rotations.cpp.

pele::VecN<3> pele::rot_mat_to_aa ( pele::MatrixNM< 3, 3 > const &  mx) [inline]

Definition at line 18 of file rotations.h.

Definition at line 55 of file rotations.cpp.

pele::VecN<3> pele::rotate_aa ( pele::VecN< 3 > const &  p1,
pele::VecN< 3 > const &  p2 
) [inline]

change angle axis rotation p1 by the rotation p2

Definition at line 26 of file rotations.h.

template<size_t N, size_t M>
pele::MatrixNM<M,N> pele::transpose ( MatrixNM< N, M > const &  A)

Definition at line 355 of file vecn.h.

void pele::zero_modes_translational ( std::vector< pele::Array< double > > &  zev,
size_t  natoms,
size_t  bdim 
) [inline]

Definition at line 13 of file lowest_eig_potential.h.


Variable Documentation

Definition at line 42 of file graph.hpp.

Definition at line 41 of file graph.hpp.

Definition at line 40 of file graph.hpp.

 All Classes Namespaces Functions Variables Typedefs