Moment of Inertia Tensor - Parallel Axis Therom
Moment of Inertia Tensor - Parallel Axis Therom
(OP)
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:
Which produces:
Now if you compare those results to the picture, Solidworks gives the following for the inertia tensor about the origin:
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!
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');
-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
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:
Quote (SolidWorks):
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
--
http://engineeringliberty.wordpress.com





RE: Moment of Inertia Tensor - Parallel Axis Therom
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
http://www.xcalcs.com : Online engineering calculations
http://www.megamag.it : Magnetic brakes and launchers for fun rides
http://www.levitans.com : Air bearing pads
RE: Moment of Inertia Tensor - Parallel Axis Therom
Cheers
Greg Locock
New here? Try reading these, they might help FAQ731-376: Eng-Tips.com Forum Policies http://eng-tips.com/market.cfm?
RE: Moment of Inertia Tensor - Parallel Axis Therom
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
--
http://engineeringliberty.wordpress.com
RE: Moment of Inertia Tensor - Parallel Axis Therom
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
--
http://engineeringliberty.wordpress.com
RE: Moment of Inertia Tensor - Parallel Axis Therom
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.
RE: Moment of Inertia Tensor - Parallel Axis Therom
//signed//
Christopher K. Hubley
Mechanical Engineer
Sunpower Incorporated
Athens, Ohio
--
http://engineeringliberty.wordpress.com
RE: Moment of Inertia Tensor - Parallel Axis Therom
RE: Moment of Inertia Tensor - Parallel Axis Therom
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
--
http://engineeringliberty.wordpress.com
RE: Moment of Inertia Tensor - Parallel Axis Therom
Fe (IronX32)
RE: Moment of Inertia Tensor - Parallel Axis Therom
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
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
Much better :)
//signed//
Christopher K. Hubley
Mechanical Engineer
Sunpower Incorporated
Athens, Ohio
--
http://engineeringliberty.wordpress.com
RE: Moment of Inertia Tensor - Parallel Axis Therom
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)
RE: Moment of Inertia Tensor - Parallel Axis Therom
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
--
http://engineeringliberty.wordpress.com
RE: Moment of Inertia Tensor - Parallel Axis Therom
("said the blind man in the dark room, looking for the black cat, that isn't there", Rowan Atkinson)