% Example: flbolts
% ~~~~~~~~~~~~~~~~
% This example determines the stresses
% in the bolts of a flange coupling.
%
% Data is defined in the declaration statements
% below, where:
%
% Torque - applied torque
% Bolt_diameter - vector of bolt
% diameters at each radius
% Radius_arm_bolts - vector of radius arms
% No_bolts_at_radius - vector with the number
% of bolts at each radius
%
% User m functions required:
% circle, genprint
%----------------------------------------------
clear;
%...Input definitions
Problem=1;
if Problem == 1
Torque=1e5;
Bolt_diameter =[0.25 0.25 0.5];
Radius_arm_bolts =[3 5 7 ];
No_bolts_at_radius=[3 5 7 ];
end
No_circles=length(No_bolts_at_radius);
pi4=pi/4; b=zeros(No_circles,1);
A=zeros(No_circles,No_circles);
%........................................
%...Set up & solve simultaneous equations
%........................................
%...Coefficients from linear stress requirement
for i=1:No_circles-1
for j=1:No_circles
if i == j
A(i,j)=Radius_arm_bolts(i+1);
end
if i == j-1
A(i,j)= -Radius_arm_bolts(i);
end
end
end
%...Coefficients from statics
b(No_circles)=abs(Torque);
A(No_circles,:)=No_bolts_at_radius.* ...
(pi4*Radius_arm_bolts).* ...
Bolt_diameter.^2;
%...Solve
Tau=A\b; Tau=Tau';
%...Verify equilibrium
Check=sum(No_bolts_at_radius.* ...
(pi4*Radius_arm_bolts).* ...
Bolt_diameter.^2.*Tau);
fprintf( ...
'\n\nBolt Stresses for a Flange Coupling');
fprintf( ...
'\n-----------------------------------');
for i=1:No_circles
fprintf('\n\nBolt circle: %g',i);
fprintf( ...
'\n Number of bolts: %g', ...
No_bolts_at_radius(i));
fprintf( ...
'\n Bolt diameter: %g', ...
Bolt_diameter(i));
fprintf( ...
'\n Radius arm for bolt circle: %g', ...
Radius_arm_bolts(i));
fprintf( ...
'\n Stress: %g', ...
Tau(i));
end
fprintf('\n\nEquilibrium check');
fprintf('\n Applied Torque: %g',Torque);
fprintf('\n Computed Torque: %g',Check);
fprintf('\n');
%...Assume shaft is a bit larger than last
%...bolt ring
radius=1.25*Radius_arm_bolts(No_circles);
[xs,ys]=circle(50,0,0,radius);
clf;
plot(xs,ys,'-'); hold on;
for i=1:No_circles
%...Bolt ring circles
[x,y]=circle(50,0,0,Radius_arm_bolts(i));
plot(x,y,':');
%...Location of bolts in each ring
[x,y]=circle(No_bolts_at_radius(i), ...
0,0,Radius_arm_bolts(i));
%...Plot each bolt
for j=1:No_bolts_at_radius(i)
[xb,yb]=circle(20,x(j),y(j), ...
Bolt_diameter(i)/2);
plot(xb,yb,'-');
end
end
axis('equal');
title('Stresses in Bolts of Flange Coupling');
xlabel('x'); ylabel('y'); hold off; drawnow;
% genprint('flange');