17
Modeling the Collapse of Galloping Gertie Bridge Over Troubled Water Kasen Culler Roman Drake Brady Lee Brett Sleyster

Lab 3

Embed Size (px)

DESCRIPTION

Lab 3

Citation preview

Modeling the Collapse of Galloping Gertie Bridge Over Troubled Water Kasen Culler Roman Drake Brady Lee Brett Sleyster This report is dedicated to Tubby Coatsworth, the lone casualty of the collapse of the Tacoma Narrows Bridge. The captain goes down with the ship, and so Tubby went down with his owners car. Tubby was a loyal and fearless companion, his bravery exceeded only by his ignorance of the mathematical information contained herein. Introduction On November 7, 1940, a bridge spanning the Tacoma Narrows in Washington collapsed, resulting in the death of an innocent cocker spaniel named Tubby. The collapse was a result of oscillations caused by 42mph winds. By simplifying some of the more complicated details of the collapse, such as assuming the bridges vertical suspension cables do not move horizontally during the oscillations or that the roads center of mass does not move vertically, the oscillations which resulted in the bridges collapse can be modeled using a differential equation. The motion of a section of the bridge can be modeled by the second-order differential equation:

2

2 = 2 cos() [esin esin] Equation 1 where =0.6 is a dimensionless parameter. This equation represents a system with no damping or externally applied forcing. A variation of the Runge-Kutta method is used to determine the motion as a function of time for different initial conditions.The equation representing a cross-section of the bridge with damping and externally applied forcing is:

2

2 = 0 (0)

2 () [

] The goal of this lab is to use MATLAB in conjunction with these equations to simulate the oscillations of the Tacoma Narrows Bridge on the day it collapsed. Specifically, plots angle of rotation versus time and angular velocity versus time can be produced, and characteristics of the bridge such as the period of oscillation can be calculated. Also, the steady-state response curve of the bridge will be determined for the second differential equation above. In other words, MATLAB will be used to find the amplitude of the oscillations after all the transients have died out, or after the bridge has achieved recurring steady oscillations. Task 1 Equation 1 from the introduction can be rewritten by defining d/dt as (t). The equation then becomes (t) = 2 cos() [esinesin] Equation 2 The Runge-Kutta method can now be used to solve the system. The code for a program that solves the system given by Equation 2 (with initial condition 0=/4, 0=0) is included in the appendix. The program models the system for one period of motion. The program pre-allocates a vector to be used for theta and omega and gives an error message if the number of computations exceeds the size of the vector. The period of the motion can be calculated using linear interpolation, in which the straight line between the final and penultimate values of (t, ) is calculated and used to find the value for t at which equals 0. Task 2 The step-size for the Runge-Kutta program needs to be reduced to around 0.00001s to yield a period that is accurate to 4 decimal places. For 0=/4, T=4.7324s. Figures 1 and 2 display the graphs of and for this initial condition as a function of time for one period of motion. Task 3 Figures 3 and 4 display the graphs of and for the initial condition 0=0.99/2. In this case, compared to the initial condition 0=/4, the period has increased to T=13.9187s. The maximum is, of course, greater, indicating further tilting of the bridge. The maximum angular velocity is also greater, indicating more sudden movements. remains near zero for the initial part of the period. This means that is not changing very much when it is near its maximum value. In other words, the bridge remains at its most tilted position until suddenly shifting to the same degree of tilt in the opposite direction. For 0=/2, only ever equals 0, so the bridge is constantly tilted vertically. Figure 1: (t) for 0= /4 Figure 2: (t) for 0= /4 Figure 3: (t) for 0=0.99/2 Figure 4: (t) for 0= 0.99/2 Task 4 As 0 increases, the maximum value of obviously increases. For larger values of 0, the maximum (which occurs at =0) increases. Indeed the at any particular value of increases as 0 increases. This can be seen in Figure 5, which shows the phase plots of and for 0 from /16 to 7/16. As 0 nears /2, the phase plot becomes more oblong. For values of 0 close to /2, an equal shift in does not increase as dramatically compared to phase plots of 0 farther from /2. Figure 5: Phase Plots of and Task 6 As 0 increases from 0 to /2, the period of the motion increases as well. This is consistent with the results obtained in Tasks 2 and 3 in which T increased as 0 increased. The period is increasing at an increasing rate until it asymptotes at 0=/2, where the period does not exist because the bridge is undergoing no motion. This result is shown in Figure 6. Figure 6: Period vs. Initial Theta from 0=0.01/2 to 0=0.99/2 Task 7 Damping and an external force can be added to Equation 1 so it becomes

2

2 = 0 (0)

2 () [

] Equation 3 The MATLAB code from Task 1 can be modified to find the steady state of this equation, with f0 = 0.1, c = 0.08, and = 0.6. It does so by performing the Runge-Kutta method for a large amount of time to move the system to its steady state. It then uses the final values from this computation as the initial condition and solves the system for one period further and computes the maximum value of . This code is included in the appendix. Task 8 Using the procedure in Task 7, forcing frequency 0 was varied from 0.8 to 2.0 and then back to 0.8, with the steady state conditions of the previous 0 functioning as initial conditions when determining the amplitude at each value of 0. This code is included in the appendix. The changing of 0 models the frequency of the wind velocity increasing and then decreasing. Figure 7 shows a graph of the amplitude of the steady-state response curve at values of 0 from 0.8 to 2.0, as well as the amplitude of the linear oscillation for a given frequency (according to data from Task 6). According to the graph, when 0 is increasing, the system reaches a resonant case where its amplitude peaks sharply before gradually decreasing. When 0 is decreasing, the amplitude increases gradually until it reaches a different resonant case at a lower forcing frequency and higher amplitude. At this new resonant case, the amplitude decreases sharply to the same path as the case where frequency was increasing. The most glaring anomaly of the nonlinear case is the presence of two resonant frequencies. Figure 7: Amplitude vs. Frequency for Increasing and Decreasing Forcing Frequencies and the Linear System Conclusion The MATLAB plots from Task 3, the linear case, indicate that the period of oscillation when 0 is 0.99/2 is greater than that when 0 is /4. However, when the 0 is /2, the cross-section being examined is completely vertical, and only equals 0. is generally close to 0 during the beginning and end of the period, indicating that the bridge moves slowly while at its maximum tilt and then quickly flips to the same degree of tilt in the opposite direction. As 0 increases, the maximum values of and increase. Also, for values of 0 close to /2, a larger shift in is required to change the value of some specific amount than for values of 0 farther from /2. The results of Task 6 confirm that the period of oscillation increases as goes from 0 to /2. For the nonlinear case, and the simulation in which 0 was varied from 0.8 to 2 and back again to represent the frequency of the wind velocity increasing and decreasing, the system reaches a resonant case where its amplitude peaks sharply before gradually decreasing when 0 is increasing. When 0 is decreasing, the amplitude increases until it reaches a different resonant case at a lower forcing frequency and higher amplitude. In this case, the amplitude decreases rapidly and then joins the path of the amplitude when 0 is increasing. The wind in Tacoma on November 7, 1940, likely increased and decreased in such a way that the Tacoma Narrows Bridge neared its resonant case, resulting in the galloping effect seen in the video of its collapse. Eventually, the amplitude of the oscillations was high enough to tear the bridge apart. Appendix Task 2: theta=pi/4; %theta=0.99*pi/2 for Task 3 t=0; Wold=0; %this is a variable meaning "omega old" which will be used to stop the while loop Wnew=0; %omega new" nsteps=1; thetavector=zeros(1,15000000); %arbitrarily large input vector pre-allocated Wvector=thetavector; thetavector(1)=theta; h=0.00001; %this step size calculates the period accurate to four decimal places (h=0.000001 for Task 3) while Wold=0 %this will stop the calculations when omega moves from positive to negative Wold=Wnew; nsteps=nsteps+1; if nsteps>size(Wvector) error('number of steps has exceeded the size of the allocated matrix') end %The following Runge-Kutta method must calculate new values for both omega and theta. W1=W0+h*k, theta1=theta0+h*W W1=Wold; k1=-2*cos(theta)*(exp(0.6*sin(theta))-exp(-0.6*sin(theta))); W2=Wold+h*k1/2; k2=-2*cos(theta+h/2*W2)*(exp(0.6*sin(theta+h/2*W2))-exp(-0.6*sin(theta+h/2*W2))); W3=Wold+h*k2/2; k3=-2*cos(theta+h/2*W3)*(exp(0.6*sin(theta+h/2*W3))-exp(-0.6*sin(theta+h/2*W3))); W4=Wold+h*k3; k4=-2*cos(theta+h*W4)*(exp(0.6*sin(theta+h*W4))-exp(-0.6*sin(theta+h*W4))); Wnew=Wold+h/6*(k1+2*k2+2*k3+k4); theta=theta+h*Wnew; thetavector(nsteps)=theta; Wvector(nsteps)=Wnew; end thetavector(nsteps+1:end)=[]; Wvector(nsteps+1:end)=[]; tvector=h*(0:(nsteps-1)); T=tvector(nsteps-1)+h*(Wold/(Wold-Wnew)) %this uses linear interpolation to find the t-intercept of omega plot(tvector,Wvector) title('Omega vs. Time') xlabel('time') ylabel('omega') figure() plot(tvector,thetavector,'r') title('Theta vs. Time') xlabel('time') ylabel('theta') Task 4: for theta=(pi/16:pi/16:7*pi/16); Wold=0; %this is a variable meaning "omega old" which will be used to stop the while loop Wnew=0; %omega new" nsteps=1; thetavector=zeros(1,1000000); %arbitrarily large input vector pre-allocated Wvector=thetavector; thetavector(1)=theta; h=0.0001; %step size has been increased to make the program run faster while Wold=0 %this will stop the calculations when omega moves from positive to negative Wold=Wnew; nsteps=nsteps+1; if nsteps>size(Wvector) error('number of steps has exceeded the size of the allocated matrix') end %The following Runge-Kutta method must calculate new values for both omega and theta. W1=W0+h*k, theta1=theta0+h*W W1=Wold; k1=-2*cos(theta)*(exp(0.6*sin(theta))-exp(-0.6*sin(theta))); W2=Wold+h*k1/2; k2=-2*cos(theta+h/2*W2)*(exp(0.6*sin(theta+h/2*W2))-exp(-0.6*sin(theta+h/2*W2))); W3=Wold+h*k2/2; k3=-2*cos(theta+h/2*W3)*(exp(0.6*sin(theta+h/2*W3))-exp(-0.6*sin(theta+h/2*W3))); W4=Wold+h*k3; k4=-2*cos(theta+h*W4)*(exp(0.6*sin(theta+h*W4))-exp(-0.6*sin(theta+h*W4))); Wnew=Wold+h/6*(k1+2*k2+2*k3+k4); theta=theta+h*Wnew; thetavector(nsteps)=theta; Wvector(nsteps)=Wnew; end thetavector(nsteps+1:end)=[]; Wvector(nsteps+1:end)=[];

%because the programmers are slightly inept, the next 17 lines are devoted %to plotting the parametric curves in different colors. Because the %programmers are fabulous, the curves are plotted in as close to rainbow as %possible. if thetavector(1)==pi/16 plot(thetavector,Wvector,'r') elseif thetavector(1)==2*pi/16 plot(thetavector,Wvector,'y') elseif thetavector(1)==3*pi/16 plot(thetavector,Wvector,'g') elseif thetavector(1)==4*pi/16 plot(thetavector,Wvector,'c') elseif thetavector(1)==5*pi/16 plot(thetavector,Wvector,'b') elseif thetavector(1)==6*pi/16 plot(thetavector,Wvector,'m') else plot(thetavector,Wvector,'k') end hold on end title('Theta vs. Omega for Different Initial Theta') xlabel('theta') ylabel('omega') Task 6: n=0; Tvector=zeros(1,99); for theta=(0.01*pi/2:0.01*pi/2:0.99*pi/2) n=n+1; t=0; Wold=0; %this is a variable meaning "omega old" which will be used to stop the while loop Wnew=0; %omega new" nsteps=1; thetavector=zeros(1,10000000); %arbitrarily large input vector pre-allocated Wvector=thetavector; thetavector(1)=theta; h=0.0001; %step size has been increased to make the program run faster while Wold=0 %this will stop the calculations when omega moves from positive to negative Wold=Wnew; nsteps=nsteps+1; if nsteps>size(Wvector) error('number of steps has exceeded the size of the allocated matrix') end %The following Runge-Kutta method must calculate new values for both omega and theta. W1=W0+h*k, theta1=theta0+h*W W1=Wold; k1=-2*cos(theta)*(exp(0.6*sin(theta))-exp(-0.6*sin(theta))); W2=Wold+h*k1/2; k2=-2*cos(theta+h/2*W2)*(exp(0.6*sin(theta+h/2*W2))-exp(-0.6*sin(theta+h/2*W2))); W3=Wold+h*k2/2; k3=-2*cos(theta+h/2*W3)*(exp(0.6*sin(theta+h/2*W3))-exp(-0.6*sin(theta+h/2*W3))); W4=Wold+h*k3; k4=-2*cos(theta+h*W4)*(exp(0.6*sin(theta+h*W4))-exp(-0.6*sin(theta+h*W4))); Wnew=Wold+h/6*(k1+2*k2+2*k3+k4); theta=theta+h*Wnew; thetavector(nsteps)=theta; Wvector(nsteps)=Wnew; end thetavector(nsteps+1:end)=[]; Wvector(nsteps+1:end)=[]; tvector=h*(0:(nsteps-1)); T=tvector(nsteps-1)+h*(Wold/(Wold-Wnew)); %this uses linear interpolation to find the t-intercept of omega Tvector(n)=T; end plot((0.01*pi/2:0.01*pi/2:0.99*pi/2),Tvector) title('Period vs. Initial Theta') xlabel('initial theta') ylabel('period') Task 7: % bridge initially stable theta = 0; Wnew = 0; w0 = 1; t=0; tfinal = 100*(2*pi/w0); % long enough for transient to die out h=0.0001;

while t