vehicle dynamics week 2 set 2
1, Calculate the following parameters. Use the same front and rear spring rates for all three load conditions.The front sprung mass natural frequency target at half load is 1.15 Hz. Keep this fixed(20 points)
- Recommended rear sprung mass frequency based on speed and wheelbase at half load condition (2 points)
- Front sprung mass natural frequency at half load . This will be based on (i). (1 point)
- Front spring rate (2 points)
- Rear spring rate (2 points)
- Front sprung mass natural frequencies at curb and GVW (2 points)
- Rear sprung mass natural frequencies at curb and GVW (2 points)
- Front unsprung mass natural frequency at all three load conditions (3 points)
- Rear unsprung mass natural frequency at all three load conditions (3 points)
- Rear/Front frequency ratio for all three load conditions (3 points)
2, Plot the bump oscillation profile for all three load conditions using the method we developed in class. Submit the octave code(10 points)

please see the following matlab file:
https://drive.google.com/file/d/1GICk4ZA9EObV8Qw84QLpc9lelc9dxH5t/view?usp=sharing
code:
clear all
close all
clc
tire_rate=245000
target_front_freq=1.15
timelag=2.7/(60*0.4470)
target_rear_freq=1/((1/target_front_freq)-timelag)
spring_rate=28085
spring_rate_rear=39245
%corner_weight_design
total_design=1825
corner_weight_unsprung_front=90/2
corner_weight_unsprung_rear=60/2
front_ratio=0.55
rear_ratio=1-front_ratio
axle_front=total_design*front_ratio
axle_rear=total_design*rear_ratio
corner_front_sprung=(axle_front/2)-corner_weight_unsprung_front
corner_rear_sprung=(axle_rear/2)-corner_weight_unsprung_rear
motion_ratio_front_design=0.97
motion_ratio_rear_design=0.85
wheel_rate_front=(spring_rate)*((motion_ratio_front_design)^2)
ride_rate_front=(wheel_rate_front*tire_rate)/(wheel_rate_front+tire_rate)
nat_freq_front=(1/(2*pi))*(sqrt((ride_rate_front)/(corner_front_sprung)))
wheel_rate_rear=(spring_rate_rear)*((motion_ratio_rear_design)^2)
ride_rate_rear=(wheel_rate_rear*tire_rate)/(wheel_rate_rear+tire_rate)
nat_freq_rear=(1/(2*pi))*(sqrt((ride_rate_rear)/(corner_rear_sprung)))
%curb calculations
total_curb=1500
corner_weight_unsprung_front_curb=90/2
corner_weight_unsprung_rear_curb=60/2
front_ratio_curb=0.6
rear_ratio_curb=1-front_ratio_curb
axle_front_curb=total_curb*front_ratio_curb
axle_rear_curb=total_curb*rear_ratio_curb
corner_front_sprung_curb=(axle_front_curb/2)-corner_weight_unsprung_front_curb
corner_rear_sprung_curb=(axle_rear_curb/2)-corner_weight_unsprung_rear_curb
motion_ratio_front_design=0.97
motion_ratio_rear_design=0.85
wheel_rate_front=(spring_rate)*((motion_ratio_front_design)^2)
ride_rate_front=(wheel_rate_front*tire_rate)/(wheel_rate_front+tire_rate)
nat_freq_front_curb=(1/(2*pi))*(sqrt((ride_rate_front)/(corner_front_sprung_curb)))
wheel_rate_rear=(spring_rate_rear)*((motion_ratio_rear_design)^2)
ride_rate_rear=(wheel_rate_rear*tire_rate)/(wheel_rate_rear+tire_rate)
nat_freq_rear_curb=(1/(2*pi))*(sqrt((ride_rate_rear)/(corner_rear_sprung_curb)))
%GVW_dsign:
total_GVW=2000
corner_weight_unsprung_front_GVW=90/2
corner_weight_unsprung_rear_GVW=60/2
front_ratio_GVW=0.52
rear_ratio_GVW=1-front_ratio_GVW
axle_front_GVW=total_GVW*front_ratio_GVW
axle_rear_GVW=total_GVW*rear_ratio_GVW
corner_front_sprung_GVW=(axle_front_GVW/2)-corner_weight_unsprung_front_GVW
corner_rear_sprung_GVW=(axle_rear_GVW/2)-corner_weight_unsprung_rear_GVW
motion_ratio_front_design=0.97
motion_ratio_rear_design=0.85
wheel_rate_front=(spring_rate)*((motion_ratio_front_design)^2)
ride_rate_front=(wheel_rate_front*tire_rate)/(wheel_rate_front+tire_rate)
nat_freq_front_GVW=(1/(2*pi))*(sqrt((ride_rate_front)/(corner_front_sprung_GVW)))
wheel_rate_rear=(spring_rate_rear)*((motion_ratio_rear_design)^2)
ride_rate_rear=(wheel_rate_rear*tire_rate)/(wheel_rate_rear+tire_rate)
nat_freq_rear_GVW=(1/(2*pi))*(sqrt((ride_rate_rear)/(corner_rear_sprung_GVW)))
%unsprung weight design
corner_weight_unsprung_front=90/2
corner_weight_unsprung_rear=60/2
wheel_rate_front=(spring_rate)*((motion_ratio_front_design)^2)
ride_rate_front_unsprung=(wheel_rate_front+tire_rate)
nat_freq_front_unsprung_design=(1/(2*pi))*(sqrt((ride_rate_front_unsprung)/(corner_weight_unsprung_front)))
wheel_rate_rear=(spring_rate_rear)*((motion_ratio_rear_design)^2)
ride_rate_rear_unsprung=(wheel_rate_rear+tire_rate)
nat_freq_rear_unsprung_design=(1/(2*pi))*(sqrt((ride_rate_rear_unsprung)/(corner_weight_unsprung_rear)))
%unsprung nat freq curb
nat_freq_front_unsprung_curb=(1/(2*pi))*(sqrt((ride_rate_front_unsprung)/(corner_weight_unsprung_front)))
nat_freq_rear_unsprung_curb=(1/(2*pi))*(sqrt((ride_rate_rear_unsprung)/(corner_weight_unsprung_rear)))
%unsprung frq. GVW
nat_freq_front_unsprung_GVW=(1/(2*pi))*(sqrt((ride_rate_front_unsprung)/(corner_weight_unsprung_front)))
nat_freq_rear_unsprung_GVW=(1/(2*pi))*(sqrt((ride_rate_rear_unsprung)/(corner_weight_unsprung_rear)))
%frequency ratio
freq_ratio_design=nat_freq_rear/nat_freq_front
freq_ratio_design_unsprung=nat_freq_rear_unsprung_design/nat_freq_front_unsprung_design
freq_ratio_curb=nat_freq_rear_curb/nat_freq_front_curb
freq_ratio_curb_unsprung=nat_freq_rear_unsprung_curb/nat_freq_front_unsprung_curb
freq_ratio_GVW=nat_freq_rear_GVW/nat_freq_front_GVW
freq_ratio_GVW_unsprung=nat_freq_rear_unsprung_GVW/nat_freq_front_unsprung_GVW
time=linspace(0,3,300)
for i=1:length(time)
t=time(i)
front_damped_freq_design(i)=exp(-t)*sin(2*pi*nat_freq_front*t)
rear_damped_freq_design(i)=exp(-t)*sin(2*pi*nat_freq_rear*(t-timelag))
front_damped_freq_curb(i)=exp(-t)*sin(2*pi*nat_freq_front_curb*t)
rear_damped_freq_curb(i)=exp(-t)*sin(2*pi*nat_freq_rear_curb*(t-timelag))
front_damped_freq_GVW(i)=exp(-t)*sin(2*pi*nat_freq_front_GVW*t)
rear_damped_freq_GVW(i)=exp(-t)*sin(2*pi*nat_freq_rear_GVW*(t-timelag))
i=i+1
end
subplot(1,3,1)
plot(time,front_damped_freq_curb);
hold on
plot(time,rear_damped_freq_curb);
title('Bump oscillation at curb weight');
xlabel('Time(s)');
ylabel('Amplitude');
legend('Front','Rear');
grid on
subplot(1,3,2)
plot(time,front_damped_freq_design);
hold on
plot(time,rear_damped_freq_design);
title('Bump oscillation at design load');
xlabel('Time(s)');
ylabel('Amplitude');
legend('Front','Rear');
grid on
subplot(1,3,3)
plot(time,front_damped_freq_GVW);
hold on
plot(time,rear_damped_freq_GVW);
title('Bump oscillation at GVW');
xlabel('Time(s)');
ylabel('Amplitude');
legend('Front','Rear');
grid on
steps:
1-timelag is calculated from target front frequency
2-then the target rear frequency is calculated
3-then corner weight is calculated at design condition
4-then the wheel rate and the ride rates are calculated at design condition
5-then front spring rate is chosen and the actual front natural frequency is calculated at design load
6-then in an iterative process the front spring rate is changed until it matches the target frequency specified at design load
7-the same process happens in the rear where also the rear spring rate is chosen and then changed until it matches the rear target frequency at design load
8-then corner weights are calculated for curb condition and then the natural frequency front and rear is calculated
9-then corner weights for GVW condition is calculated and natural frequency front and rear is calculated
10-then unsprung corner weights are calculated front and rear
11-then the unsprung ride rate and natural frequency is calculated for the three load condition for front and rear
12-then the function the natural frequency function is multiplied by negative exponential component in order to plot the damped natural frequency
13-in order to do that linspace command is used which calculates the output 300 times between 0 and 3 seconds
14-then for loop command is used to plot the functions at every time increment for the 300 increments set by the linspace command
15-then subplot command is used to plot the curves in the same figure and hold on command is used to plot the front and rear curves on the same plot
output plots:
