Continue to Site

Eng-Tips is the largest engineering community on the Internet

Intelligent Work Forums for Engineering Professionals

  • Congratulations cowski on being selected by the Eng-Tips community for having the most helpful posts in the forums last week. Way to Go!

Moment of Inertia Tensor - Parallel Axis Therom

Status
Not open for further replies.

flash3780

Mechanical
Dec 11, 2009
829
Good evening. I've been banging my head against the wall a bit trying to compute the moment of inertia of an assembly by hand. The reason for computing the MOI in this way is because the organics in some components (epoxy, potting, etc.) are not accounted for in our Solidworks model, so I've supressed the parts with organics and reported the MOI of everything else. The plan is to then add in the MOI of the remaining parts with their measured masses. Easy peezy, right? I should just be able to the parallel axis theroem to bring everything back to the global origin and bada-bing!

Solidworks reports the principal MOI, the MOI along the model axes, and the MOI about the origin along the model axes (see attached picture).

So, I wrote a quick script in Matlab to figure out the moment of inertia of my measured parts about the origin, given their moment of inertia about the centroid. To test it, I tried taking the moment about the centroid given by Solidworks and finding the moment about the origin:
Code:
I_stator = parallel_axis([      256434.34,      -21.80,         8.76;...
                                -21.80,         165497.02,      -13.34;...
                                8.76,           -13.34,         165469.26],362.56,28.75,0,0)

function I = parallel_axis(I0,mass,x,y,z);
% Function translates the moment of inertia of a body to an arbitrary point in space. For a point mass, use I0 = 0.
R = [0;0;0]-[x;y;z];    % Column vector from the center-of-mass to the origin
I = I0 + mass.*(dot(R,R)*eye(3,3) - R*R');

Which produces:
Code:
I_stator =

   2.5643e+05  -2.1800e+01   8.7600e+00
  -2.1800e+01   4.6518e+05  -1.3340e+01
   8.7600e+00  -1.3340e+01   4.6515e+05

Now if you compare those results to the picture, Solidworks gives the following for the inertia tensor about the origin:
SolidWorks said:
Ixx = 256434.35
Iyy = 465234.02
Izz = 465206.26
Ixy = Iyx = -23.45
Ixz = Izx = 9.35
Iyz = Izy = 13.33

Note that the products of inertia for my calculation don't match SolidWorks. I can't for the life of me figure out what I've screwed up, but I figure that its more like that I made a mistake than SolidWorks (one would hope). Anyhow, any suggestions?

Thanks for the help!

//signed//
Christopher K. Hubley
Mechanical Engineer
Sunpower Incorporated
Athens, Ohio
--
 
Replies continue below

Recommended for you

Can't fully follow you with Matlab, but the centrifugal moments (products of inertia) cannot change from one reference to the other, as only one distance is not zero, so the products XY , YZ, ZX are all zero. Hence your result is correct.
Don't know what might be wrong with Solidworks: my guess is that Y and/or Z, instead of being exactly zero, are simply a small number that equals zero when represented with only 2 decimal digits.

prex
: Online engineering calculations
: Magnetic brakes and launchers for fun rides
: Air bearing pads
 
Might be worth starting with a couple of different sized cuboids fused together so you can hand calculate the result.

Cheers

Greg Locock


New here? Try reading these, they might help FAQ731-376
 
I apologize, I should have defined my terms in the equation:
x,y,& z are the coordinates of the centroid of the part

I0 is the moment of inertia about the centroid of the object, such that:
[pre]I0 = [ Ixx, -Ixy, -Ixz]
[-Iyx, Iyy, -Iyz]
[-Izx, -Izy, Izz][/pre]
R is the translation vector between the centroid and the origin,
R = [0;0;0]-[x;y;z]
mass is the mass of the object
dot(R,R) is the dot product of the position vector or |R|^2
eye(3,3) is a three-by-three identity matrix
R*R' is the outer product of the position vector

The parallel axis theorem in tensor form (as I understand it) is:
I = I0 + mass*(dot(R,R)*eye(3,3) - R*R')

Greg,
I'll compute the moment of inertia of a simple cylinder and report back.

Thanks for the help.

-Chris

//signed//
Christopher K. Hubley
Mechanical Engineer
Sunpower Incorporated
Athens, Ohio
--
 
Simple cylinder (oriented in the z-direction): [pre]
CoM: x=25, y=25, z=0
mass: 15.71 grams
radius: 10 mm
height: 50 mm[/pre]
I get:[pre]
I0 = [3.6657e+03, 0.0000e+03, 0.0000e+03]
[0.0000e+03, 3.6657e+03, 0.0000e+03]
[0.0000e+03, 0.0000e+03, 7.8550e+03][/pre]
and[pre]
I = [ 1.3484e+04, -9.8188e+03, 0.0000e+00 ]
[-9.8188e+03, 1.3484e+04, 0.0000e+00 ]
[ 0.0000e+00, 0.0000e+00, 2.0423e+04 ][/pre]
Solidworks, on the other hand, gives (about the CoM):[pre]
Lxx = 3665.19
Lyy = 3665.19
Lzz = 785.40[/pre]
and about the origin:[pre]
Ixx = 13482.67
Iyy = 13482.67
Izz = 20420.35
Ixy = Iyx = 9817.48
Ixz = Izx = 0
Iyz = Izy = 0[/pre]

Again, they don't seem to match up exactly... perhaps I'm seeing numerical error? I'd expect that Solidworks were a little bit more precise though...

//signed//
Christopher K. Hubley
Mechanical Engineer
Sunpower Incorporated
Athens, Ohio
--
 
Numerically, your results don't seem that far off from the SW output, as prex said your numbers are good to at least 2 sig figs, and the differences in the cross terms are likely due to the, well differencing of large numbers...

but what's bothersome is the sign change for Iyz, SW reports a (+) value where you report a (-). Still in the noise as far as the numbers go though.
 
Supplemental to this discussion, I've always wondered how a CAD program calculates volume, and therefore inertia > if anyone has a good answer to this (even if limited to a certain CAD package), I'd be interested in hearing. And, if it's some type of numerical integration of volume 'bits', it may be the reason for the discrepancies in the calculations from Christopher > manual calculation of cylinder volume is simple but when it comes to, say, a piston or crankshaft I'm at a loss to the theory & methods used by the CAD package. Since the volume calculation /must/ work for any 3D geometry, perhaps the algorithm used is still just an approximation?
 
I think that I've got this figured out. Apparently SolidWorks has an adjustable "resolution" slider under the advanced settings for mass and MoI calcs and the default setting is low. I'm going to try retrieving new numbers from SW and see if my numbers work out.

Per kirrer's comments, I think that SW is performing numerical integration behind the scenes to compute center-of-mass, volume, and moment of inertia. I'd bet that they're generating a tet-mesh behind the scenes and summing up the masses and moments of the elements. More refinement == more elements == more accuracy.

Anyhow, I'm recomputing; I think that this might have been the issue.

//signed//
Christopher K. Hubley
Mechanical Engineer
Sunpower Incorporated
Athens, Ohio
--
 
I would trust your hand calcs more than SW. But, it is useful to understand how the software performs the calculation.

[peace]
Fe (IronX32)
 
Yeah, the resolution setting in SolidWorks was the issue. Be sure to keep that in mind when using MoI numbers from SolidWorks... the default values seem to be pretty rough. Here's the updated results:
Code:
-------------------------MATLAB CODE-------------------------
I_sta  = parallel_axis([256434.342619,    -21.798039,      8.757363;...
                           -21.798039, 165497.012663,    -13.338453;...
                             8.757363,    -13.338453, 165469.252302],...
                       364.560669, 28.75278, -0.004341, 0.001737)

function I = parallel_axis(I0,mass,x,y,z);
% Function translates the moment of inertia of a body about its CM to the origin. For a point mass, use I0 = 0.
R = [0;0;0]-[x;y;z];    % Column vector from the center-of-mass to the origin
I = I0 + mass.*(dot(R,R)*eye(3,3) - R*R');
endfunction

-------------------------MATLAB RESULTS-------------------------
I_sta =

   2.5643e+05   2.3705e+01  -9.4501e+00
   2.3705e+01   4.6689e+05  -1.3336e+01
  -9.4501e+00  -1.3336e+01   4.6686e+05
The SolidWorks results for the moment about the origin (for comparison) are:
[tt]Ixx = I11 = 256434.350546
Iyy = I22 = 465234.016246
Izz = I33 = 465206.261624
Ixy = Iyx = -I12 = -I21 = -23.454951
Ixz = Iyz = -I13 = -I31 = 9.351502
Iyz = Izy = -I23 = -I32 = 13.335719
[/tt]

Much better :)

//signed//
Christopher K. Hubley
Mechanical Engineer
Sunpower Incorporated
Athens, Ohio
--
 
better ? ... SW looks very similar to your original post ??

Quote (SolidWorks):

Ixx = 256434.35
Iyy = 465234.02
Izz = 465206.26
Ixy = Iyx = -23.45
Ixz = Izx = 9.35
Iyz = Izy = 13.33


but your MATLAB has changed (a little, but then we were chasing a little difference) ...
I_stator =

2.5643e+05 -2.1800e+01 8.7600e+00
-2.1800e+01 4.6518e+05 -1.3340e+01
8.7600e+00 -1.3340e+01 4.6515e+05

since i don't use MATLAB, is it something that you use inside of SW ? (and hence affected by SW resolution)
 
rb1957,
The original output form SW didn't give me enough sig-figs, so when I did my calculations there was some numerical error that cropped up.

The worrisome part was that the signs of the products of inertia in my calculations didn't match up with what SolidWorks was generating when I computed the moment of inertia about the origin given the moment of inertia about the centroid using the parallel axis theorem.

It turns out that I needed to output more significant digits from SolidWorks to generate accurate products of inertia (since they were small relative to the moments about the axes).

//signed//
Christopher K. Hubley
Mechanical Engineer
Sunpower Incorporated
Athens, Ohio
--
 
arh, i see
("said the blind man in the dark room, looking for the black cat, that isn't there", Rowan Atkinson)
 
Status
Not open for further replies.

Part and Inventory Search

Sponsor