Forty Years Ago with Fortran IV
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
Comments on this or any other of the Group's pages should be sent by e-mail to the
FSG Web Editor.
Last modified: Thu 1 Mar 2007 15:33:32
|