--- trunk/OOPSE/libmdtools/Thermo.cpp 2004/04/16 02:39:05 1117 +++ trunk/OOPSE/libmdtools/Thermo.cpp 2004/04/19 03:52:27 1118 @@ -33,7 +33,7 @@ double Thermo::getKinetic(){ double kinetic; double amass; double aVel[3], aJ[3], I[3][3]; - int j, kl; + int i, j, k, kl; double kinetic_global; vector integrableObjects = info->integrableObjects; @@ -53,9 +53,15 @@ double Thermo::getKinetic(){ integrableObjects[kl]->getJ( aJ ); integrableObjects[kl]->getI( I ); - for (j=0; j<3; j++) - kinetic += aJ[j]*aJ[j] / I[j][j]; - + if (integrableObjects[kl]->isLinear()) { + i = integrableObjects[kl]->linearAxis(); + j = (i+1)%3; + k = (i+2)%3; + kinetic += aJ[j]*aJ[j]/I[j][j] + aJ[k]*aJ[k]/I[k][k]; + } else { + for (j=0; j<3; j++) + kinetic += aJ[j]*aJ[j] / I[j][j]; + } } } #ifdef IS_MPI