Emdee
 All Classes Files Functions Variables Typedefs Enumerations Enumerator Properties Friends Macros Pages
vashishtathreeparticleforce.h
Go to the documentation of this file.
1 #ifndef VASHISHTATHREEPARTICLEFORCE_H
2 #define VASHISHTATHREEPARTICLEFORCE_H
3 
5 #include <map>
6 #include <unordered_map>
7 #include <armadillo>
8 
9 using namespace std;
10 using namespace arma;
11 
13 {
14 public:
16 
17  void calculateAndApplyForce(Atom *atom1, Atom *atom2, Atom *atom3);
18  void calculateAndApplyForce(Atom *atom1, Atom *atom2, Atom *atom3, const Vector3 &atom2Offset, const Vector3 &atom3Offset);
19 
20  void setMapForAllPermutations(map<vector<int>, double> &theMap, const vector<int> values, double value);
21  void setMapForAllPermutationsStep2(map<vector<int>, double> &theMap, const vector<int> &v, const int start, const int n, double value);
22  void setMapForAllPermutationsStep2(map<vector<int>, int> &theMap, const vector<int> &v, const int start, const int n, double value);
23  void setMapForAllPermutations(map<vector<int>, int> &theMap, const vector<int> values, double value);
24  void setMapForAllPermutationsStep2(vec &theMap, int v[], const int start, double value);
25  void setMapForAllPermutations(vec &theMap, int values[], double value);
26  int comboHash(int v[]);
27 protected:
28  vec m_B;
30  vec m_r0;
32 // vector<int> combo;
33 
34 // Vector3 force;
37 
38  Atom* atoms[3];
39  Vector3 atomPosition[3];
41 
42  double force(double Bijk, double drij, double dfdrij, double drik, double dfdrik, double p, double f, double dtheta, double dpdtheta);
43 // map<vector<int>,double> l;
44 };
45 
46 #endif // VASHISHTATHREEPARTICLEFORCE_H