| 1 |
#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 |