| 
Classes | 
| class | CoordsAdaptor | 
| class | TransformPolicy | 
| class | TransformAACluster | 
| class | MeasureAngleAxisCluster | 
| class | RigidFragment | 
| class | RBTopology | 
| class | RBPotentialWrapper | 
| class | _ArrayMemory | 
| class | Array | 
| class | AtomListPotential | 
| class | BasePotential | 
| class | EnergyAccumulator | 
| class | EnergyGradientAccumulator | 
| class | EnergyGradientHessianAccumulator | 
| class | CellListPotential | 
| class | CellListsLoop | 
| class | CellLists | 
| class | stupid_counter | 
| 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 | 
| 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 Node * | node_ptr | 
| typedef Edge * | edge_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) | 
| template<class T , class U > | 
| Array< T > | operator* (const U rhs, const Array< T > &lhs) | 
| 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<class dtype > | 
| std::ostream & | operator<< (std::ostream &out, const pele::MatrixAdapter< dtype > &a) | 
| template<int N, class T > | 
| T | pos_int_pow (const T x) | 
| template<int N, class T > | 
| T | neg_int_pow (const T x) | 
| template<int N, class T > | 
| T | pos_half_int_pow (const T x) | 
| template<int N, class T > | 
| 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 | 
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