Inertia Tensor of the "Tetra" shape class

Asked by Vasileios Angelidakis on 2019-04-23

Hi,

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;

[1] https://thescipub.com/pdf/10.3844/jmssp.2005.8.11

Question information

Language:
English Edit question
Status:
Solved
For:
Yade Edit question
Assignee:
No assignee Edit question
Solved by:
Robert Caulk
Solved:
2019-04-24
Last query:
2019-04-24
Last reply:
2019-04-24
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?

[1]https://gitlab.com/yade-dev/trunk/blob/master/pkg/dem/Tetra.cpp#L1089
[2]https://gitlab.com/yade-dev/trunk/blob/master/pkg/dem/Polyhedra_support.cpp#L108

Thanks for checking this Robert!

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

Many thanks,
Vasileios

Thanks Robert Caulk, that solved my question.