Inertia Tensor of the "Tetra" shape class

Asked by Vasileios Angelidakis on 2019-04-23


I think I have spotted a mistake in the calculation of the Inertia Tensor for the "Tetra" shape class (since the day calls for inertia-related amendments :) ). In the Tetra.cpp script, the Inertia Tensor is calculated exactly as in [1]. The thing is, this paper has a typo, and although the non-diagonal inertia values "a', b', c'" (stated in the source code as: "a__ , b__ , c__") are calculated correctly, their position in the Inertia tensor seems to be false. In particular, the terms "-b__" and "-c__" should be in each other's place, since these terms are defined as:

b' (=b__) term: $$b' = \int_{D} μ*x*z dD $$ : Involving x-z coordinates: should be present in the (0,2) (2,0) cells of the tensor
c' (=c__) term: $$c' = \int_{D} μ*x*y dD $$ : Involving x-y coordinates: should be present in the (0,1) (1,0) cells of the tensor

I see this has also been spotted in the Polyhedra_support.cpp script, where the correct tensor is used:

 Matrix3r ret; ret<<
  a , -c__, -b__,
  -c__, b , -a__,
  -b__, -a__, c ;
 return ret;


Question information

English Edit question
Yade Edit question
No assignee Edit question
Solved by:
Robert Caulk
Last query:
Last reply:
Best Robert Caulk (rcaulk) said : #1

Thanks for spotting this, it looks like you are right (I guess you are referring to these lines in particular [1][2]). Do you want to go ahead and make a merge request on GitLab? Or shall I?


Thanks for checking this Robert!

Yes, I refer to the lines you sent.
Just made a merge request on GitLab.

Many thanks,

Thanks Robert Caulk, that solved my question.