[Master Index]
[Index for .]
wheel2
(./wheel2.m)
Help text
%%%
Script file to generate the descripiton of a bicycle wheel.
%
Rim lies in the xy plane. axle is on the z axis.
Cross-Reference Information
This calls
Listing of ./wheel2.m
%%%%
% Script file to generate the descripiton of a bicycle wheel.
%%
% Rim lies in the xy plane. axle is on the z axis.
dof = 6; % Frame model
r_rim = 13.5; % Radius of the rim. (inches)
r_hub = 1; % radius of the spoke holes on the hub
spokes = 32; % Is this obvious or what?
flange_spacing = 3; %How far apart are the flanges
flange_offset = 1; % how far the rim is offset from the center of the flanges
n_cross = 3; %how many crosses do the spokes have.
% nodes = [x,y,z;x,y,z;...]
theta = ((1:spokes)*2*pi/spokes)';
d_theta = 2*pi/spokes;
rim_nodes = [r_rim*sin(theta),r_rim*cos(theta),zeros(spokes,1)];
%Sets up which flange goes where, and shoves it into a vector that will be the z position
% of the node assotiated with the specific spoke.
left_flange = flange_offset + flange_spacing/2;
right_flange = flange_offset - flange_spacing/2;
flanges = left_flange*ones(spokes,1);
flanges(2:2:spokes) = right_flange*ones(spokes/2,1);
%does the rotation for the crosses, one half the spokes rotate n*d_theta cw, and the other
% half go the other way. N is the number of crosses.
ccw_shift = [1:4:spokes,2:4:spokes]; %sets up which nodes rotate which way
cw_shift = [3:4:spokes,4:4:spokes];
theta_hub = theta;
theta_hub(ccw_shift) = theta_hub(ccw_shift)-2*n_cross*d_theta;
theta_hub(cw_shift) = theta_hub(cw_shift)+2*n_cross*d_theta;
hub_nodes = [r_hub*sin(theta_hub),r_hub*cos(theta_hub),flanges];
nodes = [rim_nodes;hub_nodes]
[num_nodes,nc] = size(nodes)
active_nodes = [1:spokes];
%members = [:,member] where member == [pi,pj,a,e,beta,iss,itt,j,g]
arim = .126; %% in^2 These values are for a Mavic MA40, numbers
erim = 11000000 ; %psi from Eric Topp
Iss_r = .0032; %% in^4
Itt_r = .0108; %% in^4
beta = pi/2; %% Direction of bending about the "strong" axis,
%% here towards center of the wheel
j_r = .0140; %% in^4
g_r = 4000000;%
%rim members
rim_members = [[1:spokes]',[2:spokes,1]',arim*ones(spokes,1),...
erim*ones(spokes,1),beta*ones(spokes,1),...
Iss_r*ones(spokes,1),Itt_r*ones(spokes,1),...
j_r*ones(spokes,1),g_r*ones(spokes,1)];
spoke_members = zeros(spokes,9);
a_spoke = .0049; %% for 2mm dia spoke (approx)
e_spoke = 29000000;
spoke_members(:,1) = spokes + (1:spokes)';
spoke_members(:,2) = (1:spokes)';
spoke_members(:,3) = a_spoke*ones(spokes,1);
spoke_members(:,4) = e_spoke*ones(spokes,1);
members = [rim_members;spoke_members];
%loads = [node, fx,fy,fz,mx,my,mz;...
loads = [spokes,0,1,0,0,0,0]; %% This load is at x = 0, y = r_rim.
[displacements,inv_sys_k] = solve_truss(nodes,members,active_nodes,loads,dof);
plot_truss(nodes,members,displacements);
member_forces = forces(nodes,members,displacements);
Produced by mat2html on Wed Jul 10 14:55:44 US/Pacific 1996
Cross-Directory links are: OFF