34 |
|
int i, j; |
35 |
|
DirectionalAtom* dAtom; |
36 |
|
double Tb[3], ji[3]; |
37 |
< |
double A[3][3], I[3][3]; |
38 |
< |
double angle, mass; |
37 |
> |
double mass; |
38 |
|
double vel[3], pos[3], frc[3]; |
39 |
|
|
40 |
|
double instTemp; |
77 |
|
for (j=0; j < 3; j++) |
78 |
|
ji[j] += dt2 * (Tb[j] * eConvert - ji[j]*chi); |
79 |
|
|
80 |
< |
// use the angular velocities to propagate the rotation matrix a |
82 |
< |
// full time step |
83 |
< |
|
84 |
< |
dAtom->getA(A); |
85 |
< |
dAtom->getI(I); |
86 |
< |
|
87 |
< |
// rotate about the x-axis |
88 |
< |
angle = dt2 * ji[0] / I[0][0]; |
89 |
< |
this->rotate( 1, 2, angle, ji, A ); |
90 |
< |
|
91 |
< |
// rotate about the y-axis |
92 |
< |
angle = dt2 * ji[1] / I[1][1]; |
93 |
< |
this->rotate( 2, 0, angle, ji, A ); |
80 |
> |
this->rotationPropagation( dAtom, ji ); |
81 |
|
|
95 |
– |
// rotate about the z-axis |
96 |
– |
angle = dt * ji[2] / I[2][2]; |
97 |
– |
this->rotate( 0, 1, angle, ji, A); |
98 |
– |
|
99 |
– |
// rotate about the y-axis |
100 |
– |
angle = dt2 * ji[1] / I[1][1]; |
101 |
– |
this->rotate( 2, 0, angle, ji, A ); |
102 |
– |
|
103 |
– |
// rotate about the x-axis |
104 |
– |
angle = dt2 * ji[0] / I[0][0]; |
105 |
– |
this->rotate( 1, 2, angle, ji, A ); |
106 |
– |
|
82 |
|
dAtom->setJ( ji ); |
108 |
– |
dAtom->setA( A ); |
83 |
|
} |
84 |
|
} |
85 |
|
|