Part A

Time to move closer to real world applications. Convert your
Homework 8 program to use a banded direct method
such as dgbfa/dgbsl
to provide solution of the system of linear equations rather than the
dgefa/dgesl full matrix solver. Read the
comments in dgbfa carefully to understand how to
construct your sparse data storage for the matrix. You can
also consult my solution to HW3
for an example of implementation of dgbfa and dgbsl. (In case you
haven't figured it out yet, with the right selection of variable values
in DataM.f90, my HW4 sample is fully capable of transient calculations.)

Part B

Now upgrade your program from homework 8, so that it will run the same problem with Fully Explicit, Fully Implicit, or Crank-Nicholson methods. As a first step in the homework, derive the stability limit for the 2-D fully explicit method, using a von Neumann (Fourier) approach. Provide me with your derivation and install lines in your program that will not let the time step exceed this limit if a fully explicit method has been selected. To demonstrate that your program is running correctly do the following:

- Run all three methods on the 3x3 grid for a 5 second transient and a time step of 0.0001 seconds. Plot the time history of the central volume's temperature for all three methods on Figure 1 of your report. The curves should overlay.
- Make four more runs for the fully implicit method with time step sizes of 0.05, 0.1, 0.2, and 0.4 seconds.. Plot the time histories together with the original 0.0001 case on Figure 2 of your report. Limit your temperature axis between 300K and 650K.
- Make four more runs for the Crank-Nicholson method with time step sizes of 0.05, 0.1, 0.2, and 0.4 seconds. Plot these time histories together with the original 0.0001 case on Figure 3. Again, limit your temperature axis between 300K and 650K.
- For the explicit method make runs to 0.8 second with time steps of 0.001, 0.002, and 0.004 seconds on a 9x9 mesh (the stability limit is about 4.5e-3). At 0.8 seconds apply Richard Extrapolation analysis of time discretization error to all points on your mesh, but do not include any points for which you would generate the logrithm of a negative number when calculating the order of accuracy. Provide me with the estimates of mean absolute error and average order of accuracy associated with the lowest time step size. Also provide me with minimum and maximum absolute error and minimum and maximum order of accuracy from all valid values calculated on the mesh. If you extract data to a spreadsheet or other analysis package be certain to carry enough significant figures to do a meaningful error analysis.
- Repeat the analysis in the previous item using a fully implicit method and timesteps of 0.01, 0.02, and 0.04
- Repeat the item 4 analysis using a fully implicit method and time steps of 0.1, 0.2, and 0.4
- Repeat the item 4 analysis using a Crank Nicholson method and time steps of 0.01, 0.02, and 0.04
- Repeat the item 4 analysis using a Crank Nicholson method and time steps of 0.1, 0.2, and 0.4