image thumbnail
flbolts.m
% 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');

Contact us at files@mathworks.com