66 |
|
int i, j, k; |
67 |
|
DirectionalAtom* dAtom; |
68 |
|
double Tb[3], ji[3]; |
69 |
< |
double A[3][3], I[3][3]; |
70 |
< |
double angle, mass; |
69 |
> |
|
70 |
> |
double mass; |
71 |
|
double vel[3], pos[3], frc[3]; |
72 |
|
|
73 |
|
double rj[3]; |
132 |
|
for (j=0; j < 3; j++) |
133 |
|
ji[j] += dt2 * (Tb[j] * eConvert - ji[j]*chi); |
134 |
|
|
135 |
< |
// use the angular velocities to propagate the rotation matrix a |
136 |
< |
// full time step |
137 |
< |
|
138 |
< |
dAtom->getA(A); |
139 |
< |
dAtom->getI(I); |
140 |
< |
|
141 |
< |
// rotate about the x-axis |
142 |
< |
angle = dt2 * ji[0] / I[0][0]; |
143 |
< |
this->rotate( 1, 2, angle, ji, A ); |
144 |
< |
|
145 |
< |
// rotate about the y-axis |
146 |
< |
angle = dt2 * ji[1] / I[1][1]; |
147 |
< |
this->rotate( 2, 0, angle, ji, A ); |
148 |
< |
|
149 |
< |
// rotate about the z-axis |
150 |
< |
angle = dt * ji[2] / I[2][2]; |
151 |
< |
this->rotate( 0, 1, angle, ji, A); |
152 |
< |
|
153 |
< |
// rotate about the y-axis |
154 |
< |
angle = dt2 * ji[1] / I[1][1]; |
155 |
< |
this->rotate( 2, 0, angle, ji, A ); |
156 |
< |
|
157 |
< |
// rotate about the x-axis |
158 |
< |
angle = dt2 * ji[0] / I[0][0]; |
159 |
< |
this->rotate( 1, 2, angle, ji, A ); |
160 |
< |
|
135 |
> |
this->rotationPropagation( dAtom, ji ); |
136 |
> |
|
137 |
|
dAtom->setJ( ji ); |
162 |
– |
dAtom->setA( A ); |
138 |
|
} |
139 |
|
} |
140 |
|
|