Journal of Microcomputer Applications (1983) 6, 1-13
A microcomputer implementation generator for flight simulation R. Bradley and
of a turbulence
M. J. Connon*
School of Mathematics, Statisticsand Computing, Newcastleupon Tyne Polytechnic, Newcastleupon Tyne NE1 8ST, UK *British Aerospace Dynamics Group, Stevenage, Hertfordshire SGl 2DA, UK The inclusion of a realistic representation of atmospheric turbulence in ground-based flight simulation is an essential ingredient in providing the pilot with an authentic working environment, in addition to its possible importance in assessing the handling qualities of the particular aircraft being simulated. The Royal Aircraft Establishment Bedford and Newcastle upon Tyne Polytechnic have collaborated in the development of a model of turbulence suitable for digital simulation. As a FORTRAN subroutine it has been extensively validated and has an established reputation. This paper discusses the principal features of the model and describes the methods used to develop a microcomputer-based implementation designed to run in parallel with the main simulation. The conclusion is that a successful implementation is possible using an inexpensive standard system.
1.
Introduction
The aim of a ground-based flight simulator is to provide a pilot with an authentic experience of flight. The authenticity is determined by the quality of the cues communicated to the pilot’s senses by the simulator system. A realistic physical environment for the pilot is supplied by seating him in a mock up of a cockpit and providing him with his usual controls and instruments. The next stage is to provide a convincing display for the pilot to see through the windscreen; this may come from a camera moving over a model or be generated entirely by computer. In addition, in order to give the pilot the ‘feel’ of flying, the cockpit itself is fitted with a motion system to give limited movement in three dimensions. Sound effects provide appropriate aural cues. The translation of the pilot’s movement of his controls into appropriate instrument readings, sound effects, cockpit motion and changes in the visual display is orchestrated by a powerful mainframe computer which takes into account the aerodynamics of the particular aircraft being simulated. Different aircraft may need different parameter values or even a different simulation program. The various cues are updated regularly at intervals known as the frame time. A typical value for the frame time is 50 milliseconds so that the simulation is updated 20 times a second. Consequently the whole of the aerodynamic calculations must be executed, in real time, 20 times a second. In general the frame time interval must be made short enough to give a valid representation of the aircraft responses but not so short that the complete sequence of updates and calculations cannot be accomplished within the time available. In a practical situation it is often this time constraint that limits the sophistication of a simulation. The system is almost self contained-in the same sense that an aircraft in flight is self contained. The only external 1 0143-3792/83/01001
+ 13 $03.00/O
6 1983 Academic Press Inc. (London) Ltd.
2
R. Bradleyand M. J. Connon
agencies that can affect flight are contact with the ground, which we shall ignore here, and the motion of the air through which the aircraft is flying, that is, the wind. A constant mean wind is important in navigation but will not affect the aircraft’s dynamics, whereas variations about the mean can, and do. These variations about the mean windspeed are termed turbulence. The structure and properties of turbulence in the atmosphere are subjects of continuing research but it is essential to incorporate a realistic turbulence input into a simulation for the following reasons: (i) to maintain an authentic environment; (ii) to give the pilot a valid workload; (iii) to assess the handling qualities of a particular aircraft. Classical models of turbulence based on 5tered white noise are attractive because they are easy to implement and amendable to analysis, but have now been largely superceded by more sophisticated approaches. In this paper we are concerned with the implementation of a model of atmospheric turbulence which has been developed at the Royal Aircraft Establishment Bedford (Jones, 197la, 1976). The Statistical Discrete Gust Model, as it is called, is suitable for the synthesis of turbulence within a simulation program; two horizontal and one vertical components of turbulence are generated and added to the appropriate components of the mean windspeed. Currently the model exists as a FORTRAN subroutine which has received attention at centres abroad (Jansen, 1977) and has been subject to extensive evaluation (Jewel1 & Heffley, 1978). In its implementation on the Sigma 8 at RAE Bedford it consumes 6 % of the available processing power despite its relative unimportance. The remainder of this paper describes the main features of the model and the problems of developing an inexpensive, dedicated microprocessor-based system to replace the FORTRAN subroutine. A listing of the original FORTRAN subroutine is available from the authors.
2.
The turbulence
model
The turbulence algorithm is a small section of the whole simulation algorithm; Figure 1 shows how it is linked to the main simulation. Three outputs are generated which require updating every 50 ms, and there are only two inputs, namely airspeed and altitude, from the main body of the simulation. This combination of a relatively large processing element with little tra5c in and out of the section marks it out as a candidate for operation in parallel to the main simulation, thus making computer power available Three components
* Moin
Mean
windspeed
* simulation -
Figure 1. The inputs and outputs linking the turbulence generator to the main simulation.
Simulation of turbulence 3 for an enhanced sophistication of the main simulation model. Full details of the model, and an extended discussion of its design, development and validation may be found elsewhere (Tomlinson, 1975; Bradley & Tomlinson, 1979), here it is sufficient to recall its main features, which are common to both the FORTRAN subroutine and the microcomputer assembler implementations. The generation scheme comprises three channels generating in turn high, medium and low frequency constituents of turbulence which are subsequently combined to give the three spatial components of turbulence. This is shown in Figure 2. The combination of the constituents to form the three components involves a substantial amount of calculation. Set relative amplitude
Calculate
L Generation of ‘High frequency’ constituent
’ Medium
, Vertical component -
frequency’ scale
‘Low
frequency’
Figure 2.
The general scheme for turbulence generation.
First, the relative amplitudes of the constituents must be set to values that ensure that the turbulence that has been generated possesses certain properties of the real atmosphere (or an accepted model of the real atmosphere). For example, the power spectral density must decrease at high frequencies as frequency to the power -513, and the verticuZ component of velocity must attenuate as altitude to the power l/3 as the altitude approaches zero. Secondly, the three constituents must be switched, in an appropriate random way, between the three components to avoid the perfect correlation that would result if each constituent were taken directly to each component. The turbulence in each constituent may be obtained (Jones, 1971b) by superimposing a sequence of gusts of the form shown in Figure 3, where the gust velocity rises linearly to its peak value during a
Time
Figure 3.
Graph of velocity against time for a discrete gust with rise time T.
4
R. Bradley and M. J. Connon
rise time T and is then ‘washed out’ or decayed by a constant factor r over each successive rise-time interval. (Values for r in the range 0.7 to 0.9 have been used.) The values obtained from sampling such turbulence at intervals of the rise time T may be generated by the relation y,=O yt+l=ryg+vt,
for i=O,1,2 ,...
(2.1)
where the peak gust velocity vi is a random variable with a probability density function appropriate to the SDG model of turbulence. Appropriate to this application is the p.d.f. p(x)=F8(x)+Ae-klZl (2.2) where F, A and k are constants. The parameter F is called the intermittency and is the fraction of gusts having zero magnitude. A and k may be determined from k=2/2o/o A=k(l --n/2
(2.3)
where a2 is the required variance of the p+d.f. The formula (2.1) superimposes each new gust vt on the residue of the previous gusts. For simulation purposes it is necessary to calculate sample values at frame time intervals which do not necessarily coincide with the rise time intervals of the turbulence constituent. It is a straight forward matter to derive an equivalent statement to (2.1) for rise times that are an integer multiple, m, of the simulation frame time. This is shown in (2.4). Yo=O y,t+l=rl’m ymt+(l/m)vz (2.4) ~,,,t+~=P’m Ymr+(@r)vr, for s=2,3,..., m-l YmWn=Ym(tti)=rYrn~+v~ The number of frame-time intervals per gust rise-time interval varies from constituent to constituent. For example, with a frame time of 50 ms the high frequency, medium frequency and low frequency turbulence typically has rise time of l/4 s, 1 s and 4 s respectively. The factor of 4 spacing between the constituents is a constant chosen to give an adequate spread of rise times in the model, but the absolute value of any rise time (subject to it never being less than the frame time) varies with the speed of the aircraft. The turbulence is assumed to be ‘frozen’ into the atmosphere with the aircraft flying through it, so an increase in the speed of the aircraft reduces the rise time of the turbulence. The sequence for the calculation of a particular frequency constituent is shown in Figure 4. It is entered at every frame time, and if this also coincides with the end of a rise time interval a new gust is calculated by generating a random number between 0 and 1 and converting it to a peak gust velocity by reference to the cumulative distribution of (2.2). The current gust is interpolated and added to the residue of the previous gusts. The three constituents are distributed to the three component via nine decorrelation functions. Each function is a switching sequence which changes sign randomly with a fundamental period related to the rise time of the constituent it is decorrelating. The switching is not a step change but moves to its new value linearly with the ramp duration depending on the constituent. Table 1 summarizes the relative time scales of the gust rise times and the decorrelation processes.
Simulation of turbulence 5 Genemte gust velocity
No
Yes f
random number
Figure 4. The generation sequencefor a single gust constituent. Table 1. Summary of relativerise times
Gust rise time Decorrelator switching period Switchover duration
High frequency
Medium frequency
frequency
1 15 5
4 60 20
2: 80
LOW
It is clear that the decorrelation takes place over a time scale which is relatively long compared to the gust rise time. The sequence for the calculation of a particular decorrelation signal is shown in Figure 5. It is entered every frame-time interval, and if this coincides with the end of a switching period the signal is either switched or not switched with equal probability-except that after two previous non-switchings a switch is forced to occur. The build up of the final turbulence from its three constituents is seen in Figure 6, and a comparison with a sample of genuine turbulence is shown in Figure 7.
3. 3.1
Microcomputer implementation The 280 implementation
The FORTRAN turbulence model running on the Sigma 8 mainframe at RAE Bedford uses 32-bit floating point arithmetic and the usual library functions: logarithm, square root and exponentiation. The implementation of an exact duplicate of the FORTRAN
6
R. Bradley and M. J. Comon Generate
switching
function
1
ron&m
number
1
Chonge sign of increment
I
(“7 End
Figure 5. The generation sequence for a single decorrelator switching function.
(bl
IdI
Figure 6. The composition of a component of turbulence from the three constituents. (a) Total component; (b) low frequency constituent; (c) medium frequency constituent; (d) high frequency constituent. (Crown copyright reserved.)
Simulation of turbulence 7
Figure 7.
A comparison of a trace of (a) genuine with (b) simulated turbulence (Crown copyright reserved.)
using one of the &bit generation of microprocessors without special arithmetic or function facilities would clearly be too slow to meet the time constraint of calculating a new value every 50 ms. However, an exact duplicate is not necessary. The range of values taken by the variables in the model indicated that fixed point arithmetic would be adequate, and the final choice of 16-bit fixed point arithmetic was an engineering compromise between the speed requirement and the validity of the model. In order to test whether the restricted range of values emerging from a 16-bit model would still produce a valid representation of turbulence an integer version, in FORTRAN, was written for the IBM 370 at Newcastle upon Tyne Polytechnic. Comparison of results from the integer version with those in the original model showed no degradation of power spectral density in the frequency interval of importance in flight simulation. Having verified that the 16-bit approach could provide useful results a microcomputer version of the gust model was embarked upon. At that time the microcomputers available at Newcastle upon Tyne Polytechnic were either MOS 6502 or Zilog Z80 based, and after a consideration of the merits of the corresponding instruction sets it was decided to make a first implementation in assembler on one of the Midas Z80 based systems. (Subsequently an RML380 Z version was implemented.) The attractiveness of the 280 instruction set is that it includes a number of 16-bit manipulations using concatenated registers which can be used extensively in the arithmetic software. A reorganization of the equations (2.4) into the form (2.5)
subroutine
Y,=O Zmt=Ymt, urnr=O %#+l=umt+(l/m)J% Gf&t+l=~l’mZml, Ym~+l=ZmZ+1+~mi+l9 W+8=uml+s-l+(llv$ *i+8=r11mZmt+s-1 Ymt+.9=Gn~+s+umt+s
.
r for s=2,3,..., m
avoids the necessity for exponentiation at each frame-time interval. The quantity rl/m together with the square root in (2.3) are currently set up during initialization from the mainframe. At a later stage these quantities will be evaluated dynamically during a simulation. As they are relatively slowly varying quantities they may be evaluated at the longest period in the model, which is that of the low frequency decorrelator, but out of
8 R. Bradley and M. J. Connon phase with it in order to spread the computational load. The necessity for an efficient random number generator and logarithmic function remained. An adequate random number generator for this purpose is a standard congruence method producing pseudorandom numbers in the range 1 to 32767. From an initial seed x0 the pseudo-random sequence (xr) is calculated according to x,=259 xrB1 mod (21s), for r=1,2,.., which is implemented as follows in MC6809 assembler: *SUBROUTINE RANDY * *PURPOSE: GENERATES PSEUDO RANDOM * NUMBERS IN THE RANGE l-32767 * *INITIAL CONDITIONS: ADDRESS OF SEED * IN INDEX REGISTER X * *FINAL CONDITIONSRANDOM NUMBER IN l REGISTER D AND NEW SEED SENT TO * SEED ADDRESS + *REGISTERS AFFECTED : A, B, FLAGS
LIMEFDB FDB
259
&DY
Y
SIGNR
PSHS PSHS LDY LDU CLR CLR LDA LDB MUL STD LDA LDB MUL ADDB STB LDA LDB MUL ADDB STB LDD BPL ANDA STD PULS PULS RTS
4 U #PRIME #CR 4, U I, U 1,X I,Y
WORKSPACE
CLEAR ACCUMULATOR FOR LS BYTES DOUBLE PRECISION MULTIPLICATION IGNORING MS BYTES
;:: 1,‘Y $ 1:x 4, Y
#7FH 4, X U Y
SKIP IF POSITIVE ADJUST IF NOT POSITIVE RETURN NEW SEED
The logarithm evaluation threatened to be more of a problem but recasting the inverse of the cumulative distribution of (2.2) in terms of log, rather than log, eased the situation, since a fast crude approximation can be found by a simple test for the position of the
Simulationof tnrbdence
9
highest non-zero bit of the argument. A correction to this initial value can be achieved by linear interpolation in very few instructions (Connon, in preparation) and a very good approximation to the log, function can be found quickly by a succession of shifts and rotations of the argument. The approximation is derived by writing any x in the range 1 to 32767 in the form x=2’m for some 15 m < 2 and integer 0 I r I 14. It follows that logfi=r+log,m Now m- 1 interpolates log,m at m= 1 and m=2, and may, therefore, be used as a linear approximation to log,m in the range 1
1
The advantage of this approximation is that with x in a 16bit register the value of r may be found by counting the number of shifts left needed to set the negative flag and moreover the number in the register, stripped of its msb, is proportional to m-l. In scaled integer variables the requirement is the evaluation of 2” log&=211 r+211 (m- 1) with both r and (m-l) available this is easily achieved by appropriate shifts and rotations. In M6809 assembler it is implemented as follows: *SUBROUTINE LOG * *PURPOSE:CALCULATES SCALED LOGBASEZ * USING X=2**R M * *INITIAL:REGISTER D CONTAINS ARGUMENT * *FINAL:REGISTER D CONTAINS APPROX * 2**11 LOGBASE2 * *REGISTERS AFFECTED: A, B, FLAGS COUNTL FCB COUNTER TO FIND R &bH TEMPL FDB &WH STD LOG TEMPL LDA #I4 STA COUNTL LDD TEMPL BACK ADDD TEMPL BMI CARRY R IS FOUND DEC COUNTL STD COUNTL BACK BRA CARRY ANDA #7FH FORMS (M-l) STD ADDD LSR RORA RORB LSR RORA
TEMPL TEMPL COUNTL
COUNTL
R IS ADDED IN BY ROTATING THROUGH
CARRY BIT
10 R, Rradley and M. J. COMOII RORB LSR RORA RORB LSR RORA RORB LSRA RORB RTS
COUNTL
COUNTL
The first, Z80 based, model was completed up to the generation of the three constituents of the turbulence. The results obtained from it matched exactly the results of the integer model running on the mainframe so that the results of the microcomputer model could be analysed on the mainframe by running what was in fact an emulator program. To execute the generation of the three constituents of the turbulence the microcomputer model took, on average, 30 ms, and from this one could deduce that the whole algorithm would, when complete, have a mean execution time of 100 ms. Now although the mean execution time of a single pass is easily measured by physically timing a sequence of a large number of passes (usually 1000 passes were timed) it is the maximum execution time that must lie within the limit of the frame time interval of 50 ms. Rather than modify the software of the model always to take the longest route, the logic of the algorithm can be examined in detail and the probability of each logical path in the model being followed can be calculated. It is then possible to relate the mean execution time to the maximum execution time. If this is done for the complete turbulence model the ratio is found to be approximately 1:2$, with the exact value being dependent on the values of certain parameters, for example the intermittency and the altitude. With this information it is possible to set a target performance for an acceptable microcomputer implementation. With a mean execution time of approximately 10 ms for pass through the turbulence model, the maximum possible execution time is approximately 25 ms, which allows adequate time remaining within the frame time of 50 ms to accommodate possible future improvements in the turbulence model and to service the interface to the mainframe. The generation sequence is triggered at each frame by an interrupt from the mainframe, or alternatively from an independent 50 ms timer. Comparing the target time of 10 ms with the anticipated performance, of 100 ms, of the Z80-based model it is clear that a microcomputer implementation can only be successful if an order of magnitude enhancement of the performance of the model can be achieved. 3.2 The M6809 implementation To achieve the required improvement in performance, the following options were considered : (i) Use of a hardware random-number generator. (ii) Use of an arithmetic processor giving floating-point arithmetic and logarithms too. (iii) Use of a superior &bit processor such as the Motorola 68000. These options were investigated but not exhaustively analysed, let alone implemented and evaluated. Decisions often have to be made on incomplete information when working against a deadline, and in such a situation the background of the persons involved in a
Simulationof tnrbnlence 11 project influences the attractiveness of a particular course of action. It appeared that all of the options listed suffered from some disadvantage: (i) Random numbers derived from a noise source were ruled out by the requirement that values should be reproducible. (Required during the validation stage.) For any psuedo-random algorithm the model required 192 random bits per frame time, and while this is certainly possible with additional circuitry, the added complications necessary to service this circuitry made this approach unattractive -particularly when it was not clear whether the extra speed that would result would be sufficient. (ii) The approach based on an arithmetic processor certainly gave promise of effectiveness. The 16-bit floating-point arithmetic with a host of special functions seemed to be exactly the facility required. On the other hand a fair amount of work was needed to access the device; it was expensive and at the time there were difficulties of supply. (iii) The use of a 16-bit processor was the obvious ‘overkill’ solution. Apparently it would solve all of our problems, and its power was such that a standard development system would cope. This was all very well but at that time there were difficulties in obtaining a full specification for the Motorola 68000, and, although several development systems were being announced, they were expensive and not immediately available. It was clear that not one of these options was free from disadvantages. Nevertheless a decision had to be made and (ii) above, the arithmetic processor, was selected as an affordable solution with virtually guaranteed success. Just at that time, however, development systems based on the Motorola 6809 became available and it was decided to implement the model on such a system. The possibility of improved performance arose from the following important properties of the M6809 microprocessor: (i) lying midway between the 8-bit and 16-bit microprocessors, the M6809 possesses some 16-bit arithmetic facilities; (ii) the M6809 instruction set includes an 8x8-bit multiplication (MUL) so that 16 x 16-bit multiplication can be accommodated in four 8-bit operations; (iii) the M6809 instruction set is complete, and powerful. In addition the interrupt handling facilities are very good, and while this is not directly important to the turbulence model, it is relevant to the real-time operation and the interfacing of the final model to the simulator mainframe. Comparison of the M6809 and 280 implementations reveal large areas of commonality in the coding. Both versions make extensive use of the 16-bit capabilities of the microprocessors and there is no significant difference in the general structure of the models nor in the methods of generating gust constituents and decorrelator functions. However, the M6809 performs 16-bit manipulations more efficiently, and the MUL instruction leads to a faster 16 x 16 bit multiplication routine and pseudo-random number generator. The MUL instruction multiplies the contents of the two 8-bit A and B registers and leaves the 16-bit result in them. The gust routine is largely multiplication-based with approximately 30 multiplications (16-bit x 16-bit, scaled signed multiplications) performed every real-time pass of the gust generator. Clearly, any saving in the multiplication routine can result in a significant saving in execution time. On the 280 machine the multiplication algorithm used is the standard method of binary multiplication involving
12 R. Bradley and M. J. Connon shifting the multiplier, testing each binary bit and lining up the multiplier correctly for addition to the partial product. The code to perform the algorithm with the correctly signed and scaled resultant takes approximately 2 ms on the 280 machine. It may be possible to improve on this time to a certain extent by exploring different coding strategies but it is felt that the required improvement of a factor of 10 is not attainable. On the other hand, the byte by byte multiplication of multiplier and multiplicand that is possible using the M6809 MUL instruction brought the time for an equivalent multiplication algorithm down to approximately 0.25 ms. In addition, the calculation of pseudorandom numbers by the congruence method, as described earlier, benefits from the availability of the MUL instruction. In summary therefore, it appears that the extensive use of the MUL instruction is a major factor in the success of M6809 implementation in reducing the mean execution time to approximately 12 ms. The target time of 10 ms is not quite achieved but the model has been tested in the real-time environment and its performance is satisfactory. Moreover this performance is achieved totally in software on a standard system occupying just in excess of 2k of RAM. A single board dedicated unit would therefore be relatively inexpensive. 4.
The interface
The transfer of information between the microcomputer and the mainframe takes place via a common storage medium which provides a memory capacity of 256 16bit words. Sixteen-bit parallel communication with this random-access device is available using pairs of 16-bit ports. Each pair of ports comprises a 16bit input port, a 16bit output port, and a control line. The protocol for communicating with the interface is, of course, particular to this hardware. There are two operations to consider (i) accessing data in the interface (data-access) and (ii) storing data in the interface (data-store). Both of these operations are initiated by sending to the interface a control word, indicated by logic 0 in the lsb, bit 0. The particular operation required is indicated by bit 1 as shown in Table 2. The msbyte of a control word contains the address of the location within the interface where information is to be accessed or stored. Table 2. Summary of interface flags Control word (data store) Control word (data access) Data word
Bit 1
Bit 0
0 1
0 0
-
1
For a data-store operation the control word is followed by sending to the interface a data word, which is recognized by bit 0 being set to logic 1, as shown in Table 2. For a data-access operation the control word is followed by the raising of the control line to logic 1, which prompts the interface to place the requested data on to its output port. The control line is then lowered to logic 0, and the operation terminated by sending a dataword to the interface, that is, bit 0 must be set to logic 1 so that a control word is no longer being sent to the interface. The logic levels of the control line, together with the control and data words being sent to the interface must remain on the port long enough to be recognized. A duration of approximately 5 ps is known to be satisfactory. Since
Simulation
of turtmlence
13
bit 0 of a dataword
is used as a flag, 15bit scaled integer representation of variables is used for quantities that are being transferred. The microcomputer uses two MC6821 PIAs to support the communication described above. One PIA, PIAO, has both A and B sides configured as inputs, giving 16bit input, and the other, PIAl, has its A and B sides both configured as outputs, giving 16-bit output. This matches the port requirements exactly, and the communications are completed by employing CA2 of PIAO as the control line.
5.
Conclusions
The quality of the turbulence generated by this model is known to be satisfactory. implementation on a microcomputer has been demonstrated to be possible, and method selected appears to be good choice, since the performance objectives could achieved with a standard microcomputer system. The interfacing with the mainframe the Sight simulator is being completed at the present time.
Its the be of
Acknowledgement The work described in this paper is supported in part by a Standard Grant of the Science and Engineering Research Council.
References Bradley, R. & Tomlinson, B. N. 1979. The simulation of atmospheric turbulence. In Modelling and Simulation in Practice (M. Cross, R. D. Gibson, M. J. O’Carroll & R. S. Wilkinson, Eds). London : Pentech Press. Connon, M. J., in preparation. A microcomputer implementation of a turbulence generator for flight simulation. M.Phil. Thesis CNAA. Jansen, C. J., 1977. A digital turbulence model for the NLR moving base flight simulator. Memo VS-77-024, U, National Aerospace Laboratory, The Netherlands. Jewell, W. F. & Heffley, R. K. 1979. A study of the key features of the RAE atmospheric turbulence model. Tech. Rpt. 1126-l. Systems Technology Inc. (For NASA Ames Research Centre, California.) Jones, J. G. 1971a. Turbulence models for the assessment of handling qualities during take off and landing. AGARD Conference Proceedings 106,Ottawa. Jones, J. G. 19716. A unified discretegust and power spectral treatment of atmospheric turbulence. RAeS/CASA/AIAA International Conference on Atmospheric Turbulence, London. Jones, J. G. 1976. Modelling of gusts and wind shear for aircraft assessment and certification. CAARC Symposium of Operational Problems, India. Tomlinson, B. N. 1975. Developments in the simulation of atmospheric turbulence. AGARD Symposium: Flight Simulation/Guidance Systems Simulation. CR198. The Hague. Roy Bradley is a Principal Lecturer in the School of Mathematics, Statistics and Computing at Newcastle upon Tyne Polytechnic. He graduated in 1963 from Durham University with a BSc (Hons) in mathematics and joined H. M. Hobson Ltd as a performance engineer engaged on simulation. He joined Rutherford College, now part of the Polytechnic of Newcastle upon Tyne, in 1963 as an Assistant Lecturer. For a thesis in the field of hydrodynamic instability he was awarded an MSc at Newcastle University in 1965. During 1973 he was a vacation consultant at RAE Bedford. Mick Connon is an engineer at BAe Stevenage. He received a BSc in mathematics at Newcastle Polytechnic in 1974. He worked at the BAe Stevenage and BAe Warton in the simulation field until 1981 when he joined Newcastle Polytechnic as a research associate, before rejoining BAe Stevenage in 1981.