- 50 Years of Fortran
- Events
- Presentations
- Written Contributions
- Fortran's 50th Birthday
- Photos
- 25th Anniversary
- FORTRAN Implementations
- Further Information
- About us
Fortran Specialist Group
Forty years ago I was a scientific programmer working on the pressurisation system for the Boeing 747 in Seattle using Fortran IV on a Control Data 6600 mainframe.
The computer department supported mechanical engineers who defined the hardware components to produce the desired passenger cabin pressure, temperature and humidity.
The air destined for the passenger area was bled from the engine. The engineers defined a complex system of precoolers, butterfly valves, compressors, heat exchangers, turbines and water separators to produce the desired conditions.
In order to reduce the dependency of the engineers on the computer area - a fourth generation pre-compiler was designed. The concept was that the engineers would define the hardware configuration by inputting data.
Thus for a refrigeration module the engineer would specify a punched card to describe
each of the following :-
a compressor with associated tabular data defining its operating characteristics plus
associated variables
a heat exchanger with similar inputs
a turbine with similar data
Subroutines for each components were written by the programmers.
A pre-compiler was designed to read in these cards and generate a complete Fortran
program.
Variables defined on each card were placed in Labelled Common.
Data statements were generated for each initial value.
Generated GO TOs were produced to indicate the section for each part of the
configuration.
A CALL statement was generated to access each of the defined components.
The pre-compiler contained a set of instructions to enable the information on the data cards to be decoded. The programming department wrote these instructions.
In order to solve the system a non-linear equation solver was also written by the programmers to enable the system to converge. Since only the input conditions of pressure, temperature and humidity as bled from the engine were known and also the desired final passenger area conditions, the solver was required to iterate to determine all the intermediate conditions.
The engineers were shown how to input the data required to define each equation to be used by the equation solver.
Thus if the hardware configuration defined an air flow split, an equation was set up on a data card to determine the pressure (as independent variable) at the split so that the air flow into the split is equal to the flow out.
Similarly for a merge.
Equations were specified to determine all the required conditions of intermediate pressure values in the system and also the desired environmental conditions in the passenger cabin area.
When the generated Fortran program had been compiled, loaded and executed it initially read all tabular data into Blank Common. Execution is then continued.
A pass is first made though all hardware component subroutines and equations. An array of independent variables and an array of corresponding errors is then determined according to each equation specified.
A two dimensional array of partial derivatives (Jacobian) is then calculated and a prediction is made for the next iteration.
As the system converges a curve fit is made of the results obtained. The solution is obtained when the minimum point of the curve is within the system error tolerance.
The engineers thus have the ability to define their system and set up test cases for ambient airplane conditions for engine speed, altitude, etc., to ensure that the hardware configuration meets the design requirements.
This system was used for the 727, 737 747 and the American Supersonic Transport airplanes.
John Lyons
Member of the Computer Conservation Society
February 2007
Last modified: Sun 9 Dec 2012 15:00:43