Overview of the Demonstration Programs
Overview of the Demonstration Programs
G.D. Byrne
Departments of Applied Mathematics and
Chemical & Environmental Engineering
Illinois Institute of Technology
Chicago, IL 60616
gdbyrne847@yahoo.com,
S. Thompson
Department of Mathematics and Statistics
Radford University
Radford, VA 24142,
thompson@radford.edu
Overview
The demonstration programs illustrate the use of the Fortran 90 ordinary differential equation (ODE) VODE_F90 which is an extension of the wellknown f77 VODE solver. VODE_F90 is applicable to initial value problems of the form
y'(t) = f(t,y(t)), y(t_{0}) = y_{0} . 

Several extensions were incorporated in VODE_F90. In particular, it contains an option for root finding ("event location"); and it contains an option to accommodate sparse Jacobians. It has also an option to impose bounds on the solution y(t) . The demonstration programs illustrate the use of these options as well as others.
Most of the demonstration programs have an accompanying MATLAB script for plotting the solution generated by the program. To run the demonstration programs you will need to first obtain the solver file vode_double_m.f90 (or vode_single_m.f90) from the solver source code directory. If you encounter any difficulties with the demonstration programs or have questions regarding them, please contact the authors. Please note that the demo programs are still being refined; so they may change at any time.
The programs reside in directories each containing subdirectories for different problems.
Following is a brief summary of what the various demonstration programs do and what each is intended to illustrate. If you click on the link for any demo program, you can download it and other related files.

DemoHarmonic:
The program demoharmonic.f90 solves a problem involving two coupled harmonic oscillators from the book Solving ODEs with MATLAB by Shampine, Gladwell, and Thompson. Root finding is used to construct Poincare maps for the system. The script demoharmonic.m generates a MATLAB plot of the Poincare maps.

DemoLaser:
The program demolaser.f90 solves a model for a ruby laser from the paper "Stiff ODE Solvers: A Review of Current and Coming Attractions" by G.D. Byrne and A.C. Hindmarsh, J. Comput. Phys., Vol.70, 1 (1987). The problem is stiff initially and is oscillatory later. The script demolaser.m generates MATLAB plots of the solution components.

DemoFran:
In the paper "Bifurcations for Tori and Phase Locking in a Dissipative System of Differential Equations" by V. Franceschini, (Physica 6D, 1983, pp. 285304), the author considers properties of attractors for the solution. The shapes of the attractors change as a critical system parameter changes. The program demofran.f90 uses root finding to reproduce several of the attractors. The script demofran.m generates MATLAB plots of the attractors. Note that since many thousands of points for several attractors are located using root finding, this program takes a few minutes to run.

DemoKnee:
This program solves a problem discussed in the paper "Nonnegative Solutions of ODEs" by Shampine, Thompson, Kierzenka, and Byrne. The problem is a wellknown model in which one of the components becomes negative as it rounds the bend in a "knee" in the problem. It causes difficulty for several ODE solvers. The program demoknee.f90 enforces nonnegativity of the solution to prevent this and to ensure that the numerical solution follows the correct solution branch after the bend. The script demoknee.m generates a MATLAB plot of the solution.

Demosf:
In the paper "Efficient Automatic Integration of Ordinary Differential Equations with Discontinuities," by D. Ellison, Math. Comp. Simulation, Volume XXIII, 1981, pp. 190196, the motion of a block sliding across a surface is considered. The program demosf.f90 uses root finding to track the motion of the block by locating the times at which the block sticks and unsticks. The script demosf.m generates MATLAB plots of the solution components.
 DemoHumCol:
This problem solves a model of a humidification column from the book Dynamic Modeling of Transport Process Systems by C.A. Silebi and W.E. Schiesser. Bill Schiesser kindly allowed us to translate his f77 DSS/2 spatial differentiation routines to Fortran 90 and include the translated version for use with this program. The program demohum21.f90 recomputes the sparsity pattern after it changes in this method of lines model and solves the desired problem. The script demohum21.m generates MATLAB plots of selected solution components. DSS/2 subroutines are used to generate line plots of the solution, eigenvalues of the Jacobian matrix, and Jacobians maps. We note that DSS/2 is now a part of the programs in the above book and that the original f77 version is now freely available here . In addition, the same site contains information on an entire library of models amenable to solution in a manner similar to this problem. You can do no better than spend time checking out the library of available models to get a taste of applied modelling of PDEs at its best.

DemoPolymer:
The program demop11.f90 solves a model of a convective moving polymer sheet communicated to us by W.E. Schiesser for use in the paper "Nonnegative Solutions of ODEs" by Shampine, Thompson, Kierzenka, and Byrne. Near the beginning of the integration the temperatures oscillate outside the physically meaningful region. This program imposes bounds on the solution components to prevent this. The script demop11.m generates a MATLAB plot of the solution which demonstrates that the bounds are satisfied.
 DemoFlow:
The program demofow.f90 solves a fluid flow problem. It is required to obtain the numerical steady state solution for Euler's equations starting from an initial guess. A second program demoflow2.f90 solves the same problem using a different set of boundary conditions. The scripts demoflow.m and demoflow2.m generate MATLAB plots of the solution.
The programs in this directory solve problems from the wellknown Pitagora test suite . The authors kindly permitted us to include their pdf descriptions of the problems solved by these programs. Refer to these descriptions for more details about the problems.

DemoE5:
Problem E5 consists of a stiff
system with four ODEs. The program demoe5.f90 solves the problem. The script demoe5.m generates MATLAB plots of the solution components.

DemoEmep:
Problem EMEP consists of a stiff system with 66 ODEs. The program demoemep.f90 solves the problem. The script demoemep.m generates MATLAB plots of selected solution components.

DemoHires:
Problem HIRES consists of a stiff system with 8 ODEs. The program demohires.f90 solves the problem on the interval [0,6] . The script demohires.m generates MATLAB plots of selected solution components on the interval [0,6] . The program demohires2.f90 solves the problem on the original integration interval [0,321.8122] .

DemoMedakzo:
Problem MEDAKZO is a stiff MOL system consisting of 400 ODEs. The program demomedakzo.f90 solves this problem. The script demomedakzo.m generates MATLAB plots of the solution surfaces.

DemoOrego:
Problem OREGO is the Oregonator system which consists of three stiff equations and whose components have very sharp interfaces. The program demoorego.f90 solves this problem. The script demoorego.m generates MATLAB plots of the solution components.

DemoRobertson:
The program demorobertson.f90 solves the wellknown Robertson chemical kinetics problem. Nonnegativity of the solution components is enforced.
The programs in this directory solve problems from the wellknown Toronto (DETEST) test suites.

DemoStiff:
The program demostiff.f90 solves the problems in the stiff test suite.

DemoNonstiff:
The program demononstiff.f90 solves the problems in the nonstiff test suite.
The programs in this directory consist of demo programs for the ODEPACK family of integrators. These programs are included primarily for people familiar with their use in conjunction with the ODEPACK solvers and who would like to compare the results with those for the original solvers.
Single Precision Demo Programs
Several of the programs described above have single precision counterparts. Not all of the double precision demos were converted to single precision because we typically use double precision on computers with short single precision word lengths. Following is a list of the available single precision demos.