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