| 33 |
|
double kinetic; |
| 34 |
|
double amass; |
| 35 |
|
double aVel[3], aJ[3], I[3][3]; |
| 36 |
< |
int j, kl; |
| 36 |
> |
int i, j, k, kl; |
| 37 |
|
|
| 38 |
|
double kinetic_global; |
| 39 |
|
vector<StuntDouble *> integrableObjects = info->integrableObjects; |
| 53 |
|
integrableObjects[kl]->getJ( aJ ); |
| 54 |
|
integrableObjects[kl]->getI( I ); |
| 55 |
|
|
| 56 |
< |
for (j=0; j<3; j++) |
| 57 |
< |
kinetic += aJ[j]*aJ[j] / I[j][j]; |
| 58 |
< |
|
| 59 |
< |
} |
| 56 |
> |
if (integrableObjects[kl]->isLinear()) { |
| 57 |
> |
i = integrableObjects[kl]->linearAxis(); |
| 58 |
> |
j = (i+1)%3; |
| 59 |
> |
k = (i+2)%3; |
| 60 |
> |
kinetic += aJ[j]*aJ[j]/I[j][j] + aJ[k]*aJ[k]/I[k][k]; |
| 61 |
> |
} else { |
| 62 |
> |
for (j=0; j<3; j++) |
| 63 |
> |
kinetic += aJ[j]*aJ[j] / I[j][j]; |
| 64 |
> |
} |
| 65 |
> |
} |
| 66 |
|
} |
| 67 |
|
#ifdef IS_MPI |
| 68 |
|
MPI_Allreduce(&kinetic,&kinetic_global,1,MPI_DOUBLE, |
| 69 |
|
MPI_SUM, MPI_COMM_WORLD); |
| 70 |
|
kinetic = kinetic_global; |
| 71 |
|
#endif //is_mpi |
| 72 |
< |
|
| 72 |
> |
|
| 73 |
|
kinetic = kinetic * 0.5 / e_convert; |
| 74 |
|
|
| 75 |
|
return kinetic; |