| 64 |
|
N_INTERACTION_FAMILIES |
| 65 |
|
}; |
| 66 |
|
|
| 67 |
+ |
typedef Vector<RealType, N_INTERACTION_FAMILIES> potVec; |
| 68 |
+ |
|
| 69 |
|
/** |
| 70 |
|
* The InteractionData struct. |
| 71 |
|
* |
| 72 |
< |
* This is used to pass data to specific non-bonded interactions for |
| 73 |
< |
* force calculations. Not all of the struct members are utilized |
| 74 |
< |
* by any given interaction. |
| 72 |
> |
* This is used to pass pointers to data to specific non-bonded |
| 73 |
> |
* interactions for force calculations. Not all of the struct |
| 74 |
> |
* members are utilized by any given interaction. |
| 75 |
|
*/ |
| 76 |
|
struct InteractionData { |
| 77 |
< |
pair<AtomType*, AtomType*> atypes; /**< pair of atom types interacting */ |
| 78 |
< |
Vector3d d; /**< interatomic vector (already wrapped into box) */ |
| 79 |
< |
RealType rij; /**< interatomic separation */ |
| 80 |
< |
RealType r2; /**< square of rij */ |
| 81 |
< |
RealType rcut; /**< cutoff radius for this interaction */ |
| 82 |
< |
RealType sw; /**< switching function value at rij */ |
| 83 |
< |
int topoDist; /**< topological distance between atoms */ |
| 84 |
< |
RealType vdwMult; /**< multiplier for van der Waals interactions */ |
| 85 |
< |
RealType electroMult; /**< multiplier for electrostatic interactions */ |
| 86 |
< |
RealType pot[4]; /**< total potential */ |
| 87 |
< |
RealType vpair; /**< pair potential */ |
| 88 |
< |
Vector3d f1; /**< force between the two atoms */ |
| 89 |
< |
Mat3x3d eFrame1; /**< pointer to electrostatic frame for first atom */ |
| 90 |
< |
Mat3x3d eFrame2; /**< pointer to electrostatic frame for second atom*/ |
| 91 |
< |
RotMat3x3d A1; /**< pointer to rotation matrix of first atom */ |
| 92 |
< |
RotMat3x3d A2; /**< pointer to rotation matrix of second atom */ |
| 93 |
< |
Vector3d t1; /**< pointer to torque on first atom */ |
| 94 |
< |
Vector3d t2; /**< pointer to torque on second atom */ |
| 95 |
< |
RealType rho_i_at_j; /**< electron density at second atom due to first */ |
| 96 |
< |
RealType rho_j_at_i; /**< electron density at first atom due to second */ |
| 97 |
< |
RealType rho1; /**< total electron density at first atom */ |
| 98 |
< |
RealType rho2; /**< total electron density at second atom */ |
| 99 |
< |
RealType dfrho1; /**< derivative of density functional for atom 1 */ |
| 100 |
< |
RealType dfrho2; /**< derivative of density functional for atom 2 */ |
| 101 |
< |
RealType fshift1; /**< indirect potential contribution from atom 1 */ |
| 102 |
< |
RealType fshift2; /**< indirect potential contribution from atom 2 */ |
| 103 |
< |
RealType skippedCharge1; /**< charge skipped in normal pairwise interaction loop */ |
| 104 |
< |
RealType skippedCharge2; /**< charge skipped in normal pairwise interaction loop */ |
| 77 |
> |
pair<AtomType*, AtomType*>* atypes; /**< pair of atom types interacting */ |
| 78 |
> |
Vector3d* d; /**< interatomic vector (already wrapped into box) */ |
| 79 |
> |
RealType* rij; /**< interatomic separation */ |
| 80 |
> |
RealType* r2; /**< square of rij */ |
| 81 |
> |
RealType* rcut; /**< cutoff radius for this interaction */ |
| 82 |
> |
RealType* sw; /**< switching function value at rij */ |
| 83 |
> |
int* topoDist; /**< topological distance between atoms */ |
| 84 |
> |
RealType* vdwMult; /**< multiplier for van der Waals interactions */ |
| 85 |
> |
RealType* electroMult; /**< multiplier for electrostatic interactions */ |
| 86 |
> |
potVec* pot; /**< total potential */ |
| 87 |
> |
RealType* vpair; /**< pair potential */ |
| 88 |
> |
Vector3d* f1; /**< force between the two atoms */ |
| 89 |
> |
Mat3x3d* eFrame1; /**< pointer to electrostatic frame for first atom */ |
| 90 |
> |
Mat3x3d* eFrame2; /**< pointer to electrostatic frame for second atom*/ |
| 91 |
> |
RotMat3x3d* A1; /**< pointer to rotation matrix of first atom */ |
| 92 |
> |
RotMat3x3d* A2; /**< pointer to rotation matrix of second atom */ |
| 93 |
> |
Vector3d* t1; /**< pointer to torque on first atom */ |
| 94 |
> |
Vector3d* t2; /**< pointer to torque on second atom */ |
| 95 |
> |
RealType* rho_i_at_j; /**< electron density at second atom due to first */ |
| 96 |
> |
RealType* rho_j_at_i; /**< electron density at first atom due to second */ |
| 97 |
> |
RealType* rho1; /**< total electron density at first atom */ |
| 98 |
> |
RealType* rho2; /**< total electron density at second atom */ |
| 99 |
> |
RealType* dfrho1; /**< derivative of density functional for atom 1 */ |
| 100 |
> |
RealType* dfrho2; /**< derivative of density functional for atom 2 */ |
| 101 |
> |
RealType* fshift1; /**< indirect potential contribution from atom 1 */ |
| 102 |
> |
RealType* fshift2; /**< indirect potential contribution from atom 2 */ |
| 103 |
> |
RealType* skippedCharge1; /**< charge skipped in normal pairwise interaction loop */ |
| 104 |
> |
RealType* skippedCharge2; /**< charge skipped in normal pairwise interaction loop */ |
| 105 |
|
}; |
| 106 |
|
|
| 107 |
|
/** |
| 108 |
|
* The SelfData struct. |
| 109 |
|
* |
| 110 |
< |
* This is used to pass data for the self-interaction or derived |
| 111 |
< |
* information on a single atom after a pass through all other |
| 112 |
< |
* interactions. This is used by electrostatic methods that have |
| 113 |
< |
* long-range corrections involving interactions with a medium or a |
| 114 |
< |
* boundary and also by specific metal interactions for electron |
| 115 |
< |
* density functional calculations. Not all of the struct members |
| 116 |
< |
* are utilized by any given self interaction. |
| 110 |
> |
* This is used to pass pointers to data for the self-interaction or |
| 111 |
> |
* derived information on a single atom after a pass through all |
| 112 |
> |
* other interactions. This is used by electrostatic methods that |
| 113 |
> |
* have long-range corrections involving interactions with a medium |
| 114 |
> |
* or a boundary and also by specific metal interactions for |
| 115 |
> |
* electron density functional calculations. Not all of the struct |
| 116 |
> |
* members are utilized by any given self interaction. |
| 117 |
|
*/ |
| 118 |
|
struct SelfData { |
| 119 |
< |
AtomType* atype; /**< pointer to AtomType of the atom */ |
| 120 |
< |
Mat3x3d eFrame; /**< pointer to electrostatic frame for atom */ |
| 121 |
< |
RealType skippedCharge; /**< charge skipped in normal pairwise interaction loop */ |
| 122 |
< |
RealType pot[4]; /**< total potential contribution */ |
| 123 |
< |
Vector3d t; /**< pointer to resultant torque on atom */ |
| 124 |
< |
RealType rho; /**< electron density */ |
| 125 |
< |
RealType frho; /**< value of density functional for the atom */ |
| 126 |
< |
RealType dfrhodrho; /**< derivative of density functional for the atom */ |
| 119 |
> |
AtomType* atype; /**< pointer to AtomType of the atom */ |
| 120 |
> |
Mat3x3d* eFrame; /**< pointer to electrostatic frame for atom */ |
| 121 |
> |
RealType* skippedCharge;/**< charge skipped in normal pairwise interaction loop */ |
| 122 |
> |
potVec pot; /**< total potential */ |
| 123 |
> |
Vector3d* t; /**< pointer to resultant torque on atom */ |
| 124 |
> |
RealType* rho; /**< electron density */ |
| 125 |
> |
RealType* frho; /**< value of density functional for the atom */ |
| 126 |
> |
RealType* dfrhodrho; /**< derivative of density functional for the atom */ |
| 127 |
|
}; |
| 128 |
|
|
| 129 |
|
|