63 |
|
|
64 |
|
if (nLinearAxis > 1) { |
65 |
|
sprintf( painCave.errMsg, |
66 |
< |
"Directional Atom error.\n" |
66 |
> |
"Directional Atom warning.\n" |
67 |
|
"\tOOPSE found more than one axis in this directional atom with a vanishing \n" |
68 |
|
"\tmoment of inertia."); |
69 |
< |
painCave.isFatal = 1; |
69 |
> |
painCave.isFatal = 0; |
70 |
|
simError(); |
71 |
|
} |
72 |
|
|
104 |
|
setA(m *getA()); |
105 |
|
} |
106 |
|
|
107 |
< |
std::vector<double> DirectionalAtom::getGrad() { |
108 |
< |
std::vector<double> grad(6, 0.0); |
107 |
> |
std::vector<RealType> DirectionalAtom::getGrad() { |
108 |
> |
std::vector<RealType> grad(6, 0.0); |
109 |
|
Vector3d force; |
110 |
|
Vector3d torque; |
111 |
|
Vector3d myEuler; |
112 |
< |
double phi, theta, psi; |
113 |
< |
double cphi, sphi, ctheta, stheta; |
112 |
> |
RealType phi, theta, psi; |
113 |
> |
RealType cphi, sphi, ctheta, stheta; |
114 |
|
Vector3d ephi; |
115 |
|
Vector3d etheta; |
116 |
|
Vector3d epsi; |
148 |
|
|
149 |
|
for (int j = 0; j < 3; j++ ) { |
150 |
|
|
151 |
< |
grad[3] += torque[j]*ephi[j]; |
152 |
< |
grad[4] += torque[j]*etheta[j]; |
153 |
< |
grad[5] += torque[j]*epsi[j]; |
151 |
> |
grad[3] -= torque[j]*ephi[j]; |
152 |
> |
grad[4] -= torque[j]*etheta[j]; |
153 |
> |
grad[5] -= torque[j]*epsi[j]; |
154 |
|
|
155 |
|
} |
156 |
|
|