1 |
mmeineke |
10 |
#ifndef _LRI_H_ |
2 |
|
|
#define _LRI_H_ |
3 |
|
|
|
4 |
|
|
#include <stdio.h> |
5 |
|
|
#include <fstream> |
6 |
|
|
|
7 |
|
|
#include "Atom.hpp" |
8 |
|
|
#include "AbstractClasses.hpp" |
9 |
|
|
#include "SimInfo.hpp" |
10 |
|
|
|
11 |
|
|
using namespace std; |
12 |
|
|
|
13 |
|
|
class AllLong : public LRI{ |
14 |
|
|
|
15 |
|
|
public: |
16 |
|
|
AllLong( SimInfo* entry_plug ); |
17 |
|
|
~AllLong(); |
18 |
|
|
void calc_forces(); |
19 |
|
|
double get_potential() {return potentialE;} |
20 |
|
|
|
21 |
|
|
private: |
22 |
|
|
|
23 |
|
|
int nPairs; // the number of excluded pairs |
24 |
|
|
int* pairI; // the array of excluded pairs |
25 |
|
|
int* pairJ; |
26 |
|
|
unsigned short int exclude; // boolean on whether there are any excludes |
27 |
|
|
|
28 |
|
|
int nAtoms; // the number of atoms |
29 |
|
|
Atom** atoms; // the array of atom objects |
30 |
|
|
|
31 |
|
|
double boxX; // periodic boundry conditions |
32 |
|
|
double boxY; |
33 |
|
|
double boxZ; |
34 |
|
|
|
35 |
|
|
int nDipoles; // the number of dipoles in the system |
36 |
|
|
|
37 |
|
|
double rRF; // the reaction field cut off radius |
38 |
|
|
double rTaper; // the taper radius of the reaction field |
39 |
|
|
double dielectric; // the dielectric constant for the reaction field medium |
40 |
|
|
|
41 |
|
|
double* Rx; // position vector |
42 |
|
|
double* Ry; |
43 |
|
|
double* Rz; |
44 |
|
|
|
45 |
|
|
double* Rx0; // initial position vectors ( for neighbor list ) |
46 |
|
|
double* Ry0; |
47 |
|
|
double* Rz0; |
48 |
|
|
|
49 |
|
|
double* ux; // unit vector |
50 |
|
|
double* uy; |
51 |
|
|
double* uz; |
52 |
|
|
|
53 |
|
|
double* Tx; // torque vector |
54 |
|
|
double* Ty; |
55 |
|
|
double* Tz; |
56 |
|
|
|
57 |
|
|
double* Fx; // force vector |
58 |
|
|
double* Fy; |
59 |
|
|
double* Fz; |
60 |
|
|
|
61 |
|
|
double* Ex; // reaction field |
62 |
|
|
double* Ey; |
63 |
|
|
double* Ez; |
64 |
|
|
|
65 |
|
|
double* Axx; // Rotation matrix |
66 |
|
|
double* Axy; |
67 |
|
|
double* Axz; |
68 |
|
|
|
69 |
|
|
double* Ayx; |
70 |
|
|
double* Ayy; |
71 |
|
|
double* Ayz; |
72 |
|
|
|
73 |
|
|
double* Azx; |
74 |
|
|
double* Azy; |
75 |
|
|
double* Azz; |
76 |
|
|
|
77 |
|
|
double* epslon; // the array of VDW/LJ epslons |
78 |
|
|
double* sigma; // the array of VDW/LJ sigmas |
79 |
|
|
double* mu; // the magnitude of the dipole moments; |
80 |
|
|
|
81 |
|
|
double rCut; // the LJ/VDW cutoff radius |
82 |
|
|
double rListSmall;// the inner shell radius of the Neighbor List |
83 |
|
|
int maxNab; // the max number of ab pairs (used by neighbor list) |
84 |
|
|
double rList; // the cut off shell for the neighbor list |
85 |
|
|
int* point; // the pointer array of the neighbor list |
86 |
|
|
int* list; // the list of neighbors |
87 |
|
|
unsigned short int listUpdate; // boolean to update the neighbor list |
88 |
|
|
|
89 |
|
|
unsigned short int* isDipole; // boolean array for dipoles |
90 |
|
|
unsigned short int* isVDW; // boolean array for VDW atoms |
91 |
|
|
unsigned short int* isLJ; // boolean array for LJ atoms |
92 |
|
|
unsigned short int* isSSD; // boolean array for SSD atoms |
93 |
|
|
|
94 |
|
|
double potentialE; |
95 |
|
|
|
96 |
|
|
}; |
97 |
|
|
#endif |