von Mises Stress due to Centrifugal force on a rotor
9 views (last 30 days)
Show older comments
Sridhar Balasubramanian
on 4 Jun 2018
Commented: Lukas
on 12 May 2022
Hallo,
I am trying to calculate and visualise von Mises Stress due to the centrifugal forces on a rotor using Finite Element Method.
I have modelled the rotor geometry and specified the fixed boundary condition. How do I specify the centrifugal force using structuralBoundaryLoad fucntion? Is there any other convenient way?
Thanks in advance!
Sridhar
0 Comments
Accepted Answer
Ravi Kumar
on 5 Jun 2018
Hi Sridhar,
Centrifugal load is not yet supported in structural workflow. However, for a specific geometry you can define the centrifugal load as f-coefficient in the generic PDE workflow. Following example solves a spinning disk using generic workflow. Updated the function spinEffect as per your need.
% Create a model, assign a disk geometry, and generate mesh.
model = createpde(3);
gm = multicylinder([0.01,0.05],1E-3,'Void',[1,0]);
model.Geometry = gm;
generateMesh(model);
% Plot the geometry and note the face number of the hub to apply fixed BC.
pdegplot(model,'FaceLabels','on')
applyBoundaryCondition(model,'dirichlet','Face',3,'u',[0,0,0]);
% Specify material properties that defines the PDE as coefficients.
E = 210E9;
nu = 0.3;
rho = 7800;
c = elasticityC3D(E,nu);
% Specify the c-coefficient and centrifugal body load as f-coefficient.
specifyCoefficients(model,'m',0,'d',0,'c',c,'a',0,'f',@spinEffect);
% Solve the model and plot resultant displacement
R = solvepde(model);
figure
title('Displacement of spinning disk')
pdeplot3D(model,'ColorMapData',sqrt(R.NodalSolution(:,1).^2 + R.NodalSolution(:,2).^2+R.NodalSolution(:,3).^2))
% Find stress components using evaluateCGradient function.
[cgradx,cgrady,cgradz] = evaluateCGradient(R);
% Note that each output argument from evaluateCGradient is a matrix of size
% number of nodes x 3, sxx = cgradx(:,1), sxy = cgradx(:,2)... and so
% on.
sxx = cgradx(:,1);
sxy = cgradx(:,2);
sxz = cgradx(:,3);
syx = cgrady(:,1);
syy = cgrady(:,2);
syz = cgrady(:,3);
szx = cgradz(:,1);
szy = cgradz(:,2);
szz = cgradz(:,3);
sVonMises = sqrt( 0.5*( (sxx-syy).^2 + (syy -szz).^2 +...
(szz-sxx).^2) + 3*(sxy.^2 + syz.^2 + szx.^2));
figure
title('von Mises stress of spinning disk')
pdeplot3D(model,'ColorMapData',sVonMises)
function f = spinEffect(region,~)
xcg = 0; ycg = 0;
[theta,r] = cart2pol(region.x-xcg,region.y-ycg);
rho = 7800; % density.
omega = 1047; % rad/sec, about 10,000 rpm.
f = rho*omega^2.*[r.*cos(theta);r.*sin(theta);zeros(1,numel(region.y))];
end
Regards, Ravi
9 Comments
Ahmed MALIM
on 19 Jun 2020
Thanks
What about the other axis of rotation and why did you put the z component of the centrifugal force equal to zero ??
f = rho*omega^2.*[r.*cos(theta);r.*sin(theta);zeros(1,numel(region.y))];
the expression [r.*cos(theta);r.*sin(theta);zeros(1,numel(region.y))] should present the distance between each element or node and the axis of rotation? isn't it ? would you please explain it to me?
Best regards,
Ahmed
Lukas
on 12 May 2022
Hello, I want to simulate the same, but I want to have magnets in it additionally. How would you solve this? Two different materials in one geometry. Would you separate the rotor model in areas of magnet and iron, and just solve two different problems. Or is there a way to calculate it as a whole rotor.
Best regards,
Lukas
More Answers (0)
See Also
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!