dynamic simulation of hot blast stoves with … simulation of hot … · the energy efficiency of...

207
QUEENSLAND UNIVERSITY OF TECHNOLOGY SCHOOL OF ELECTRICAL AND ELECTRONIC SYSTEMS ENGINEERING DYNAMIC SIMULATION OF HOT BLAST STOVES WITH AUTOMATIC CONTROL A thesis submitted in partial fulfilment of the requirements for the degree of MASTER OF ENGINEERING SCIENCE - COMPUTER ENGINEERING by Rickey Donald BE Mech. (Hons.) 1992

Upload: others

Post on 30-Apr-2020

1 views

Category:

Documents


0 download

TRANSCRIPT

QUEENSLAND UNIVERSITY OF TECHNOLOGY

SCHOOL OF ELECTRICAL AND ELECTRONIC SYSTEMS

ENGINEERING

DYNAMIC SIMULATION OF

HOT BLAST STOVES WITH

AUTOMATIC CONTROL

A thesis submitted in partial fulfilment

of the requirements for the degree of

MASTER OF ENGINEERING SCIENCE - COMPUTER ENGINEERING

by

Rickey Donald

BE Mech. (Hons.)

1992

ABSTRACT

The energy efficiency of an ironmaking blast furnace is significantly improved

through the use of air pre-heated in large regenerative heat exchangers called stoves.

Critical to the furnace operation is ensuring that a constant blast temperature is

maintained. There are usually three stoves per furnace, and automatic control of the

stoves operation allows a reduction in energy costs, an increase in refractory life and

higher blast temperatures. A computer simulation ·model of the stoves has been

developed based on a mathematical model of the heat transfer and combustion

mechanisms. The simulation model incorporates an automatic control scheme which

utilises a condition based changeover management system with a predictive

algorithm to optimise the stove heating rate. The model results were shown to agree

well with process data from the stoves at BHP Newcastle No. 4 Blast Furnace.

Using the simulation model, it was demonstrated that the effectiveness of the

automatic control scheme was superior to that of manual control under dynamic

operating conditions.

- 11 -

DECLARATION

I hereby declare that this submission is my own work and that, to the best of my

knowledge and belief, it contains no material previously published or written by

another person nor material which to a substantial extent has been accepted for the

award of any other degree or diploma of a university or other institute of higher

learning, except where due acknowledgement is made in the text of this thesis.

Rickey Donald

BE Mech._ (Hons.)

- lll -

ACKNOWLEDGEMENTS

In the context of completing this course of study, I wish to firstly acknowledge and

thank Dr. Paul Zulli for his dedication, encouragement, and invaluable guidance.

I would also like to extend my thanks to Mr. Adrian Rex for his willingness to

participate in the project. In particular, I gratefully acknowledge his expert

assistance in the development of the numerical model and his advice during the

investigation of the simulation model.

I wish to thank Mr. Paul Wilson for his guidance in the preparation of this thesis and

for coordinating the administration required for this course of study.

I am especially grateful to my colleagues Peter Borg, Paul Borg, and Ashok

Kanagarajah for reviewing the manuscript and providing many helpful suggestions

for improvement.

I gratefully acknowledge support given to me by members of staff of the Broken Hill

Proprietary Co., and for the resources provided by this company to complete this

project.

Finally, I wish to express gratitude to Susan Howard who sacrificed countless

evenings, weekends and holidays so that this thesis could be completed.

- lV -

TABLE OF CONTENTS

ABSTRACT

ACKNOWLEDGEMENTS

LIST OF FIGURES

LIST OF TABLES

NOMENCLATURE

1

2

INTRODUCTION

1.1 Introduction to the Ironmaking Blast Furnace

1.2 Introduction to the Hot Blast Stoves

1.3 Stoves Control Objectives

1.3.1 Hot Blast Temperature

1.3.2 Energy Efficiency

1.3.3 Stoves Life

1.4 Review of Stoves Control

1.5 Review of Stoves Modelling

1.6 Project Objectives

1. 7 Project Scope

DEVELOPMENT OF NUMERICAL MODEL

2.1 Heating Model Formulation

2.1.1 Assumptions

2.1.2 Energy Equations

2.1.2.1 Gas Phase

2.1.2.2 Solid Phase

2.1.3 Boundary Conditions and Initial Conditions

2.1.4 Source term

2.1.4.1 Convective Coefficient

2.1.4.2 Gas Emissivity and Absorptivity

2.2 Model Discretisation

2.2.1 Discretisation Technique

2.2.2 Field Layout

2.2.3 Source Term Linearisation

-v-

PAGE

(ii)

(iv)

(viii)

(x)

(xi)

1

1

3

6

6

7

9

10

14

18

18

19

19

20

21

22

23

24

25

29

31

34

34

37

38

2.2.4 Discrete Energy Equations 41 2.3 Combustion 44

2.3.1 Adiabatic Flame Temperature 45 2.3.2 Combustion Products 48

2.3.2.1 Weak Mixture 49

2.3.2.2 Rich Mixture 50 2.4 Adiabatic Mixing 51 2.5 Stoves Pressure Changes 52

3 AUTOMATIC CONTROL STRATEGY 55 3.1 Process Characteristics 55 3.2 Stoves Changeover Management 58 3.3 Heating Rate Control 61 3.4 Dome Temperature Control 66 3.5 Hot Blast Temperature Control 67

3.6 Air to Fuel Ratio Optimisation 69

4 DEVELOPMENT OF COMPUTER SIMULATION MODEL 71

4.1 Program Description 71

4.2 Data Input Requirements 79 4.2.1 Simulation Data 79 4.2.2 Stoves Physical Arrangements 79 4.2.3 Gas Data 80

4.2.4 Control Parameters 81

4.2.5 Initial Conditions 83

4.3 Data Presentation 83

5 INVESTIGATION OF MODEL 86

5.1 Comparison to Plant Data 86

5.1.1 Plant Data 86

5.1.2 Model Simulation 91

5.1.2.1 Input Requirements 92

5.1.2.2 Procedure 94

5.1.2.3 Model Results 95

5.1.3 Discussion 99

5.2 Evaluation of Control Scheme 102

5.2.1 Procedure 102

5.2.2 Results 103

- VI -

5.2.2. I Control Scheme Tuning

5.2.2.2 Manual Control

5.2.2.3 Automatic Control

5.2.3 Discussion

6 CONCLUSIONS

6. I Conclusion

6.2 Scope for Further Research

REFERENCES

APPENDIX A - COMPUTER PROGRAM LISTING

A-I STOVESIM.H

A-2 STOVESIM.C

A-3 DATAIO.C

A-4 INITIAL.C

A-5 CONTROL.C

A-6 HEAT.C

A-7 COMBUST.C

A-8 GASPROP.C

A-9 DISPLAY.C

APPENDIX B - SAMPLE INPUT DAT A FILES

B-1 SOLN.DAT

B-2 STVPHYS.DAT

B-3 CHECKER.DAT

B-4 COMBAIR.DAT

B-5 FUEL.DAT

B-6 BLAST.DAT

B-7 STVCTRL.DAT

B-8 INITCOND.DAT

APPENDIX C - GAS PROPERTIES

C-1 Thermophysical and Transport Properties

C-2 Radiation Properties

APPENDIX D - GAS VELOCITY CALCULATIONS

- vu -

104

106

108

110

113

I 13

114

116

A.I

A.l

A.I

A.4

A.11

A.17

A.31

A.35

A.37

A.44

B.l

B.1

B.1

B.1

B.1

B.2 . B.2

B.2

B.3

C.I

C.2

C.6

D.I

LIST OF FIGURES

PAGE

1-1 Outline of the Blast Furnace Plant 2 1-2 Hot Blast Stove 4 2-1 Calculation Domain 20 2-2 Representation of Checkerwork in Model 26 2-3 Variation of Heat Transfer with Gas Temperature During the 28

Gas Cycle

2-4 Variation of Heat Transfer with Gas Temperature During the 29 Blast Cycle

2-5 Variation of Convective Heat Transfer Coefficient with 31 Temperature

2-6 Emissivity of Water Vapour 33 2-7 Emissivity of Carbon Dioxide 33 2-8 Temperature Variation for Different Numerical Schemes 36 2-9 Discretisation of Calculation Domain 38 2-10 Variation of Source Term With Gas and Solid Temperature 40 2-11 Effect of Air to Fuel Ratio on Adiabatic Flame Temperature 47 2-12 Mixing of Two Fluid Streams 51 2-13 Pressurisation of a Stove 53

3-1 Cyclic Order of Stoves Operation 55

3-2 Heat Storage in the Checkerwork 57

3-3 Gas to Blast Changeover Control Scheme 59

3-4 Changeover Sequence for a Stove Being Purged 61

3-5 Linear Dependence of Flue Temperature on Cycle Time and 64 Fuel Flowrate

3-6 Heating Rate Control Scheme 65

3-7 Typical PID Compensation Block Diagram 67

3-8 Variation of Mixer Valve Position with Cycle Time 68

3-9 Block Diagram for PID Control of Hot Blast Temperature 69

3-10 Variation of Flue Gas Carbon Monoxide Content with Flue 70 Oxygen Content

4-1 Program Overview 73

4-2 Data Input and Initialise 74

- vm -

4-3 Graphics Initialisation 75

4-4 Initial Conditions 76

4-5 Determine Temperature Distributions 77

4-6 Program Clean-up Procedure 78

4-7 Graphical Presentation of Simulation Program 84

5-1 Actual Dome and Flue Temperature 87

5-2 Actual Fuel Flowrate and Flue Temperature 88

5-3 Effect of Fuel Flowrate on Rate of Increase of Flue 89 Temperature

5-4 Actual Flue Temperatures for all Three Stoves 90

5-5 Actual Hot Blast Temperature and Mixer Valve Position 91

5-6 Model Simulation Approaching Cyclic Equilibrium 95

5-7 Simulated Dome and Flue Temperature 97

5-8 Simulated Mixer Valve Position and Hot Blast Temperature 97

5-9 Simulated Checkerwork Temperature Distribution 98 5-10 Comparison of Simulated and Actual Flue Temperatures 100

5-11 Variation of Flue Temperature Increase with Fuel Flowrate 104

5-12 Hot Blast Temperature with Manual Control Scheme 107

5-13 Hot Blast Temperature with Manual Control Scheme After 40 107 Hours

5-14 Gas Cycle Periods with Manual Control Scheme 108

5-15 Hot Blast Temperature with Automatic Control Scheme 109

5-16 Hot Blast Temperature with Automatic Control Scheme After 109 40 Hours

5-17 Gas Cycle Periods with Automatic Control Scheme 110

- IX -

LIST OF TABLES

PAGE

5-1 Actual Gas Cycle Times in Minutes 90 5-2 Blast Air Data 92 5-3 Top Gas Analysis 93 5-4 Gas Chemical Composition for Simulation Model 93 5-5 PID Loop Control Constants 96 5-6 Actual and Simulated Cycle Times 99 5-7 Calculated Gas and Blast Heating Rate Constants 105 5-8 Set Points for Stoves Changeover Management System 106 5-9 Comparison of Automatic Control to Manual Control 111

-x-

NOMENCLATURE

A area (m2)

a numerical model constant (-)

C numerical model constant (-); constant in convection relationship (-)

cbh blast heating rate constant (-)

cgh gas heating rate constant ( -)

cP specific heat at constant pressure (J/kg• K)

cv specific heat at constant volume (J/kg•K)

cs bias signal for PID control algorithm (-)

c(t) process output function (-)

d diameter (m)

d1 hydraulic diameter of checkerwork flues (m)

e(t) error function for PID control algorithm (-)

f weighting factor in numerical scheme ( -)

Ge transfer function of PID control algorithm (-)

GP transfer function of process ( -)

H enthalpy ( J)

M 0 enthalpy of combustion (J/kg)

h specific enthalpy ( J/kg)

he convective heat transfer coefficient (W/m2•K)

Kc proportional gain in PID control algorithm (-)

k thermal conductivity (W Im• K)

L length of checkerwork ( m)

Le mean radiation beam length (m)

M molecular mass (kg/kmole)

m mass (kg); exponent in convection relationship (-) • m mass flowrate (kg/s)

m(t) manipulated variable for PID control algorithm(-)

n number of variables ( -); exponent in convection relationship (-)

P perimeter (m); quantity of gaseous products (moles)

- XI -

p pressure (N/m2)

• p rate of change in pressure (N/m2•s)

Q heat (J)

q heat flow (W)

q"' heat flow per unit volume (W/m3)

R quantity of gaseous reactants (moles)

R0 universal gas constant (8314.5 J/kg•kmole•K)

R,h thermal resistance (K/W)

r(t) set point function for PID algorithm(-)

T temperature (K)

t time (s)

.D.t time increment ( s)

U overall heat transfer coefficient (W/m2•K)

u velocity in x-direction (mis)

V volume ( m3)

• V volumetric flowrate (m3/s)

v velocity in y-direction (mis)

w velocity in z-direction (mis)

x,y,z coordinates (m)

.D.x space increment in x-direction (m)

Dimensionless Groups

Nu

Pe

Pr

Re

hx Nusselt number(-), = k

pcpux Peclet number(-), = -k-

µcp Prandtl number(-), = T

Reynolds number(-), = p:

- xii -

Greek Symbols

1'\th

µ

e p

O'

Subscripts

a

c

cond

conv

g

I

i

L

m

ne

0

s

sp

absorptivity (-)

emissivity (-)

viscous dissipation function (-)

general function(-)

thermal efficiency (-)

dynamic viscosity (kg/m•s)

valve position (-)

density (kg/m3)

Stefan-Boltzmann constant (5.669 X 10-3 W/m2•K4)

damping ratio (-)

integral time constant for PID control algorithm (mins.)

derivative time constant for PID control algorithm (mins.)

constant

combustion chamber and dome area

conduction

convection

gas phase

checkerwork internal surface

ith control volume; inside

at checkerwork length

coefficient

number of control elements (volumes)

outside

solid phase

set point

- Xlll -

w

00

0

1, 2, 3

2', 3'

Superscripts

wall

ambient conditions

inlet conditions

conditions at states 1, 2, 3

approximation to conditions at states 2, 3

k kth time interval

- xiv -

1 INTRODUCTION

1.1 INTRODUCTION TO THE ffiONMAKING BLAST FURNACE

The ironmaking blast furnace is a counter current chemical reactor used to smelt iron

ores and prepared agglomerates of iron ore concentrates to produce a liquid crude

iron (hot metal). The composition of the hot metal depends to a considerable extent

on its use but in general, it is used as a raw material for oxygen steelmaking. For

this application, a typical chemical analysis of the hot metal requirements is 0.6% Si,

0.01% S, 0.09% P, and 4.8% C.

An outline of the blast furnace plant is shown in Figure 1-1. It consists of the four

mam areas:

I. Blast furnace

2. Charging equipment

3. Gas cleaning equipment

4. Hot blast stoves

The furnace in which the smelting process occurs is a tall, refractory-lined steel shell

having a circular cross-section. During operation of the furnace, the shaft is filled

with a carefully controlled mixture of the iron bearing materials, coke, and fluxes

which are coarsely granular in form. Hot air for combustion of the coke in the

charge is injected into the lower portion of the furnace through water cooled nozzles,

or tuyeres. The coke and auxiliary fuels that may be injected at the tuyeres (natural

gas, pulverised coal) are burned in a region just in front of the tuyeres (the raceway)

to produce a very hot gas that consists primarily of carbon monoxide and nitrogen.

This gas passes up the furnace through the charge in the shaft and heats and alters the

charge chemically in its passage. As a result of burning of the coke at the tuyeres

and forming liquid iron and slag in the hearth, the solids in the shaft descend slowly

and pass through the furnace in approximately 8 hours. Accordingly, new charges of

- 1 -

iron bearing materials, fluxes, and coke are added at regular intervals to the top of

the furnace, and the liquid slag and hot metal are drawn off at the bottom

periodically.

Stove No. I

Stove No.2

Figure 1-1 - Outline of the Blast Furnace Plant

Stoves Flue

Stove No.3

Facilities at the top of the furnace shaft seal it to permit operation at pressures

between one and two atmospheres. These facilities provide for collection of the

gases after they leave the shaft and for regular and controlled additions of the raw

materials and coke. The conventional device consists of a small and a large bell.

The small bell rotates with a distribution hopper for delivering materials around the

top of the large bell according to its predetermined charge cycle or sequence. When

the large bell is full, it is lowered to allow the materials to drop into the furnace.

The blast is introduced through a series of equidistant water cooled nozzles called

tuyeres that are located just above the hearth wall. At BHP Newcastle No. 4 Blast

Furnace, the hot blast temperature is 1065° C with a pressure of about 260 kPa

(gauge) to overcome the resistance of the materials inside the furnace. The total

blast flowrate is usually around 120,000 Nm3/hr and the velocity in each tuyere is

approximately 200 mis. Directly below the tuyeres, the liquid slag and hot metal are

-2-

collected in the hearth which is lined with carbon brick or with high quality

refractory brick. The tap hole is situated about 1 m above the hearth bottom and is

used to periodically drain the liquid iron and slag from the hearth.

A large volume of low grade gas is also produced which can be used for heating

purposes throughout the steelworks. This is passed through a dust catcher to remove

most suspended particles after collection from the top of the blast furnace. The

composition of this gas varies somewhat with different furnaces and with raw

materials and fuels, but it will usually be approximately 52% nitrogen, 21 % carbon

monoxide, 22% carbon dioxide, and 5% hydrogen on a dry basis. The heating value

of this gas is relatively poor, usually in the range of 3.2 MJ/m3 to 3.5 MJ/m3•

The system for supplying the hot blast air to the tuyeres includes very large air

blowers, three or four stoves for preheating the air, and duct work to distribute the

air to the tuyeres. This system is described in more detail in the following section.

1.2 INTRODUCTION TO THE HOT BLAST STOVES

The hot blast stoves are essentially large regenerative type heat exchangers and are

used to heat the hot blast before entering the tuyeres at the blast furnace.

A hot blast stove is a large cylindrically shaped vessel consisting of a steel shell,

lined with an insulating material and almost completely filled with a refractory brick

called checkerwork. A typical stove with its cross section is shown in Figure 1-2.

Each blast furnace usually has three or four stoves associated with it to supply the

required hot blast volume at the specified temperature. Hot blast stoves vary

somewhat in their size, although their physical appearance is usually the same. A

typical stove has a height of about 30m and diameter of 1 Om with a

hemispherically-shaped top called the dome. The combustion chamber takes up a

relatively small proportion of the stove area and usually runs the full length of the

stove to facilitate complete combustion. The checkerwork is made up of

interlocking refractory bticks with holes for the gas to pass through. These holes, or

- 3 -

flues, are usually either circular or rectangular shaped having a hydraulic diameter of

about 40 to 65mm. The holes are aligned in the vertical direction such that they

form long narrow tubes through the entire length of the checkerwork. The

checkerwork at the top of the stove will have different properties to that at the

bottom due to the different operating temperatures, and the checkerwork may be

separated into multiple zones throughout its length. The checkerwork at the top

must be capable of withstanding high temperatures, that at the mid section will be of

moderate temperature resistance, while the lower section need only withstand

relatively low temperatures.

hot blast ~

checkerwork ---+---

combustion air ... fuel gas ...

Stove Elevation

combustion chamber insulation

Stove Cross-Section

Figure 1-2 - Hot Blast Stove

The stoves rely on the thermal storage of the checkerwork to supply the heat for the

hot blast. Cold blast is introduced near the base of a stove and is heated as it passes

through the hot checkerwork. This particular stove is said to be on blast cycle which

lasts for approximately 60 minutes. However the blast cycle duration will depend on

the amount of useable heat in the checkerwork and the stoves operating mode. A

stove which has just been put on blast is usually capable of supplying hotter air than

is necessary to obtain the desired hot blast temperature and therefore cooler air is

added to this heated air. For the sequential operating mode, the cooler air is supplied

- 4 -

from the cold blast air main via the mixer valve which is regulated by the hot blast

temperature controller. As the stove cools off, the amount of cool air required

decreases until the mixer valve reaches the closed position. At this point, the stove is

no longer capable of maintaining the hot blast temperature and another hot stove is

put on blast. The cold stove is then ready to be heated or put on gas. However,

before going onto gas, the stove must be isolated from the blast furnace and

depressurised during the changeover period lasting approximately 5 minutes.

An alternate operating mode for the blast cycle is that of the staggered parallel

system. For this type of control, the traditional mixer valve is not used and instead

the hot blast is passed in parallel through a hot stove and a cooler stove. The cooler

stove partially preheats the cold air, which is then mixed with the blast air from the

hotter stove. The ratio of the blast through each stove will depend on their thermal

condition such that the total flowrate will be equal to the required blast volume and

the temperature after mixing of the two blast streams will give the desired hot blast

temperature. The cooler stove will be taken off blast cycle when another stove has

been sufficiently heated during its gas cycle. The staggered parallel mode is

normally used with four stoves, although it may be used with three stoves if the

firing rate during the gas cycle is sufficiently high. There are three stoves at BHP

Newcastle No. 4 Blast Furnace and these are operated using the sequential mode.

During the gas cycle, fuel gas is mixed with combustion air and ignited to produce a

hot gas. The temperature of the gas depends on the calorific value of the fuel but

will normally be in the range 1200°C to 1500°C. This hot gas permeates through

and heats the checkerwork. The gas passes through the checkerwork from top to

bottom and the temperature of the outlet gas, or waste gas, is considerably lower

than that at the top of the stove, in the vicinity of 200° C to 400° C. The stove

refractory has a limited operating temperature range and the combustion process

must be controlled by adjusting the fuel gas and combustion air flow rates to remain

within the refractory temperature constraints. The end point of the gas period is

determined when the waste gas reaches a maximum temperature, which is a function

of the refractory limitations. This stove is then ready to be changed over from gas to

blast. After first isolating the fuel supply and purging the combustion gases from the

- 5 -

stove (by allowing the combustion air fan to continue for a few moments), the stove

can be pressurised up to blast pressure ready for the blast cycle. If the stove which is

currently on blast is not ready to be put on gas, i.e. the mixer valve has not closed,

the stove ready to be pressurised up to blast pressure can remain in an isolated

condition and is referred to as being bottled. This is an undesirable state since it

means that the stove has not been heated in an efficient manner during its gas cycle.

The efficient heating of a stove is important to minimise fuel consumption and to

achieve a maximum hot blast temperature.

1.3 STOVES CONTROL OBJECTIVES

Whether the hot blast stoves are manually controlled or automatically managed by a

process computer, the stoves control objectives form the basis of any control strategy

used for the stoves operations. The key objectives are:

1. maintaining the required hot blast temperature,

2. maximising thermal efficiency, and

3. extending the stoves campaign life.

1.3.1 Hot Blast Temperature

Maintaining the hot blast temperature is critical for maximising the blast furnace

productivity, ensuring operational stability, and achieving the desired hot metal

quality. Any change in hot blast temperature requires evasive action to be taken to

maintain the thermal heat balance of the blast furnace.

The mixer valve controls the hot blast temperature for a stove on blast cycle,

however the period for which a stove can sustain the required temperature depends

on the thermal heat stored in the checkerwork. It is therefore important to attain the

correct level of heat storage during the gas cycle and stable stoves operation is

required to consistently achieve this objective.

- 6 -

Although the temperature of the checkerwork in a stove varies considerably with

height, it does not vary as much from one cycle to the next, particularly during short

cycle periods. For example at the start of the gas cycle, the checkerwork will have a

certain temperature distribution and by the end of the cycle, it will have a

distribution which is roughly the same shape with an offset of approximately 200° C.

Under normal stable operation, the checkerwork will cycle back and forth between

these temperature distributions, however a small disturbance may alter the

checkerwork temperature distribution in one of the stoves. This anomaly is then

transferred to the other stoves via the changeovers and, if large enough, can

de-stabilise the set of stoves. Operational experience of the hot blast stoves system

provides evidence of the difficulties and time involved with re-stabilisation of the

stoves and this usually leads to a deviation in hot blast temperature. In such an

event, a control system should be able to recognise this reduced stove system

stability and be robust enough to correct the situation. The disturbance causing the

stability problem could be the result of a sudden event such as a valve failure or the

cumulative result of a longer term problem, such as a reduction in fuel gas calorific

value, which has not been identified early enough.

1.3.2 Ener2)' Efficiency

The hot blast stoves consume a vast amount of energy for preheating the large

volume of blast to the desired hot blast temperature. The stoves are normally fired

on blast furnace gas which is a by-product of the smelting process in the blast

furnace. The blast furnace gas generally has a low heating value due to the presence

of about 70 to 75% nitrogen plus carbon dioxide and is of little commercial value.

Typically, blast furnace gas is also distributed to other consumers around the

steelworks such as the coke ovens, steam boilers, reheat furnace, and other

miscellaneous users, however the hot blast stoves are one of the largest consumers of

blast furnace gas.

The thermal efficiency of the stoves is normally one of the parameters considered

· when investigating their effectiveness. It is defined as the ratio of the energy

- 7 -

required to heat the blast and the energy supplied to the stoves in the fuel gas during

the gas cycle. This can be expressed as:

11 _ Qblast

•1t1i--­Qfael

(1-1)

Due to the large amounts of fuel gas used in the hot blast stoves, a small change in

thermal efficiency has a large impact on the amount of fuel gas consumed in the

stoves. For example, the stoves at BHP Newcastle No. 4 Blast Furnace consume

approximately 5000 GJ of energy per day. It is for this reason that much effort has

been directed at improving the stoves thermal efficiency.

For blast temperatures above ll00°C, it is normal to enrich the blast furnace gas

with another fuel gas having a higher calorific value, such as coke ovens gas or

natural gas. There is usually a higher demand for such fuels and their cost per unit

volume is also much higher than blast furnace gas. In the case of fuel gas

enrichment at the stoves, the first priority is to minimise the consumption of rich gas.

For the situation at Algoma Steelworks, Cheng et alP1 have calculated the optimum

blast temperature in order to minimise the natural gas enrichment at the stoves. It

was found that a reduction in hot blast temperature from 1150°C to 1040°C virtually

eliminated the need for enrichment. A further problem which was experienced at

Algoma works is the bleeding of blast furnace gas, although this particular problem

was worsened by the absence of a gas holder to take up the surge capacity. The

bleeding of blast furnace gas is not uncommon to steelworks, however it only takes

place during periods of low blast furnace gas demands which are usually less

frequent than the high demand periods. Therefore maximising thermal efficiency is

still a major objective of the hot blast stoves even on plants where blast furnace gas

is bled from time to time.

- 8 -

1.3.3 Stove Life

A set of hot blast stoves is a highly capital intensive investment and therefore an

appropriate strategy should to be adopted to maximise their working life. The

checkerwork is an important component in this strategy as certain measures rpust be

undertaken to ensure refractory temperatures remain below the maximum limits. For

example, maintaining the dome temperature below its maximum limit is of

paramount importance to stoves life even though it conflicts with attempts to

maximise hot blast temperature and thermal efficiency. The dome temperature is

closely monitored with thermocouples or radiation pyrometers, or a combination of

both, and usually automatically controlled with excess combustion air. As a safety

feature to protect the dome, the fuel gas should be automatically cut off if the dome

temperature reaches its maximum. Another major temperature constraint is the

maximum allowable flue temperature to maintain the structural integrity of the

checkerwork support structure. To ensure that this condition is not violated, the

stove should be automatically changed over to the blast period when the flue gas

temperature reaches its maximum. The rate of checkerwork heating, particularly in

the upper region of the stove, can also impact on the refractory life. However, this is

usually a secondary consideration and may be often neglected since the firing rates

are not normally high enough for this to be a problem.

It is also important to minimise the amount of reducing gas (carbon monoxide) in the

checkerwork to eliminate chemical degradation of the refractory. This can be

achieved by supplying sufficient combustion air during the gas cycle to ensure

complete combustion of the fuel gas. Strassburger21 recommends that a lower limit

of 1 % oxygen in the flue gas should be specified.

Another area of significance to the stove life is stress corrosion cracking in the steel

shell. Snowdenf3l et al have reported successful repair techniques for stress corrosion

cracking in the interior surface of the stove shell plate and indicate that using coke

ovens gas enrichment produces more nitrous oxides thus increasing the risk of stress

corrosion cracking. Therefore the amount of coke ovens gas enrichment should be

minimised to reduce stress corrosion cracking in the plate.

- 9 -

1.4 REVIEW OF STOVES CONTROL

The desire to improve the control of hot blast stoves is normally driven by a

reduction in fuel and labour costs, life extension of the hot blast stoves refractory,

and the ability to increase hot blast temperature. It appears that upgrading stoves

control has stemmed from an improved understanding of the combustion and heat

transfer mechanisms within the stoves.

Kashtanova et al141 have investigated the optimal cycle times of a hot blast stoves

system operating under a staggered parallel strategy at the West Siberian Steelworks.

The maximum dome temperature for these stoves, maximum flue temperature, and

hot blast temperature were 1350° C, 400° C, and 1200° C, respectively. It was

concluded that a decrease in total cycle time from 6 to 4 hours would theoretically

allow the blast temperature to be increased by 40° C, although the average

temperature reached during trials of this scheme increased the blast temperature by

only 26°C. The cause of this deviation was thought to be the absence of a

quasi-stationary state because of the short time of stoves operation in this regime

during the trials. It was also noted that as the resistance to gas flow through the

checkerwork would increase over time, the stoves should be changed to a sequential

operating regime in order to maintain the hot blast temperature at 1200° C with the

existing fuel pressure.

More et al151 discuss the control of hot blast stoves using a thermal heat balance

model which was used as an operator guidance system. After calculating the amount

of heat input required, the thermal efficiency for each stove on the previous gas

cycle was used to determine the fuel gas set point. The oxygen and carbon

monoxide content of the flue gas was then measured in order to optimise the air to

fuel ratio and at the end of each gas cycle, an automatic assessment of the

performance carried out on each stove. This control technique was applied to the

control of No. 4 blast furnace stoves of the S.A. Des Forges De Thy-Marcinelle &

Monceau. These stoves were equipped with a wide range of sensing instrumentation

including radiation pyrometers for dome temperature monitoring, flue gas oxygen

analysers, infra-red carbon monoxide monitoring of flue gas, and a calorimeter for

- 10 -

the fuel gas. Using the operator guidance control model, thermal efficiencies were

increased by approximately 2% and the hot blast temperature prior to mixing

increased by approximately 1 o· c. It also allowed the diagnosis of incomplete

combustion during the gas cycle which subsequently led to a redesign of the burner

arrangement to achieve further fuel savings.

~ovetkin et alC6l carried out a theoretical investigation of a control scheme which

increases the amount of heat storage in a stove so that the hot blast temperature could

be increased. The strategy was to establish the maximum possible firing rate of the

stoves during the gas cycle until the flue gas reached its maximum permissible

temperature. From there, the air and fuel flowrates were reduced smoothly to

maintain the flue gas temperature at its maximum. The analysis was carried out

using a mathematical model simulating a stove system operating with sequential

control. It was found that as the firing rate during the initial part of the gas period

increased, the thermal efficiency of the stove decreased. However, the blast

temperature reached a maximum and then decreased. Therefore, the proposed

method of control could maximise the blast temperature but only at a specified

maximum firing rate.

The optimum cycle period of hot blast stoves for sequential and staggered parallel

operations were examined by Lezhnev et alPl using a thermal heat balance model.

The optimum period was defined as that which would maximise the hot blast

temperature and thermal efficiency for particular firing and blast parameters. An

optimisation algorithm was developed to enable rapid calculations of the optimum

cycle period. This algorithm searched for the conditions which maximise an

efficiency function with limitations on the maximum permissible temperatures. A

more general procedure to determine the optimal thermal operating conditions is

presented by Shklyar et al[81 . This procedure calculates .the ideal fuel flowrate, ratio

of rich gas to lean gas, cycle period, and hot blast temperature. An algorithm was

then used to minimise a cost function to determine the optimum operating

parameters.

- 11 -

Bouget et al£9l demonstrate the application of a computer aided model for hot blast

stoves control at Solmer Steelworks. The control system supervises the changeover

timing of two sets of stoves and hence the total fuel gas demand to maintain the

stability of the fuel gas supply pressure. The amount of heat required for the blast

parameters is calculated along with an assessment of the thermal condition of each

stove at the end of the blast cycle. The results of these calculations, along with the

flame temperature set point, were then used to determine the flowrates of rich and

lean fuel gases. Application of this control system reduced the demand for rich fuel

gas, increased thermal efficiency by approximately 4.5%, and reduced the variability

of the hot blast temperature.

Matoba et alP0l give a description of an automatic control system for hot blast stove

operation which was based on a mathematical model. The mathematical model was

used to estimate the dynamic characteristics of a stove using a series of pulse transfer

functions. A state space model was then formulated and the gain vectors calculated

by solution of the Riccati equation. The control system was introduced at Kokura

Steelworks and applied to actual operations. The hot blast temperature variability

was reduced by approximately 50% and the thermal efficiency of the stoves

increased by 2%.

The application of a computerised stove control model at Algoma Steelworks is

reported by Cheng et a1r11• The computer system automatically controlled blast

temperature, firing rates, stove event tracking, and stove logging functions. The

blast temperature control function maintained the blast temperature when in

staggered parallel mode, selected the appropriate stove to be put on blast, and

predicted the time a stove will be taken off blast. The firing rate control function

determined the firing rates necessary to maintain the hot blast temperature, the

optimum air to fuel ratio and rich gas to lean gas ratio, and the rate of change in the

dome temperature set point. The air to fuel ratio was optimised by using an oxygen

analyser in the flue gas and feedback control for the combustion air flowrate set

point. The stove event tracking and stove logging features were used to record

events and produce reports for efficiency monitoring and trouble shooting.

- 12 -

Improved thermal efficiency and stability of the blast furnace operations were

demonstrated as a result of the implementation of the computer control system.

A unique process for obtaining high blast temperature with low calorific fuels is

described by Dai et alP 11 and has been successfully implemented at Jinan Ironmaking

Plant. An additional cycle is scheduled after the blast cycle where a stove is used to

preheat the combustion air of another stove on gas cycle; this is called the preheating

cycle. Although the thermal efficiency of this process was slightly lower, it was

possible to attain a hot blast temperature higher than that possible using the

conventional staggered parallel and sequential strategies with a low heating value

gas.

Derycke et alP2l present a computerised control and optimisation system at Sidmar

Steelworks which attempted to achieve optimum combustion, maximum stove

efficiencies, and elimination of simultaneous stove changeovers for two sets of

stoves. The calculation of the air to fuel ratio was based on the fuel gas mixture, the

excess air necessary to achieve the flue oxygen set point, and the dome temperature

overshoot prediction. The process computer calculated the energy requirements by

determining the stove efficiency and the heat content at the end of the blast period.

When a stove had been insufficiently heated and the blast temperature became 10° c below its set point, a changeover was initiated immediately by the process computer.

It was reported that the introduction of the computer control system reduced the hot

blast energy costs by about 12-17%.

The application of fuzzy theory to control the fuel gas flow rate to a set of hot blast

stoves at No. 6 Blast Furnace at Chiba Steelworks is described by Makai et alr131•

The objective was to minimise energy costs while controlling the checkerwork

temperature distribution to ensure refractory protection. Based on the checkerwork

temperature distribution and the residual heat level at the end of a blast cycle, a three

stage fuzzy set was defined using a trapezoidal membership function. The heat input

rate control action was then combined with the fuzzy set to yield 18 control action

rules. Off-line simulation of the control scheme predicted that the accuracy of the

heat input control action was increased when compared to manual control. The

- 13 -

fuzzy control scheme was subsequently applied to the hot blast stoves and resulted in

a reduction in checkerwork temperature variability which led to an increase of 3% in

thermal efficiency.

Beentjes et alC14l establish the functions required of a computer controlled hot blast

stove system and briefly describe the control techniques used to obtain such

objectives. For control of stove heating, dome temperature, fuel gas enrichment

levels, and air to fuel ratios, calculations are outlined while a simple control

algorithm is proposed for dynamic heat control. The benefits of hot blast stoves

automation are described as being improved thermal efficiency, stable operation,

simpler operator control, and longer stove life.

1.5 REVIEW OF STOVES MODELLING

The mathematical modelling of hot blast stoves has been studied for many years and

this work has formed the basis for improvements in operating strategies. The

mathematical models vary in their complexity, however they are usually derived

from a common set of assumptions.

The initial work was carried out by HausenC15l who proposed the fundamental

hyperbolic differential equations for calculating the checkerwork temperature

distribution as a function of space and time. The equations were derived using the

following assumptions:

I. Heat transfer between gas and solid can be represented in terms of an overall heat

transfer coefficient relating gas temperature to solid temperature.

2. The heat capacity of the gas in the flues of the checkerwork at any instant is

negligible relative to the heat capacity of the checkerwork.

3. Longitudinal thermal conductivity in the checkerwork is negligible.

The equations were solved for thermal equilibrium conditions using an eigenvalue

technique by assuming that the checkerwork temperature distribution was identical at

- 14 -

the end of successive cycles. However, in practice, this assumption may not be valid

since minor changes in operation (e.g. variation in fuel calorific value) usually

prevents the stoves from. reaching dynamic stabilityl21.

Butterfield et a1C161 carried out a fundamental analysis of stove operation. In

particular, they investigated the convective and radiative heat transfer mechanisms

within the stove and discuss the variation of these modes with respect to gas flow

rates and gas temperature. They state that the nonlinearity associated with the

radiative heat transfer complicates the numerical problem, but outline a technique to

calculate the overall heat transfer coefficient. The method consists of dividing the

checkerwork into a number of zones, calculating the average of the gas temperatures

during the gas and blast cycles for each zone and assuming that the gas temperature

is equal to the checkerwork temperature for each zone. The radiative heat transfer

coefficient was then calculated using these temperatures and a number of correction

factors were applied to determine the overall heat transfer coefficient. However, this

approach relies heavily on empirical charts and is difficult to implement in a

computer simulation model.

WilmottC171 discusses a simulation type solution procedure for the differential

equations describing checkerwork and gas temperature distributions. The procedure

employed the trapezoidal method of difference representation and effectively cycled

the mathematical model to equilibrium. It was also demonstrated that the method

could be extended to include the temperature dependence of the gas thermal

properties together with the time dependence of the flow rate and convective heat

transfer coefficients. In a later paper, WilmottP 81 considers the two dimensional heat

transfer case where the checkerwork is represented as a plain wall of specified

semi-thickness related to the flue diameter. The checkerwork thermal conductivity

in the direction of gas flow was considered to be ·negligible and in the perpendicular

direction to be finite. It was concluded that the two dimensional solution gave an

improved representation of the problem but for use in nonlinear problems such as

temperature dependant properties or time varying flow rate, the amount of computer

time necessary was prohibitive.

- 15 -

The use of an off-line mathematical model to simulate the operation of a hot blast

stove system is described by Beets and Elshoutf191• The model was used for the

design of new stoves systems, optimisation and trouble shooting of existing

facilities, and design of control techniques. Full details on the model formulation are

not provided however it appears that an overall thermal balance of the stoves system

is used to calculate the heating requirements and cycle times. The model was

originally formulated to describe the static behaviour of the stoves but was later

modified to include the dynamic response of changes in operating parameters such as

the hot blast temperature set point.

A mathematical model described by Matoba et a1r101 not only includes the solution of

the governing differential equations for temperature distribution but also calculates

the flame temperature of the combustion products during the gas cycle and includes

the effects of gas reversals during stove changeovers. It is explained that the

differential equations were solved using finite differences with 40 vertical zones of

the checkerwork. During changeovers, the effects of compression, decompression

and gas purging of the stoves were taken into account in calculating the heat transfer.

The dynamic characteristics of the mathematical model were investigated using

actual stoves operations data and it was found that the calculated and measured

values corresponded well.

More et a1C5l detail a thermal heat balance model which was used for stoves control.

Previous work on stoves modelling by Hausenf151 is noted but it was decided that

such a mathematical model required too much computing time for real time control

in spite of the simplifications introduced into the model formulation. The control

model calculated the amount of heat required during the gas cycle to achieve the

specified blast parameters and took into account the thermal efficiency for each

stove. From this, the air to fuel ratio was calculated to give complete combustion

and a simple algorithm was proposed to determine the ratio of rich fuel gas to lean

fuel gas.

A simulation program used to determine the optimum operating conditions of a hot

blast stove system equipped with waste heat recovery units and an air preheater is

- 16 -

described by Tamura et a1r201 of Kobe Steel, Ltd. The simulation program was based

on a mathematical model of the heat transfer and fuel combustion mechanisms. The

model considers one dimensional heat transfer neglecting the gas transient term and

vertical heat flow within the checkerwork. It was reported that application of the

simulation program resulted in an increase in thermal efficiency of 5%.

Tatemichir211, also of Kobe Steel, describes a heat transfer simulation model of the

hot blast stoves which was used as part of a program for the reduction in energy

consumption in the blast furnace area. Although the mathematical model described

by Tamura et a1r201 was not referenced, the model formulation appears to be identical.

The simulation model was used to determine the heat transfer characteristics of the

stoves and investigate the relationship between thermal efficiency and various input

parameters, however automatic control of the stoves was not addressed.

Christman and Poveromol221 describe a hot blast stoves computer model at

Bethlehem Steel, which was used in calculating the interactions among stove

conditions and blast parameters to assist in the study of overall blast furnace plant ·

economics. The stoves model was a mathematical simulation of a hot blast stove

system incorporating combustion and regenerative heat exchanger calculations for a

particular mode of stoves operation, although automatic control was not addressed in

this particular model. The principal inputs to this model were blast parameters,

stove fuel details with aim flame temperature or fuel gas enrichment, stove

temperature limitations, aim cycle times, and physical checkerwork data. There was

also provision for varying the fuel flow rate and combustion product temperature

during the course of the gas cycle, and for preheating fuel and combustion air. From

these details, the model calculated combustion temperature or fuel gas enrichment

level, achievable blast temperature, log of checkerwork and gas temperatures as a

function of time, fuel consumption, and stove efficiency. As an example, the impact

of increasing the hot blast temperature on blast furnace energy costs was determined

using the stoves model in conjunction with an ironmaking heat and mass balance

model. Results indicated that an increase in hot blast temperature decreased total hot

metal costs for any value of purchased fuel as long as the blast furnace was not

limited by flame temperature.

- 17 -

1.6 PROJECT OBJECTIVES

The objectives of this project are to provide a better understanding of the hot blast

stoves process and assist in developing new techniques which increase the stoves

thermal efficiency, extend the stoves life, and reduce the variability of hot blast

parameters. This will be achieved through the development of a computer

simulation model of the hot blast stoves process with automatic control.

1. 7 PROJECT SCOPE

To meet the project objectives, the following items will be completed:

1. Formulate a mathematical model of the combustion and heat transfer

mechanisms within a hot blast stove, utilising previous work of Matoba et a11101 •

2. Derive a numerical algorithm to solve the governing equations such that it can be

easily implemented as a computer program.

3. Develop a computer simulation model to emulate the stoves process.

· 4. Devise an automatic control scheme able to achieve the stoves control objectives.

5. Incorporate this control scheme into the computer simulation model.

6. Tune the control scheme usmg the simulation model to obtain optimal

performance.

7. Compare the model results to the process data for the stoves at BHP Newcastle

No. 4 blast furnace.

8. Evaluate the effectiveness of the proposed control scheme in terms of hot blast

temperature variability and stoves thermal efficiency.

- 18 -

2 DEVELOPMENT OF NUMERICAL MODEL

It was explained in Chapter 1 that the hot blast stoves are regenerative heat

exchangers with the checkerwork acting as the heat storage medium. During the gas

cycle, heat is transferred from the hot combustion gases into the checkerwork by

convection and radiation mechanisms. The thermal energy stored in the

checkerwork is then used to heat the blast air to the required temperature during the

blast cycle. To simulate the stoves process, the gas temperature leaving the

checkerwork must be calculated as a function of time. It is this temperature which

will be varying over time as the thermal storage in the checkerwork is either

increased (in the case of the gas cycle) or reduced (during the blast cycle) and it will

ultimately determine the end point of the gas and blast cycle. To calculate the gas

temperature leaving the checkerwork, the gas and solid temperature distributions

must be calculated as a function of checkerwork height and time. This chapter

examines the formulation and discretisation of the equations governing heat transfer

in the stoves. The combustion and gas mixing processes are also examined as they

have an important impact on the heat transfer mechanisms.

2.1 HEATING MODEL FORMULATION

To calculate the gas and solid temperature distribution as a function of checkerwork

height and time, the energy equations for both gas and solid phases are solved given

the initial and boundary conditions. Figure 2-1 shows the calculation domain of the

problem where the gas enters the checkerwork with an inlet temperature Tg0 and

velocity ug0 ,leaving the checkerwork at exit conditions TgL and ugL· The gas

properties may vary considerably with temperature and hence a numerical technique

is used to calculate the relevant gas properties (see Appendix C). For the

checkerwork, the specific heat is assumed to have a linear relationship with

temperature, while the density can be considered constant over a wide range of

temperaturel231• The density of the checkerwork is, however, dependant upon the

refractory material, which varies in the axial direction.

- 19 -

Tgo' Ugo

1 Gas Phase

Pg (Tg)

Cp9{Tg)

qLOSS L

Solid Phase

Ps(X)

Cv 9 (Ts)

Figure 2-1 - Calculation Domain

2.1.1 Assumptions

The energy equations can become quite complex in their unreduced form and

therefore a number of assumptions will be applied to simplify them.

I. Negligible heat flow in the radial and circumferential directions. WilmottC181 has

carried out an investigation of two dimensional heat transfer in the checkerwork

of a hot blast stove and found that the improved accuracy over the one

dimensional model was not of great value considering the added complexity and

inflexibility.

2. Negligible axial heat conduction in the checkerwork. The thermal conductivity of

the checkerwork of a hot blast stove is normally quite low, in the vicinity of I to 2

W/m•K, and WilmottC181 has shown that the heat transfer due to thermal

conduction compared to that given up by the gas is extremely small.

- 20 -

3. Negligible gas pressure loss through the checkerwork. The pressure drop through

the stoves checkerwork under full blast conditions has been reported to be

approximately 2 kPa1241 which is less than 2% of atmospheric pressure.

4. Negligible viscous dissipation from the gas phase. Holmanl251 derives an

expression which indicates the gas velocity required to approach the area of

significance for viscous dissipation. It is shown that the velocity would need to

be in the vicinity of 650 mis for air at atmospheric conditions. Since the gas

velocity in the checkerwork will usually be in the order of 5 mis (Appendix D),

the viscous dissipation term can be ignored.

5. Negligible thermal diffusivity of the gas phase. For diffusion to be considered, the

ratio of convective to diffusive forces must be significant and this condition

requires an extremely low gas velocity1261. Under normal operating conditions,

the gas velocity in the checkerwork will remain high enough (see Appendix D) to

neglect diffusion.

6. Ideal gas. At the pressures and temperatures characteristic of the stoves, the

behaviour of gases approximates very closely to that of a hypothetical ideal

gas1211.

2.1.2 Ener~y Equations

The governing equations for the gas and solid phase temperature distributions are

derived as a function of space and time within the calculation domain shown in

Figure 2-1 using a thermal energy balance approach. The assumptions given in

section (2.1) will be introduced to greatly simplify the initial energy equations for

gas and solid phases.

- 21 -

2.1.2.1 Gas Phase

The energy equation of a perfect gas for three dimensional flow in cartesian

coordinates is given by28l:

where

.m. _ 2[(aug )2 (avg )2 (awg )2] (avg aug )2 (awg avg )2

'¥- - + - + - + -+- + -+- + ax ay az ax ay ay az +(aug + awg )2 -~(aug +avg+ awg )2

az ax 3 ax ay az

Now for one dimensional flow:

a -=0 dZ v=O w=O

Neglecting pressure variations and viscous dissipation:

Dpg =0 Dt

With negligible thermal diffusivity:

- 22 -

(2-1)

(2-2)

(2-3)

(2-4)

(2-5)

(2-6)

(2-7)

Hence the energy equation becomes:

(2-8)

The gas velocity may be written as a function of the mass flowrate and the gas

density, hence:

(2-9)

With the mass flowrate constant over the calculation domain (continuity) and the

source term taken as being positive for heat flow out of the gas, the energy equation

for the gas phase becomes:

(2-10)

Solution of equation (2-10) gives the gas temperature distribution as a function of

space and time, T/r, t), and details of the solution technique will be presented in a

following section.

2.1.2.2 Solid Phase

The energy equation for three dimensional heat transfer m a solid is given m

cartesian coordinates by281:

'dTs _" (k "1) 111 PsCv,Tt- Y • s V +qs

Now for one dimensional heat transfer:

a -=0 'dy

a -=0 dZ

- 23 -

(2-11)

(2-12)

Neglecting axial heat conduction:

(2-13)

Thus, the energy equation for the solid phase becomes:

(2-14)

Unlike equation (2-10) for the gas phase, equation (2-14) describes the solid phase

temperature as a function of time only, 1'..(t). It will be shown that these two

equations are actually coupled and must be solved simultaneously to give the gas and

solid temperature distributions.

2.1.3 Boundary Conditions and Initial Conditions

To determine the gas temperature profile, boundary conditions and initial conditions

are required. Similarly, to determine the solid phase temperature distribution, an

initial checkerwork temperature profile must be given. The boundary conditions for

the gas phase are the temperature and velocity of the gas at the inlet to the

checkerwork, Tg0 and ug0, which is illustrated in Figure 2-1. Hence:

Ug = Ug0 at X = 0 (2-15)

(2-16)

During the gas cycle, the gas enters the top of the checkerwork and its velocity will

depend on the fuel and combustion air flowrates. The inlet temperature is a function

of the combustion conditions which will be discussed in a later section. For the blast

cycle, gas enters the base of the checkerwork with a constant temperature (cold blast

temperature), however the velocity will be a function of the blast air flowrate passing

through the stove which will vary over the blast cycle duration as the mixer valve

closes.

- 24 -

An initial checkerwork temperature distribution must be defined to solve the gas and

solid phase energy equations. As the heat capacity of the gas is relatively small, its

initial temperature distribution may be set equal to the initial checkerwork

temperature distribution. These initial conditions can be written as:

Ts(X) = T](x) at t = 0 (2-17)

Tg(x) = T](x) at t = 0 (2-18)

2.1.4 Source Term

The source term is the amount of heat transferred between the gas and solid phase

due to convection and radiation heat transfer. However, for the solid phase, there

will be heat losses through the wall of the stove which must be taken into account in

the source term. The sign convention of the source term will be such that it will be

considered positive for heat flow from the gas phase to the solid phase.

For convective heat transfer, Newton's law of cooling gives:

(2-19)

For radiation heat transfer between gas and solid phases, HolmanC251 derives:

(2-20)

Equation (2-20) is valid for grey surfaces with es> 0.9 which is the case inside the

checkerwork.

To calculate the heat transfer area inside the checkerwork consider a single tube of

diameter d1 and length ~x; the heat transfer area is given by:

(2-21)

- 25 -

The checkerwork can be considered to be made up of a bundle of n tubes and for a

checkerwork length of~. as shown in Figure 2-2, the internal heat transfer surface

area can be found from:

where:

gas flow

''

Checkerwork

(2-23)

(2-24)

checkerwork flues diameter dr

000000000 000000000

000000 000

Checkerwork Cross-Section

Figure 2-2 - Representation of Checkerwork in Model

Combining the convective and radiation heat transfer modes, the heat transfer from

the gas phase to the solid phase over the length A"t will be:

(2-25)

There will also be heat loss from the checkerwork by conduction through the stove

wall and convective heat transfer on the outside of the stove shell. Holman[251

- 26 -

expresses this combination of heat transfer by a thermal resistance such that over a

length&:

(2-26)

where:

(2-27)

The internal wall of the stove is usually lined with thick layers of refractory

insulation. Therefore the thermal resistance due to conduction must be calculated by

taking into account the combined conductivity of the refractory plus the steel casing.

Hence, for n layers of material, the conductive rC?sistance can be found using:

(do.) n In d;~

R -~ ' thcond - ~ 21Ck

j=} Wj

The convective resistance is determined from the following relationship:

1 Rthconv = h d

~TC o

Therefore, the net heat transferred into the solid phase over Ltt will be:

(2-28)

(2-29)

(2-30)

The source terms given m equations (2-10) and (2-14), can be obtained by

expressing equations (2-25) and (2-30) as the heat transfer per unit volume, thus:

111 _ Pi[h ( ) Es+ 1 ( '7'4 '7'4 )] qg - A,,. c Tg-Ts +a-2- Eg.ig-CX.g.Li

0

(2-31)

(2-32)

- 27 -

The magnitudes of the convective and radiative heat transfer per unit area as a

function of gas temperature are compared in Figure 2-3 for the gas cycle. A constant

temperature difference of so·c between the gas and solid phases was assumed in

calculating the source term. The flowrate of combustion gases was 70,000 Nm3/hr

and the chemical composition was taken as being 62% N2, 4% 0 2, 32% C02, and 2%

H20. These conditions reflect typical values for the stoves at BHP Newcastle No. 4

Blast Furnace which are fired on blast furnace gas and an excess of combustion air is

supplied to control the flame temperature at 1200° C. It can be seen from Figure 2-3

that the radiation heat transfer is comparable to the convective heat transfer at high

temperatures and therefore can not be neglected.

heat transfer (W/m2 )

1,600.....----------------------------.

1,400

1,200

1,000

800

600

400

200

0 I

500 600 700 800 900 1000 1100 1200 1300 1400 1500 gas temp. (K)

Figure 2-3 - Variation of Heat Transfer With Gas Temperature During the Gas Cycle

The convective and radiative heat transfer per unit area as a function of gas

temperature for the blast cycle is shown in Figure 2-4, again using a temperature

difference of 50° c between the gas and solid phases. The parameters used in this

case also reflect the conditions at BHP Newcastle No. 4 Blast Furnace with a blast

air flowrate of 120,000 Nm3/hr, cold blast temperature of 150°C, and blast air

- 28 -

chemical composition of 74% N2, 23% 0 2, and 3% H20. Although still significant,

the radiation heat transfer during the blast cycle is less important than the convective

heat transfer.

Comparing Figures 2-3 and 2-4, it can be observed that gas radiation is more

important during the gas cycle than it is during the blast cycle which can be

attributed to the difference in chemical comp?sition of the gases. This phenomenon

will be discussed in the sections to follow.

heat transfer (W/m2)

2,000------------------------~

convection

1,500 ------

1,000

500

radiation

500 600 700 800 900 1000 1100 1200 1300 1400 1500 gas temp. (K)

Figure 2-4 - Variation of Heat Transfer With Gas Temperature

During the Blast Cycle

2.1.4.1 Convective Coefficient

Convective heat transfer has attracted the attention of numerous investigatorsl291 and

many empirical relationships exist for the convective coefficient, based primarily on

- 29 -

experimental data. The Reynolds number is probably the most important variable

when considering forced convection and is the dominant factor in determining the

gas flow regime (laminar, transition, or fully turbulent). It is defined by HolmanC251

as:

(2-33)

It is found that the gas flowing through the checkerwork of a stove is usually

turbulent due to a fairly high Reynolds number (refer to Appendix D) and the

turbulence is further enhanced by the refractory roughness and the effect of

checkerwork brick misalignment. KakacC291 presents a survey on some of the

relationships available for convective heat transfer and evaluates their accuracy over

a range of fluid properties. Some of these are very complicated but even when most

of the factors influencing the convective heat transfer are known, HolmanC251

indicates that it is not uncommon to experience errors of the order of 25%. The

convective heat transfer coefficient is sometimes expressed in the following

empirical formC251 for turbulent flow:

(2-34)

where:

(2-35)

Pr"= Cpgµg 0 k g

(2-36)

The constant coefficient and exponents in equation (2-34) are usually experimentally

determined. Ridgion and KerrisonC301 have undertaken some experimental work on

the calculation of the convective heat transfer coefficient in checkerwork. It was

explained that the degree of surface roughness can have a significant effect on the

convective heat transfer, therefore smooth tube theory could not be directly applied.

- 30 -

The following expression is based on the results obtained:

(2-37)

It should be noted that the checkerwork flue diameter is used as the characteristic

dimension for the Reynolds number and the Nusselt number based on the assumption

that the gas flows uniformly through the checkerwork like a bundle of long tubes.

The required gas properties may be calculated using the procedure outlined in

Appendix C. Figure 2-5 illustrates the variation of the convective heat transfer

coefficient with temperature for a typical range of blast flowrates.

h(W/m2 ·K) 26~~~~~~~~~~~~~~~~~~---..--~-.--~-.--.

16L...L...~---1.~~-'--~-'-~---L.~~'--~-'-~---'-~--'~~-'-~-'-'

500 600 700 800 900 1000 1100 1200 1300 1400 1500 temp (K)

Figure 2-5 - Variation of Convective Heat Transfer Coefficient with Temperature

2.1.4.2 Gas Emissivity and Absorptivity

The radiation heat transfer in the stove checkerwork is the radiant heat exchange

between the gas and the checkerwork and is more significant at elevated

temperatures. Gas radiation is a particularly complex process since gases absorb and

emit radiation in narrow wavelength bands. Some gases, such as nitrogen and

- 31 -

oxygen and others of nonpolar symmetrical molecular structure, are essentially

transparent to radiation while carbon dioxide, water vapour, and various

hydrocarbons radiate to an appreciable extent. Radiation heat transfer will therefore

be more predominant during the gas cycle since the gaseous combustion products

will contain considerable amounts of carbon dioxide and water vapour, while the

blast air will have smaller amounts of these compounds.

The emissivity of various gases is generally presented in either tabular or graphical

form as a function of temperature, partial pressure of the gas constituent, and a

characteristic dimension called the mean beam length. The mean beam length

depends on the physical geometry of the surroundings and for gas inside a

checkerwork flue it is defined asl251:

Le =0.95d1 (2-38)

The emissivity of a C02-H20 mixture has received considerable attention,

particularly from Hotte1C311 who presented a simplified procedure for calculating the

emittance of water vapour and carbon dioxide gases and presented the data in

graphical form by correlating several sources of experimental data. However, for

implementation of the procedure into a computer model some empirical relationships

are required. Leckner321 formulates such a calculation procedure by considering

spectral data from various sources. The procedure involves a number of calculations

and is detailed in Appendix C.

The emissivity of carbon dioxide and water vapour is illustrated in Figures 2-6 and

2-7 for a range of temperatures and partial pressures. The mean beam length used in

these figures is 60.3 mm (corresponding to a checkerwork flu~ diameter of 63.5 mm)

and the total gas pressure is 1 atmosphere.

- 32 -

emissivity 0.1

............

"'-.. 0.08 .......

"-...... 0.06 ~

0.04 .............._

----0.02

0

0.25 atm

.............. 0.20 acm

~ ............... 0.15 atID ~ ............

..... ~ 0.10 atm

--.. r---0.05 atm ------

~ .........__ .... --.... ---....._ ----- I--_ ~ ---- ~ r--- ------- r--.._ r---r--_

------- ---- -----r---- r-- i----..._

r--- ~ - -

500 600 700 800 900 1000 1100 1200 1300 1400 1500

emissivity 0.08

~ / 0.07 _/

.....

,/

/ 0.06

~

_,...-

~

---0.05 /~

v---,/

v 0.04

0.03

temp (K)

Figure 2-6 - Emissivity of Water Vapour

1---I

---- ..Q.S ann

--..... ~ L.--- ----- ..QA ann -- ~ I --- ----- 0.3atm 1"-- ~ I

---....... ~ ~ ............... ~

:...----- ---~nn ~ ~ ' ~~~ I~ I

~ ~ ---~~ I

.........

i I

~ ............... ! I i

~ I

500 600 700 800 900 1000 1100 1200 1300 1400 1500 temp (K)

Figure 2-7 - Emissivity of Carbon Dioxide

- 33 -

2.2 MODEL DISCRETISA TION

The differential equations describing the heat transfer were derived in the previous

section as:

(2-39)

dTs 111 PsCv,Tt =qs (2-40)

These two equations are coupled via the nonlin'ear source terms, q;' and q~1 , and a

numerical scheme will be employed to approximate the equations using finite

differences. Other techniques such as the finite element method have been used to

solve parabolic partial differential equations but can usually be shown to be reduced

to the finite difference method for the one dimensional case with equal size

elements1331.

2.2.1 Discretisation Technique

The control volume formulation technique, outlined in Patankar261, will be used in

the discretisation since it implies that the integral conservation of quantities such as

mass and energy is satisfied over the whole calculation domain. The basic idea of

the control volume formulation is that the calculation domain is divided into a

number of non-overlapping control volumes, such that there is one control volume

surrounding each grid point. The differential equation is integrated over each

control volume and piecewise profiles expressing the variation of the dependant

variable between the grid points are used to evaluate the required integrals. The

result is the discretisation equation containing the values of the dependant variable

for a group of grid points. The discretisation equation obtained in this manner

expresses the conservation principles for the finite control volume, just as the

differential equation expresses it for an infinitesimal control volume.

- 34 -

Equations (2-39) and (2-40) describe the temperature distributions of the gas phase

and the solid phase with respect to time and space. To discretise these equations

requires assumptions regarding the variation of the temperature between grid points

and between time steps.

For the space profile, there are several possibilities:

1. Assume that the temperature at a grid point prevails over the control volume

surrounding it. This gives a very simple stepwise profile but suffers from the

problem of the slope being undefined at the control volume faces.

2. Assume a piecewise linear profile where linear interpolation functions are used

between the grid points. This does not experience the same problems as the

stepwise profile but adds to the complexity of the discretisation.

3. Use higher order polynomials or logarithmic functions which can reduce the

number of grid points required but also becomes very complex.

For the discretisation of the independent space variable (solid phase temperature) in

equation (2-39), the simple stepwise profile will be used since the slope does not

need to be defined at the control volume faces.

For the variation of temperature between time steps, there are also several

possibilities:

1. Explicit - the temperature profile can be calculated explicitly but the time and

space increments are limited by the solution stability and accuracy.

2. Fully implicit - there are no stability problems and the solution is more accurate

than the explicit scheme for large time steps, but a system of equations usually

needs to be solved to calculate the temperature at the grid points for each time

step.

3. Other interpolations such as Crank-Nicolson - higher accuracy than the fully

implicit scheme for small time steps, usually requires a system of equations, but

can suffer from oscillations in the solution with low damping.

- 35 -

The technique recommended by Patankarl261 is the fully implicit scheme where the

temperature at the beginning of the time step is assumed to be equal to that at the end

of the time interval. However it is acknowledged that for small time steps, the fully

implicit scheme is not as accurate as the Crank-Nicolson scheme. The variation of

temperature with time for the three different schemes is shown in Figure 2-8.

fully implicit

Crank-Nicolson~

explicit

t

Figure 2-8 - Temperature Variation for Different Numerical Schemes

For the discretisation of the time variables in equations (2-39) and (2-40), a general

formulation will be used such that any one of the above schemes can be employed,

depending on the size of the time steps, with the manipulation of a single variable,/,

called the weighting factor. A value off equal to 0 leads to the explicit scheme, f

equal to 0.5 to the Crank-Nicolson scheme, and f equal to 1 to the fully implicit

scheme. Care must be exercised in selecting its proper value to ensure stability in

the solution, nonetheless it must always be between 0 and 1.

Using the control volume formulation technique it can be shown that the use of a

central differencing scheme for the discretisation of the gas phase energy equation

can lead to an unrealistic solution when considering all but extremely low fluid

- 36 -

flowratesC261• The exact solution of the steady one-dimensional energy equation for

the gas phase provides an insight into the variation of temperature over space as a

function of the dimensionless Peclet number, which defines the ratio of the strengths

of convection and diffusion. It can be shown that for large values of the Peclet

number (Peg> 10), the temperature at the control volume interface is almost equal to

the temperature at the grid point on the upwind side of the interfacel261. When these

temperatures are set equal to one another, an upwind scheme is said to be used which

guarantees a physically realistic solution and provides accurate results for high Peclet

numbers or when diffusion is negligible. For diffusion to be considered, the gas

velocity must be extremely low. Since the gas flowing within the checkerwork

reaches velocities in the order of 5 mis (refer to Appendix D), diffusion will be

negligible and the upwind scheme can be used without any loss in accuracy.

2.2.2 Field Layout

The calculation domain for the stoves will extend from the top of the checkerwork to

the bottom since this is the area in which equations (2-39) and (2-40) have been

defined. The discretisation of this calculation domain is represented in Figure 2-9

which shows a separate uniform grid for the gas phase and solid phase.

Although the grids of Figure 2-9 appear to be identical, it is more convenient to

consider them separately to visualise the heat transfer mechanisms in the source term

which couples the two systems. It should be noted that all control volumes are of

equal length and the grid points are defined in the centre of their respective control

volume.

- 37 -

GAS PHASE SOLID PHASE

q"' •Tg, •Ts,

.T~

•Tg;., •Ts1.1 6X

•Tg1 qlll

•Ts1 6X .. •

2 6X 2 • Tgl+, • Tsl+,

•Ts,,..,

qlll

•Tgne .. •

Figure 2-9 - Discretisation of Calculation Domain

2.2.3 Source Term Linearisation

The source term is a function of both gas and solid temperatures. Therefore, this

temperature dependence should be acknowledged in constructing the discretisation

equations since the treatment of the source term as a constant can sometimes cause

divergence of the solution[261• It is also recommended that the temperature

dependence of the source term be expressed as a linear function of temperature so

that the equations can be solved using linear algebraic techniquesC261. In a

generalised form, the source term is therefore written as:

q"' = q~' + q~' T (2-41)

- 38 -

In this equation, q~1 is the constant part of the source term and q',{( is the coefficient

of temperature.

When the source term is a nonlinear function of temperature, as in the case of

radiation, it must be linearised around a temperature close to that of the final

solution. Sometimes an iterative procedure may be used which relinearises the

source term on each iteration, but this is not necessary for small time increments and

a relatively stable solution path.

Since the source term for this particular problem is a function of both gas and solid

temperatures, it will be expressed as a linear combination of these two variables such

that:

q111 = q"' + q"' T + qlll T a mg g m3 s (2-42)

The source term was derived previously in equations (2-31) and (2-32) and a

convenient method of linearising this is to consider an overall heat transfer

coefficient, U, which includes convection and radiation. The gas phase source term

can therefore be written in the form:

where:

Expressing this in the form of equation (2-42):

q~' =0

q111 = P1 U mg A

g

q'" =-P1 U mg A

g

- 39 -

(2-43)

(2-44)

(2-45)

(2-46)

(2-47)

Similarly, for the solid phase:

Again, writing this in the form of equation (2-42):

q'" = P1U mg As

(2-48)

(2-49)

(2-50)

(2-51)

Figure 2-10 shows the variation of the source term with both gas and solid

temperature where it can be seen that the relationship is reasonably linear over small

temperature variations.

~ooo

~ <ooo

~ ~ 1000

[ ~

~ 0

~ ..... , Vi ooo

'<1;100

';); Ooo

Figure 2-10 - Variation of Source Term With Gas and Solid Temperature

- 40 -

It should be noted that the source term is negative (i.e. heat is transferred from the

checkerwork to the gas) in some areas where the solid temperature is higher than the

gas temperature, as will be the case during the blast cycle. In practice, the

temperature difference between the gas and solid phases will be in the order of

50° C l241 and therefore the source term will not vary through such a large range as

depicted in Figure 2-10.

2.2.4 Discrete Enercr Equations

The energy equations derived in a previous section will now be discretised by

considering Figure 2-9, which shows the discretisation of the calculation domain.

The energy equation for the gas phase (equation (2-39)) is integrated over At and Ax

for the i"h control volume using the volume formulation technique to give:

It+t::J Ix+ru: i1Tg mgCpgj It+t::J Ix+m i1Tg It+t::J Ix+m Ill -

pg.cpg. -a dxdt + A -a dxdt+ qg dxdt-o I 1 { X t g {Xx { X

(2-52)

Although the fluid properties are a function of temperature, constant values over Ax

and At can be used in equation (2-52) since the simple stepwise temperature profile

between grid points has been assumed.

The stepwise temperature profile combined with the use of a weighting factor, f, to

describe the variation of temperature over the time intervals can now be applied in

evaluating the integrals in equation (2-52). Also, the linearised version of the source

term will now be used with the assumption that the coefficients do not significantly

vary over At. Therefore, equation (2-52) now becomes:

• pg;CPg; (r~+l -Tk.) + mgCpg; [f(T'!,+I -Tk+I) + (1-f)(~ - I':.. ·)]+ At "'' g, A Ai: g, g,_1 g, g,_1

g

+ ~; 0[lrt1 + ( 1-f )r~i]- ~; 0[lPs71 + (i -f )r~j J = o (2-53)

- 41 -

This can be arranged in the form:

(2-54)

where:

(2-55)

(2-56)

Cg; = ::~ [tr~:; + ( 1 - f) ~i-1] (2-57)

The energy equation for the solid phase (equation (2-40)) is also integrated over i).t

and.ix:

It+l!>J Ix+& dTs It+l!>J Ix+& Ill Ps.Cv,. -:::1dx:dt= qs dxdt

I I ( X ot ( X (2-58)

It should be noted that constant checkerwork properties over the time increment 11t

are also assumed in equation (2-58) which will be sufficiently accurate for small

time increments. Using the same assumptions regarding the variation of solid

temperature over time as those for the gas phase combined with the linearised form

of the source term, equation (2-58) becomes:

(2-59)

Re-arranging gives:

k+I T:1c+1 _ k Tk Too P1 T.,1c[fr:1c+1 (i t)T'f. J as; S; -as; S; + AsRth +As ui g; + - g; (2-60)

- 42 -

where:

k+l_Ps;Cv,; !(p!T-rk _l_) as; - ~t + A U; +A R

s s th (2-61)

(2-62)

It can be seen that the energy equations for the gas and solid phases are coupled via

the source term which is a function of both temperatures. Normally this would

require some sort of iterative procedure when considering any scheme which is not

explicit. However the upwinding technique used for the gas phase and the

assumption of negligible thermal conductivity in the solid phase allows an explicit

calculation for both gas and solid temperature profiles for any type of scheme.

Therefore, two simultaneous equations have been defined with two unknowns - the

gas temperature and the solid temperature at the grid point i and time instant k+ 1.

The energy equations can now be combined to enable the explicit calculation of the

temperature profiles without the need for iteration.

The solid phase energy equation (equation (2-58)) can be re-arranged to give:

(2-63)

This can then be substituted into the gas phase energy equation which, after some

manipulation, gives:

(2-64)

where:

(2-65)

- 43 -

The gas temperature at the new time interval, r:~1 , can then be back-substituted into

equation (2-63) to calculate the solid phase temperature.

2.3 COMBUSTION

During the gas cycle of the hot blast stoves, fuel gas is mixed with air in the

combustion chamber of the stoves and when ignited releases chemical energy to

produce a very hot gas. It is the oxygen in the combustion air which combines with

the fuel in a rapid oxidation process to produce the heat, while the nitrogen acts as a

moderator in that it absorbs some of the heat of combustion and limits the maximum

temperature reached. As combustion proceeds, the oxygen is progressively used up

and the proportion of nitrogen plus products of combustion to the available oxygen

increases. For a given amount of fuel there is a definite amount of oxygen, and

therefore air, which is required for complete combustion of a given fuel; this is

called the stoichiometric mixture of air and fuel. A mixture which has an excess of

air is termed a weak mixture, and one which has a deficiency of air is termed a rich

mixture. The chemical composition of combustion products will depend on the type

of fuel being used, and for the fuel which is normally used in the stoves, the most

important fuel elements are carbon and hydrogen. For a stoichiometric mixture of

air and fuel where the available oxygen is completely consumed, the combustion

products will consist of nitrogen, carbon dioxide, and water vapour. For a rich

mixture, the combustion products may also contain some carbon monoxide and for a

weak mixture, oxygen will be present in the flue gas.

To allow flexibility in representing a particular type of fuel gas, 10 compounds have

been selected which would. represent the majority of fuel gases. Although there may

be minor quantities of other components present, their quantities are usually so small

that they can be neglected for combustion and heat transfer calculations. The

selected compounds are:

1. Nitrogen (N2)

2. Oxygen (02)

3. Carbon dioxide (CO,)

- 44 -

4. Water vapour (H20)

5. Carbon monoxide (CO)

6. Hydrogen (H2)

7. Methane (CH4)

8. Ethane ( C2H6)

9. Propane ( C3H8)

10. Butane (C4H10)

2.3.1 Adiabatic Flame Temperature

The adiabatic flame temperature is the theoretical temperature which the products of

combustion will reach assuming no heat loss from the combustion gases to the

external environment. In the combustion process, the potential chemical energy of

the fuel must be considered during the change from reactants to products and the

amount of energy released depends on the temperature at which the process is

carried out. The combustion process is defined as taking place from reactants at a

state identified by the reference temperature T0 to products at the same state. For

analytical purposes, the change in internal energy between reactants at state 1 to

products at state 2 can be considered in three stagesl341:

1. The change for the reactants from state 1 to the reference temperature T0

2. The combustion process from reactants at T0 to products at T0

3. The change for the products from T0 to state 2

For a steady flow or constant pressure combustion process in which the changes in

enthalpy are importantl34l:

where

Hp2 -Hp0 = ~ mj(hh -hj0 )

j=l

(2-66)

(2-67)

- 45 -

(2-68)

The enthalpy, h, of the gas is temperature dependant and the final temperature at

state 2 is unknown. For most manual calculations, tabulated values of the fluid

enthalpy are used, however for a computer solution to this problem, an iterative

scheme can be used with the help of an expression for the fluid enthalpy as a

function of temperature.

The change in enthalpy from state 1 to state 2 is calculated using271:

(2-69)

The final temperature of combustion, T2 , is unknown, but if T2• is a reasonable

approximation of T2 and the specific heat, cP , is assumed constant over the interval

T2 to T2., then:

hz -h21 = Cp21 (T2 - T21) (2-70)

Substituting equation (2-70) into (2-67) and combining with equations (2-66) and

(2-68) gives:

~m{ hh, +cp21 (T2 -T21)-hjo] +tillo + tm{hio -hi1 ) = 0 ~ ~

(2-71)

Therefore:

(2-72)

The maximum adiabatic flame temperature will be attained when just enough

oxygen has been supplied for the combustion to proceed to completion since all the

fuel will be consumed and the amount of non-participating reactants (nitrogen,

- 46-

excess oxygen, carbon dioxide, and water vapour) will be minimised. This condition

is called the stoichiometric air to fuel ratio and deviation from this value will result

in a decrease in adiabatic flame temperature. This is illustrated in Figure 2-11 for

the combustion of blast furnace gas.

adiabatic flame temp (°C) 1,600.---------------------------.

1,400

~ stoichiometric air/fuel ratio

1,200

1,000

800

600._._ _ __..___......._ _ __. __ _.._ _ __... __ ..._ _ _,_ __ ..._ _ _......

0.2 0.4 0.6 0.8 1.2 air/fuel ratio

1.4 1.6 1.8 2

Figure 2-11 - Effect of Air to Fuel Ratio on Adiabatic Flame Temperature

As shown in Figure 2-11, an excess amount of the non-participating reactants

(excess air) will result in a decrease in the final temperature since they need to be

heated up to the final temperature but they do not contribute to the enthalpy of

combustion, /JJ!0 • This phenomenon is put to use in controlling the final products

temperature by adjusting the air to fuel ratio. However, in practice, the adiabatic

flame temperature is always reduced by increasing the air to fuel ratio above

stoichiometric conditions to minimise the reducing gas in the checkerwork and

ensure that no unburnt fuel is passed up the stoves' flue.

It is found that during adiabatic combustion, the maximum temperature reached is

lower than that expected on the basis of elementary calculation. One important

reason for this is that the exothermic combustion process can be reversed to some

extent if the temperature is high enough. The reversed process is endothermic,

which absorbs energy thus lowering the final temperature. This phenomenon is

-47 -

called dissociation and becomes significant at temperatures of 1200°C and above1341 •

It introduces an added complexity into the analysis of the combustion process since

the equilibrium conditions at a particular temperature and the energy balance for the

process must both be satisfied. The adiabatic flame temperature in the combustion

chamber of hot blast stoves will depend on the dome temperature limitations, but

since this is usually lower than 1300° C, dissociation will be neglected.

Other causes for the actual flame temperature being lower than that theoretically

predicted are the effect of imperfect mixing of the fuel gas and combustion air in the

burner and heat losses during the combustion process. All of these factors will

influence the actual flame temperature after combustion, heat transfer from the gas

to the checkerwork, and the chemical composition of the combustion gases.

However the net effect on the combustion and heat transfer calculation results will

be minimal if the fuel and air are thoroughly mixed and the heat losses minimised.

Therefore such a complex analysis of the combustion process will be omitted with a

small reduction in accuracy.

2.3.2 Combustion Products

It is important to be able to predict the chemical composition of the products of

combustion to calculate the gas properties. This is particularly vital in determining

the emissivity and absorptivity of the gas since it is the proportions of carbon dioxide

and water vapour which have a large effect on the radiation properties of the gas.

The procedure for calculating the chemical composition of the combustion products

will depend on whether the mixture is weak or rich. To determine this, it can be first

assumed that it is a weak mixture and the amount of oxygen present in the flue gas

using this assumption should be first calculated. If this value is positive, then the

initial assumption is correct and the procedure for calculating the chemical

composition of the products for a weak mixture can be used. If the calculated

amount of oxygen turns out to be negative, then the mixture is rich and the

appropriate procedure must be used to determine the chemical composition of the

flue gas.

- 48 -

2.3.2.1 Weak Mixture

A weak mixture has an excess amount of oxygen supplied to the combustion process

and the unused oxygen in the flue gas can be detected using an oxygen analyser

which is sometimes used to trim the air to fuel ratio of the stoves to approach

stoichiometric conditions. Therefore it is important to be able to determine the

amount of oxygen present. For a weak mixture with excess oxygen, the reaction

equation can be written as:

RN2 N2 + Ro2 02 + Rco2 C02 + RH20H20 + RcoCO + RH2 H2 + + RcH4 CH4 + Rc2H6 C2H6 + Rc3tt8 C3Hs + Rc4tt10 C4H10 ~

~ PN2N2 +Po2 02 +Pco2 C02 +PH20H2 (2-73)

To calculate the amount of each product, a molar balance on elemental nitrogen (N),

oxygen (0), carbon (C), and hydrogen (H) can be performed:

(2-74)

(2-75)

0 in reactants: LRo = 2Ro2 + Rco + 2Rco2 + Rtt20 (2-76)

(2-77)

C in products: LP c = P co2 (2-79)

H in reactants: LRH = 2Rtt2 + 2Rtt2o + 4Rctt4 + 6Rc2H6 + 8Rc3H 8 + 10Rc4H10

(2-80)

H in products: LPH = 2Ptt2o (2-81)

Since the number of moles. must be conserved in the chemical reaction, the above

equations can be combined to give the amount of products, thus:

(2-82)

- 49 -

(2-83)

(2-84)

(2-85)

2.3.2.2 Rich Mixture

For a rich mixture, all of the available oxygen is consumed in the combustion

reaction and therefore the flue gas will not contain any oxygen. Since hydrogen has

a greater affinity for oxygen than carbon does1271, the products of combustion from a

rich mixture which has sufficient air to ensure complete combustion of hydrogen

will contain both carbon monoxide and carbon dioxide. The chemical reaction

equation can be written as:

RN2 N2 + Ro2 02 + Rco2 C02 + Rtt20H20 + RcoCO + Rtt2H2 + + Rctt4 CH4 + Rc2tt6 C2H6 + Rc3tt8 C3Hs + Rc4tt10 C4H10 ~

~ PN2 N2 + Pco2 C02 + Ptt20H20 + PcoCO (2-86)

The amount of nitrogen, and water vapour in the products will be the same as that

for a weak mixture and is given in equations (2-82) and (2-84). To determine the

amount of carbon dioxide and carbon monoxide, a molar balance can again be

utilised. For the reaction given in equation (2-86), the only modifications to the

analysis used for a weak mixture will be the amount of oxygen and carbon in the

products which is given by:

0 in products: LPo =2Pco2 + Ptt2o + Pco (2-87)

C in products: LP c = P co2 + P co (2-88)

Using the conservation of moles yields the amount of CO and C02 in the products:

(2-89)

- 50 -

(2-90)

2.4 ADIABATIC MIXING

Mixing of gas streams occurs in two areas of the stoves:

1. during the gas cycle, air and fuel are mixed prior to combustion

2. during the blast cycle, hot air and cold air are mixed to obtain the hot blast

temperature

It is the final temperature after mixing which is the subject of interest here and the

process can be assumed to be adiabatic1341• Consider two streams of fluids at states 1

and 2 mixing to state 3, as shown in Figure 2-12.

Figure 2-12 - Mixing of Two Fluid Streams

From a balance of fluid enthalpy and neglecting changes in kinetic energy the

process can be represented byr34l:

(2-91)

The enthalpy of the mixed stream is a function of temperature which is the unknown

and an iterative procedure will need to be employed using a similar technique to that

- 51 -

of calculating the adiabatic flame temperature. Substituting equation (2-70) into

equation (2-91) gives:

(2-92)

therefore

(2-93)

2.5 STOVES PRESSURE CHANGES

Before going onto blast cycle, a stove must first be pressurised up to blast pressure

which is achieved by slowly introducing cold blast air into the stove at the base of

the checkerwork over a period of approximately 5 minutes. This process is not

undertaken instantaneously so that surges in the cold blast air supply are minimised

as the volume of air which is required to pressurise a stove up to blast pressure is

quite significant. Also, at the end of a blast cycle, the stove is de-pressurised before

going onto gas cycle by opening the chimney valves. Although MatobaC10J

recommends that this volume of blast air should be accounted for when considering

a thermal analysis of the stoves, details on how it should be included in the analysis

are not given. The approach which will be used in the present study is to assume

that the gas phase reaches steady state very quickly during the changeover periods

such that the gas temperature distribution is equal to the solid temperature

distribution at any point in time during the cycle. This condition can be realised by

assuming negligible resistance to heat transfer from the gas phase to the solid phase

with the overall heat transfer coefficient, U in equations (2-41) and (2-46), set to a

very large number. To calculate the gas and solid phase temperature distributions

over the cycle, the mass flowrate of blast air which is introduced into the stoves must

be determined (refer to Figure 2-13).

- 52 -

L

th--~ ...

Figure 2-13 - Pressurisation of a Stove

Over the time interval 11.t, the mass flowrate can be calculated by considering the

change in gas density, thus:

(2-94)

The density will be a function of the gas pressure and temperature which will vary

with cycle time and stove height, respectively. Using the characteristic equation of

state of a perfect gasC27l and assuming that the gas temperature does not change

significantly over the cycle duration, equation (2-94) can be written as:

(2-95)

To take into account the variation of gas temperature with stove height, the volume

inside the stove will be considered to be made up of the volume of the combustion

chamber and dome, Ve, plus the free volume inside the checkerwork. It will also be

assumed that the gas in the combustion chamber and dome is maintained at a

- 53 -

temperature, Tc, equal to that at the top of the checkerwork. Therefore, considering

finite volumes of checkerwork of length Ax, the mass flowrate of gas can be

calculated using:

(2-94)

The variation of the gas pressure with time is unknown, however it may be

simplified by assuming a linear relationship. For the pressurising cycle, this is given

by:

• Pblast -pgas pg=

!compress (2-95)

For the de-pressurising cycle, it takes on the form:

• Pgas -pblast p =

g !decompress (2-96)

- 54-

3 AUTOMATIC CONTROL STRATEGY

A physical analysis of the heat transfer and combustion mechanisms of a hot blast

stove was presented in Chapter 2. With the control objectives set out in Chapter 1,

this information will be used to determine the state variables of a stove to assist in the

development of an automatic control strategy for a set of stoves. This chapter

examines the use of a condition-based stove changeover scheme and a predictive

heating control algorithm to optimise the stoves performance.

3.1 PROCESS CHARACTERISTICS

A three stove system operating in sequential mode is used to supply the hot blast to

BHP Newcastle No. 4 Blast Furnace. The stoves are heated and cooled sequentially

in the cyclic pattern shown in Figure 3-1.

GAS

PURGE

BOTTLE

PRESSURISE

BLAST

DE-PRESSURISE '

Figure 3-1 - Cyclic Order of Stoves Operation

- 55 -

During the gas cycle, the flue gas will increase in temperature until it reaches the

maximum safe operating limit to ensure structural integrity of the checkerwork

support. At this point, the stove is isolated from the fuel gas supply and the

combustion air fan is allowed to continue for a short period to purge the stove of all

combustion gases. Following purging, the stove is said to be bottled and it may

remain in this state if the stove already on blast is not ready for changeover. This is an

undesirable condition as the bottled stove will remain idle and therefore lose heat

which will reduce the energy efficiency. If the stove on blast is ready for changeover

(i.e. the mixer valve has reached its aim changeover position), the purged stove will be

pressurised up to blast pressure over a period of about 5 minutes by slightly opening

the cold blast valve. The stove is then ready to be put on blast by introducing cold

blast near the base of the stove and heating it as it passes through the checkerwork.

Once the stove has been successfully put on blast, the cooler stove will be isolated

from the blast supply and de-pressurised by venting to atmosphere. On reaching

atmospheric pressure, the stove is ready for gas cycle by introducing fuel gas and

combustion air into the burner.

At the completion of a gas cycle, the amount of heat stored in the checkerwork

should be sufficient to meet the demand for hot blast at the required temperature for

the next blast cycle period. Figure 3-2 illustrates the total heat stored in the

checkerwork at the completion of gas and blast cycles. The amount of thermal

storage depends on the checkerwork temperature and its heat capacity and Figure 3-2

shows the temperature variation through which the checkerwork is cycled. The

amount of useable heat will depend on the difference between the upper checkerwork

temperature limit and the hot blast temperature. A large temperature difference

indicates a substantial amount of useable heat is available and will usually lead to

extended gas and blast periods while a small temperature difference gives rise to less

useable heat and shortened cycle periods. The heat storage capacity of the

checkerwork will depend on stove height since the checkerwork in the upper region

of the stove will be manufactured from a high temperature resistant refractory while

that in the lower section need only withstand lower temperatures. Therefore, the

temperature difference between cycles varies slightly with checkerwork height.

- 56 -

end of end of

checkerwork height (m) blast cycle gas cycle

30--r-~~~~~~~~~~~~~~~+--+~~~~~

25

15

10

5

0 200 400 600 800 1000 1200 1400 checkerwork temperature (° C)

Figure 3-2 - Heat Storage in the Checkerwork

To fully utilise the available heat stored in the checkerwork, the blast cycle should

continue until the temperature of the blast leaving the top of the checkerwork is equal

to the hot blast temperature. This state corresponds to the mixer valve being in the

fully closed position. However, to maintain hot blast temperature, the blast cycle must

not be allowed to extend past this point so a stove needs to be ready to go on blast

immediately. To take into account the time required for a stove to be pressurised up

to blast pressure, a stove should be taken off the gas cycle prior to the mixer valve

reaching the fully closed position. To determine the mixer valve aim changeover

position, the mixer valve closing rate is required and the duration of the gas to blast

changeover period must be known. Hence, the aim changeover position can be

calculated using:

(3-1)

- 57 -

3.2 STOVES CHANGEOVER MANAGEMENT

The present stoves changeover management system at BHP Newcastle No. 4 Blast

Furnace is semi-automatic, i.e. the operator must initiate stove changeovers. A fully

automatic stoves control system must be able to initiate each changeover at the

correct time by monitoring key stove parameters such as flue temperature, nuxer

valve position, and valve limit switches.

The aim of the stoves changeover management system is to maintain the hot blast

temperature for both short term and long term operating periods. Disturbances in the

input variables or a change in blast parameter set points can force a changeover

management system into a situation where it must make a judgement on whether to

accept a deviation in the hot blast temperature for the short term or to de-stabilise the

thermal balance of the stoves, which could eventually lead to reduced blast

temperature if the disturbance continues for an extended period of time. Therefore

the automatic changeover management must be robust enough to be able to

effectively evaluate the condition of a stove and determine whether a changeover

should be initiated under any operating regime with the objective of maintaining the

hot blast temperature at its predetermined level.

A changeover management system has been devised which has four levels of priority

for a gas to blast changeover initiation. A stove which is on gas is continually tested

for these conditions (in order) and if one is true, a gas to blast changeover is initiated.

Failure of all conditions will result in the stove remaining on gas cycle. The four

conditions are:

Condition 1

Flue gas has reached maximum permissible temperature.

Condition 2

Mixer valve has reached aim changeover position and flue temperature is

greater than upper control limit.

- 58 -

Condition 3

Mixer valve is fully closed and flue temperature is greater than mid control limit.

Condition 4

Blast temperature is less than minimum allowable and flue temperature is greater

than lower control limit.

A changeover initiated by Condition 1 is the ideal operating regime in terms of

achieving the correct level of heat storage in the checkerwork necessary for the

subsequent blast cycle, while a changeover initiated by Condition 4 implies serious

instability in the stoves thermal balance. Figure 3-3 illustrates the condition testing

procedure for a stove on gas cycle.

Selected stove on gas cycle

Initiate gas to blast

changeover

Continue

NO

NO

YES

Figure 3-3 - Gas to Blast Changeover Control Scheme

- 59 -

The set points for the gas to blast changeover conditions, set out above, will depend

on the operating conditions of the stoves and a facility must exist to allow them to be

altered. The maximum permissible flue temperature. will, however, be determined by

the physical temperature constraints of the stoves system. The upper control limit for

the flue temperature will depend on the amount of heat storage in the checkerwork

compared to its flue temperature, but will typically be in the vicinity of 10 to 20°C

below the maximum permissible flue temperature. The mid control limit will depend

on the relative importance of maintaining blast temperature for the short term

compared to that for the long term. For example, if this limit was set too low, the

blast temperature could be maintained for the short term but may de-stabilise the

stoves system resulting in a sustained period of lowered blast temperature as the

heating cycle period decreases. Setting this limit too high may not place enough

emphasis on reducing the hot blast temperature variability. The lower control limit in

condition 4 should be set such that once the flue temperature has attained this level

and the stove is put on blast, the hot blast temperature can be maintained for at least

one quarter of the normal blast cycle period.

The aim mixer valve changeover position and flue temperature set points shown in the

flowchart of Figure 3-3 are indicative of the values used for gas to blast changeover

control of a set of hot blast stoves having a maximum flue temperature of 350°C and

delivering a hot blast temperature of 1050°C.

At the end of the purge period, the stove may be either bottled or pressurised up to

blast pressure ready to replace the stove currently on blast. If, at the end of the purge

period, the mixer valve is open further than the maximum changeover position, the

stove will be bottled and remain in that state until the mixer valve reaches the

maximum changeover position (see Figure 3-4). When this stove is eventually put on

blast, the stove which was previously on blast will be de-pressurised ready for the gas

cycle.

- 60 -

NO

Selected stove being purged

YES

Begin pressurising

stove

Continue

Bottle the stove

Figure 3-4 - Changeover Sequence for a Stove Being Purged

3.3 HEATING RA TE CONTROL

The aim of the heating rate control system is to maximise thermal efficiency during the

gas cycle and maintain stable stoves operation. This is achieved by controlling the

firing rate of the stove on gas such that the maximum flue temperature will be attained

and purging completed when the mixer valve reaches the aim changeover position.

Thus the hot blast temperature is maintained and all of the available thermal storage in

the checkerwork utilised by ensuring that:

(i) a stove will not be bottled during the gas to blast changeover period, and

(ii) by the time the stove has been pressurised to blast pressure and is ready to be put

on blast, the mixer valve will be in the fully closed position.

- 61 -

Bottling a stove is usually avoided since it will be losing heat at a higher rate than is

necessary. This also indicates that the rate of temperature increase of the

checkerwork during the previous gas cycle could have been reduced to increase the

useable heat in the checkerwork.

The firing rate of a stove on gas cycle is controlled by adjusting both the fuel flowrate

and, to maintain optimum combustion conditions, combustion air flowrate to maintain

a constant air to fuel ratio. To control the fuel flowrate, a prediction is made of the

time remaining until a gas to blast changeover should be initiated for a stove on gas

cycle. The time remaining will depend on the current mixer valve position and the

status of other stoves. For a stove on gas which is the next stove scheduled to go on

blast, the time remaining until a changeover should be initiated is dependant only on

the mixer valve position. A linear relationship is assumed, such that:

[[(0actual - 0aim ) 1 10-{)JJ

tremgas = cbh - tpurge ' x (3-2)

The symbol [[/i,fz]] in equation (3-2) will be used to denote an operator which

assigns the greater of the two functions to the left hand expression. This operator is

used for the time prediction function to ensure that it will always be greater than zero

and thus guarantees numerical stability and a physically realistic control action.

For the case of a stove on gas which is not scheduled for the next blast cycle, the time

prediction function will need to be adjusted to account for the additional time period

ofanother stove to complete its blast cycle. This condition will arise when another

stove on gas has a greater amount of thermal storage than the stove in question, or

when another stove is bottled or in the gas to blast changeover sequence. The case of

two stoves being on gas simultaneously can arise when a stove is first put on gas and

another stove has almost completed its gas period. The stove which has the greater

thermal storage can be distinguished by the higher flue temperature and this stove will

be the next one scheduled for the blast cycle. The time prediction function for this

stove was given in equation (3-2), and for the cooler of the two stoves, it can be

- 62 -

found, assuming that the hotter stove will not bottle and that the maximum flue

temperature will be attained, using:

-[[(0actual-0aim ) 1 10-6]] tremgas - cbh - !purge ' x + tblast (3-3)

The blast cycle period, tblasv in equation (3-3) is taken as the duration of the previous

blast cycle for that particular stove. For the case of a stove on gas cycle and a stove

which is bottled, the time remaining for the gas cycle is given by:

[[ 0actual-0max 1 10-6]]

tremgtJ3 = cbh ' x + lb/ast - !purge (3-4)

If another stove is being purged and it is assumed that it will not be bottled, the time

prediction for the stove on gas becomes:

lremgas = frempurge + fb/ast - fpurge (3-5)

When a stove is being pressurised ready for the blast cycle, the time remaining for a

stove which is on gas cycle can be determined using:

fremgas = fremcompre.ss + fbJast - fpurge - fcompress (3-6)

Once the time prediction for a gas to blast changeover has been made, the fuel

flowrate can be adjusted such that the flue temperature of the stove on gas will reach

the maximum limit as the mixer valve approaches the aim changeover position. The

flue temperature is assumed to increase at a constant rate and this rate is assumed to

be a linear function of the fuel flowrate (see Figure 3-5).

- 63 -

flue temp CC)

340

320

300

280

260

240

220

200 0 10 20 30

increasing gas flowrate

40 50 time on gas ( mins)

Figure 3-5 - Linear Dependence of Flue Temperature on

Cycle Time and Fuel Flowrate

60

The rate of flue temperature rise and its dependence on the gas flowrate can be

combined to give the gas heating constant, Cgh , which is a measure of the increase in ..

flue temperature for a given volume of fuel. Using the time prediction and the gas

heating constant, the fuel flowrate set point is calculated using:

(3-7)

One problem with altering the fuel flowrate is that a small step change in flue

temperature will be immediately observed. This is attributed to the change in mass

flowrate of the combustion gases through the checkerwork which in tum affects the

amount of heat given up by the gas, thus altering the flue temperature. This

phenomenon may cause instability in the control action of the firing rate algorithm and

its effect can be reduced by introducing a damping constant, ~. to avoid large step

changes in the fuel flowrate set point. Therefore equation (3-7) can be now be

written as:

(3-8)

- 64 -

The heating control scheme for a stove on gas is shown in Figure 3-6.

Stove on gas cycle

YES

Predict time remaining on

gas cycfe -equation (3-4)

YES

Predict time remaining on

gas cycre -equation (3-5)

NO

Predict time remaining on

gas cycfe -equation (3-6)

Calculate fuel flowrate set

point­equation (3-9)

Continue

YES

Predict time remaining on gas cycfe -

equation (3-3)

Figure 3-6 - Heating Rate Control Scheme

Predict time remaining on

gas cycfe -equation (3-2)

In practice, the fuel flowrate is constrained by upper and lower limits. The upper limit

depends on the fuel gas supply capacity and a lower limit is usually enforced to ensure

the fuel and combustion air flowrates remain within the operating limits of the valve

controller. Therefore the calculated fuel flowrate set point must be checked against

these constraints.

- 65 -

3.4 DOME TEMPERATURE CONTROL

To protect the checkerwork and refractory lining of a hot blast stove from thermal

damage, a maximum temperature is usually specified for the dome. For the stoves at

BHP Newcastle No. 4 Blast Furnace, the maximum dome temperature is specified as

i200°c.

The speed of response of the instrument measuring the dome temperature must be

considered when developing a dome temperature control scheme. Traditionally, the

dome temperature has been measured using thermocouples; however this technique

often suffers from accuracy problems caused by improper thermocouple positioning.

This is usually caused by movement of the brickwork in the stove dome which can

alter the point of temperature measurement. A thermocouple which is protruding into

the gas stream can result in the temperature readings being too high and this may limit

the amount of heat that can be transferred into the checkerwork during the gas cycle.

If the thermocouple is positioned too far into the dome brickwork, the measured

temperature will have a slow speed of response which does not provide adequate

refractory protection. To overcome these problems, radiation pyrometers are

sometimes installed, however these instruments are not considered to have enough

reliability to be used alone and thermocouples are still used as a back-up device.

When a stove is first put on the gas cycle, the dome temperature will increase very

quickly and once the maximum allowable dome temperature has been reached,

additional combustion air, or override air, must be delivered to reduce the

temperature of the gaseous combustion products. This may be supplied by further

opening of the combustion air fan vanes or increasing the fan drive motor speed.

There will be a time lag between the control action on the override air and the dome

temperature and a compensation algorithm will be required to achieve set point as

quickly as possible with minimum overshoot. The type of compensation algorithm

used is a proportional plus integral and derivative (PID) feedback control technique

which is illustrated in block diagram form in Figure 3-7.

- 66 -

r(t) Ge

m(t) Gp

c(t)

Figure 3-7 - Typical PID Compensation Block Diagram

A PID algorithm for this arrangement can be defined as1351:

K J' K d m(t) =Kc e(t) + 't; 0

e(t) dt+ 't~ dt e(t) +Cs (3-9)

In Figure 3-7, r(t) is the dome temperature set point, which will remain constant at the

maximum limit, and c(t) is the actual dome temperature. The difference between the

dome temperature set point and the actual value, e(t), is used in the PID algorithm,

Ge, to determine the value of the manipulated variable, m(t), being the air to fuel ratio.

Adjusting the air to fuel ratio will then vary the actual dome temperature. As

previously discussed, the dome temperature starts out at a lower value than the

maximum limit when a stove is first put on gas cycle and override air is not required

until the dome temperature reaches the upper limit. Therefore, to prevent the

manipulated variable from becoming excessively large in magnitude from integral

wind-up during the initial dome heating period, the PID algorithm is not active until

the dome temperature is very close to the maximum limit.

3.5 HOT BLAST TEMPERATURE CONTROL

The objective of the hot blast temperature controller is to maintain the hot blast

temperature at the set point. This is achieved by adjusting the ratio of the cooler air

(bypass air) to that which is passing through the stove on blast, via the mixer valve. A

stove which has just been put on blast is usually capable of supplying hotter air than

- 67 -

required, thus the mixer valve opens to its appropriate initial position and is adjusted

such that the temperature of the mixed air streams is equal to the hot blast

temperature. As the stove cools, less bypass air is required until finally the mixer

valve reaches the fully closed position and the stove can no longer maintain blast

temperature.

As the temperature of the hot blast is a critical factor for stable blast furnace

operation, it is vital to sustain hot blast temperature with minimal variation. The

majority of the variation is observed to occur when a stove has just been put on blast

and the mixer valve makes the large jump from the closed position (from the previous

stove on blast) to the semi-open position for the hotter stove which has just been put

on blast. This phenomenon is illustrated in Figure 3-8 for a typical mixer valve.

mixer valve (% open) 14....-~~~~~~~~~~~~~~~~~~~~~~~~~--...

12

10

8

6

4

2

0 15 30

start of ~blast cycle

45 60 75 time (mins)

end of blast /cycle

90 105

Figure 3-8 - Variation of Mixer Valve Position with Cycle Time

120

To control the hot blast temperature, a PID algorithm is used and equation (3-9) is

again utilised. The block diagram for this is shown in Figure 3-9.

- 68 -

hot blast temp set point

hot blast mixer valve .--------. position .--------.

PID mixing algorithm process

actual hot blast temp

Figure 3-9 - Block Diagram for PID Control of Hot Blast Temperature

3.6 Affi TO FUEL RA TIO OPTIMISATION

During the gas cycle, fuel gas and air are mixed and ignited in the stove burner and

combustion chamber to achieve the high gas temperature necessary to heat the

checkerwork. To attain the maximum rate of heat input for a given fuel flowrate, the

air and fuel should be mixed in the correct ratio such that the flue gas does not contain

any unburnt fuel or excess air. This ratio is called the stoichiometric ratio and cannot

be practically achieved due to inefficiencies in the combustion process and molecular

dissociation of the product gasesl34l _ Some hot blast stove systems have instruments

which are capable of determining the amount of unburnt fuel by measuring the amount

of carbon monoxide in the flue gas and also measuring the oxygen content to indicate

the quantity of excess air supplied. Morel5l describes such a system which was used to

evaluate the combustion efficiency and calculate the optimum air to fuel ratio by

experimentally deriving a relationship between the flue carbon monoxide and oxygen

levels, similar to that shown in Figure 3-10. This optimum ratio was established by

considering the amount of wasted fuel compared to the resulting flame temperature

for any particular point on Figure 3-10.

For the stoves at BHP Newcastle No. 4 Blast Furnace, an oxygen analyser is installed

in the flue of each stove to simultaneously monitor the combustion process. From an

estimate of the combustion efficiency and knowledge of the fuel gas composition, a

relationship similar to that of Figure 3-10 can be constructed and the optimum flue

- 69 -

oxygen set point calculated. To achieve this desired oxygen level, the air to fuel ratio

is adjusted using a PID feedback control algorithm. The fuel gas composition will

vary slightly which in turn affects the amount of combustion air required. It is for this

reason that the air to fuel optimisation algorithm must be used for each gas cycle.

flue carbon monoxide (%) 3.--~~~~~~~~~~~~~~~~~~~~~~----.

2.5

2

1.5

0.5

0 0.5 1.5 2 2.5 3 3.5 flue oxygen (%)

Figure 3-10 - Variation ofFlue Gas Carbon Monoxide Content

with Flue Oxygen Content

4

As previously discussed, the dome temperature of a stove will increase quickly when

it is first put on gas and will gradually approach the upper limit. At this point, excess

air is used to maintain the dome temperature at this level and therefore, the air to fuel

ratio optimisation algorithm will only be required prior to the override air being used

to control the dome temperature. Therefore, by the time override air is required, the

oxygen content in the flue gas should have attained its set point and this air to fuel

ratio can then be used as a lower constraint for the remainder of the gas cycle.

- 70 -

4 DEVELOPMENT OF COMPUTER

SIMULATION MODEL

Using the mathematical model described in Chapter 2, a computer simulation model

(STOVESIM, Appendix A) has been developed which simulates the operation of a

hot blast stoves system. The automatic control scheme described in Chapter 3 is

included in the simulation model to control the stoves operation.

4.1 PROGRAM DESCRIPTION

The computer simulation model is written in the programming language C using a

Borland Turbo C compiler. The program is separated into the following source files:

1. STOVESIM.H - header file containing definition of constants.

2. STOVESIM.C - program manager controlling the overall sequence of events.

3. DATAIO.C - handles all data I/O and standardises the units of input variables.

4. INITIAL.C - initialises all data.

5. CONTROL.C - directs the procedures for data initialisation, calculation of

temperature distributions, and automatic stoves control.

6. HEAT.C - calculates gas and solid temperature distributions.

7. GASPROP - calculates the gas properties.

8. DISPLA Y.C - initialisation of graphics system and displays data in graphical

format.

These files are compiled using the project manager facility in Borland Turbo C.

Appendix A contains the program listing for each of these files.

Figure 4-1 illustrates the overall flow of the program. The required input data is first

read in from the appropriate files followed by initialisation of variables relating to

the gas and solid phases, as shown in Figure 4-2. The next step is to initialise the

graphics system (see Figure 4-3) and since some images are used many times in

- 71 -

different screen locations, they are loaded into memory so that they do not have to be

continually re-constructed. This procedure reduces the amount of time required for

screen displays but can be demanding on the computer memory. Following this, an

overlay of the stoves is constructed on the screen which does not need to be modified

throughout the run-time of the program. With the graphics system initialised, the

initial conditions for each stove can be set up as shown in the flowchart of Figure

4-4. The program then enters into a loop to simulate the stoves operation. Each

iteration of the loop represents a time increment and the gas and solid temperature

distributions are calculated at each step to describe the transient response of the

stoves. The appropriate data is then displayed on the screen and written to an output

data file, if requested, followed by an overall heat transfer calculation. These steps

are shown in Figure 4-5. Within the loop, the automatic control scheme (refer to

Chapter 3) is used for stove changeovers, controlling the heating rate of the stoves

on gas cycle, maintaining hot blast temperature and dome temperature, and

optimising the air to fuel ratio. The loop can be interrupted by pressing any key and

the program then goes through a clean-up procedure and terminates as shown. in

Figure 4-6.

- 72 -

Program start

Read in and initialise data

Initialise graphics

Set UP. !nitial conditions

Calculate temperature distnbutions ~---,

for each stove

Automatic control scheme

YES

Data output and clean up

Terminate ro ram

NO

Figure 4-1 - Program Overview

- 73 -

Figure 4-2 - Data Input and Initialise

- 74 -

A

1

Set graphics mooeand initialise variables

Draw pipelines for stove on gas

and save in memory

,, Draw pipel~es for stove bemg pl!fged and save

mmemory

Figure 4-3 _ Graphics Initialisation

- 75 -

Draw pipel~es for stove bemg pre~urised and save m memory

., Draw pipelines

for stove on blas1 and save in memory

Draw pipel~es for stove ~mg depressun~ed and save m memory

,, Draw overlay of gas mains and stoves outline

r

B

Set initial gas temp. distn., air/fuel ratio,

and fuel flowrate

Determine initial status of

stove

Initialise gas state variables

Initialise control

variables

Calculate steady state g

temp. distribution

Display data

Figure 4-4 - Initial Conditions

- 76 -

NO

Determine status of stove

Calculate gas and solid

temP.erature distributions

Display data

Calculate heat transferred over time increment

Increment elapsed cycle

time

Outp1:1t operatmg

data

NO

Figure 4-5 - Determine Temperature Distributions

- 77 -

Calculate thermal

efficiency for simulation

Output thermal

efficiency to data file

Output checkerwork temperature distributions

Close operations

output data file

Restore display to text moae

Terminate program

Figure 4-6 - Program Clean-up Procedure

- 78 -

4.2 DATA INPUT REQUIREMENTS

The simulation model reqmres information to define the physical operating

conditions of the stoves system and the process control strategy to be used. This

information is contained in the data input files which can be modified using any text

editor to investigate the response of the stoves for a change in a particular parameter.

A sample of each file is listed in Appendix B. These files must remain in the

directory, DAT, which is one level down from the directory containing the

executable stoves simulation file. A further stipulation is that each data value within

an input data file must be preceded by a description label which is a continuous

string of text separated from the data value by white space (see Appendix B for

examples).

4.2.1 Simulation Data

Details on the type of simulation are presented in the data file, SOLN.DAT. The

number of volume elements (or cells) used to represent the checkerwork is first

defined. A small number of elements will lead to substantial inaccuracies while the

use of a large number of elements requires considerable computing time. The time

increment to be used is specified and this should be kept as small as practical to

provide realistic control sampling intervals but remain sufficiently large to reduce

the total simulation time. To define the type of numerical scheme, the interpolating

factor, f, must be given in the data file. This variable will have a large bearing on

the stability of the numerical model and must always be between 0 and 1. A value of

0 indicates the use of an explicit scheme and a value of 1 gives rise to a fully implicit

scheme. Other data input requirements are flags which determine whether operating

data and thermal efficiency calculations are output into a file.

4.2.2 Stoves Physical Arran~ement

The data file, STVPHYS.DAT, contains information regarding the physical

characteristics of the stoves. The number of stoves is defined (usually three or four)

~ 79 -

along with the dome and flue temperature limitations. The purge, compression, and

gas to blast changeover times must be specified in this data file and an estimate of

the blast cycle period should be entered. Also included in this file is the dome

temperature time constant, the wall thermal resistance, and the ambient air

temperature surrounding the stoves. The dome temperature time constant takes into

account the speed of response of the temperature measuring instrument, which may

be substantial in the case of a heavily shielded thermocouple. The wall thermal

resistance represents the resistance to heat transfer through the stove wall.

Information regarding the stoves checkerwork is listed in the data file,

CHECKER.DAT. In this file, the checkerwork dimensions are given which include

the total cross-sectional area, heating surface area, free area of checkerwork, and

hydraulic diameter of the flues. The properties of the checkerwork must also be

given and facility exists for specifying up to three zones of checkerwork. Zone 1 is

that closest to the dome of the stove and will typically be manufactured from a high

temperature refractory while Zone 3 covers the bottom section and will have a

considerably lower temperature resistance. The emissivity and specific heat are

assumed to be constant for all zones, however, unlike the emissivity, the specific

heat is assumed to be a linear function of temperature. Therefore the specific heat

constant and temperature gradient are both required. The density of the checkerwork

will not significantly vary with temperature but may vary with different types of

checkerwork and so must be specified for all zones.

4.2.3 Gas Data

The temperature-dependent gas properties (specific heat, thermal conductivity,

dynamic viscosity and enthalpy of combustion) are represented by a third order

polynomial and th.e coefficients are contained in the data file GASCONST.DAT.

These constants do not vary and to ensure that they can not be readily changed, this

data file is stored in binary format.

- 80 -

Details concerning the combustion air are held in the data file, COMBAIR.DAT.

The data required here is the inlet air temperature, the air flowrate during the purge

period, and its average chemical composition.

The data file, FUEL.DAT, also specifies the chemical composition and inlet

temperature of the fuel gas; however, it also includes the flowrate constraints. The

maximum fuel flowrate to each stove will be governed by the physical arrangement

of the fuel supply up to and including the burner. The minimum fuel flowrate

should be set at a value which reflects the lower limit of the fuel and combustion air

flowrate control mechanisms. The maximum total fuel flowrate specifies the supply

capability of the fuel supply system. To ensure full utilisation of the fuel with

burner efficiencies lower than I 00%, the aim flue oxygen content should be given

assuming that an instrument to measure the flue oxygen content is available.

The blast air conditions are introduced to the simulation model via the data file,

BLAST.DAT. The blast flowrate and pressure (which are variables dependant on

the blast furnace operating parameters), are specified in this file along with the cold

blast temperature. The chemical composition of the blast air, which will depend on

the amount of oxygen enrichment and steam injection into the blast, is also defined

in this data file.

4.2.4 Control Parameters

The process control technique is defined in the data file, STVCTRL.DAT. The

parameters can be tuned to achieve optimum response for a particular control

strategy. Also, by careful adjustment of certain variables, the strategy can be

changed. For example, automatic heating control can be disengaged by forcing the

fuel flowrate to be set at a constant value during the gas cycle.

The flue temperature control limits for the gas to blast changeover initiation are first

entered to define the automatic changeover strategy. These limits specify the

relative importance placed on maintaining short and long term blast temperature. If

- 81 -

the disturbances to be encountered are likely to be short term (e.g. change in fuel

calorific value for two hours), then emphasis must be placed on maintaining the blast

temperature and the flue control temperatures set at relatively lower levels. For

longer term deviations, consideration must be given to maintaining the thermal

balance of the stoves and the limits will typically be set at higher values. The

minimum hot olast temperature also plays a role in specifying the changeover

strategy by allowing the control system to make a judgement on how far the blast

temperature can be reduced to ensure thermal stability of the stoves system.

The aim mixer valve position for a gas to blast changeover and the maximum mixer

valve position for a bottle to blast changeover must also be defined. The aim mixer

valve changeover position should be set such that a stove will be put on blast just as

the mixer valve reaches the fully closed position. The maximum mixer valve

position for a bottle to blast changeover describes the maximum amount of stored

heat that will remain in the checkerwork before the stove is taken off blast.

There are three areas which are controlled by a PID algorithm:

(i) air to fuel ratio optimisation,

(ii) dome temperature control, and

(iii) hot blast temperature control.

The proportional gain, bias signal, and derivative and integral time constants are

specified at this point. To obtain optimum values requires extensive tuning and a

specialised procedure may be needed.

For the heating control algorithm, the rate at which the mixer valve closes and the

rate of flue temperature rise as a function of fuel flowrate must be given. Both

variables are assumed to be linear functions and will depend on the blast parameters

and the fuel gas conditions. Also, to improve the stability of the heating control

algorithm, a firing rate damping ratio is defined; this ratio must lie between 0 and 1,

with a lower value implying more damping.

- 82 -

4.2.5 Initial Conditions

The computer simulation model requires information which describes the initial

conditions of each stove. These details are contained in the data file,

INITCOND.DAT. The status, elapsed cycle time, and checkerwork temperature

distribution for each stove are included in this file to define the initial state of the

stoves system. At the completion of a simulation run, this file will be automatically

updated with new data for each stove such that a subsequent simulation run will

effectively continue where the previous one left off. This feature is included so that

a simulation run can be interrupted at any time and then restarted with minimal

effect on the results. This file will normally require very little maintenance unless a

particular set of initial conditions is required.

4.3 DATA PRESENTATION

The computer simulation model provides a graphical display of the state of each

stove as shown in Figure 4-7. This information is typically available to operators

and is displayed in a compact graphical format which can be easily interpreted. An

outline of each stove is presented with its status and elapsed cycle time displayed in

the centre of the checkerwork area. The gas supply mains (combustion air, fuel, and

cold blast) are shown at the bottom of the screen, with appropriate colour coding. A

display of the connecting pipelines to each stove will depend on the cycle stage (i.e.

gas, purge, blast, etc). The gas outlet lines (flue and hot blast) are shown at the top

of the screen and are also connected to each stove for the appropriate stove cycle.

Attached to each gas connecting line is a data box which displays the gas

temperature (°C) in the upper half of the data box and the gas tlowrate (Nm3/hr) in

the lower half. When a stove is on blast, the dome temperature is shown at the top

of the checkerwork area. The total elapsed simulation time can be found in the top

right-hand corner of the screen. The maximum time value that can be displayed is

24:00:00 and once this limit is reached, it is reset to 00:00:00.

- 83 -

~..._~~~~~-'-~~~~~~~~~~~~~~~~

0 ~ ::i

Ei::

Figure 4-7 - Graphical Presentation of Simulation Program

- 84 -

The simulation program is capable of calculating the thermal efficiency of the stoves

system by setting a flag in the input data file, SOLN.DAT. If this flag is set, the

thermal efficiency will be written to the output data file, THERMEFF.OUT, at the

completion of a simulation run. However, care must be taken when interpreting this

information. To ensure that it represents the true stoves thermal efficiency, it is

important that cyclic equilibrium has first been attained before commencing the

simulation. Cyclic equilibrium will be reached when the cycle time of a particular

stove remains constant. In addition, the state of each stove at the end of a simulation

must be identical to the state of each stove at the commencement of the simulation.

This can be enforced by ensuring the elapsed cycle time for a particular stove (e.g.

stove 1, 20 minutes on gas cycle) at the start of the simulation is equal to that at the

end.

The operating data can be written to an output data file, OPSDATA.OUT, by setting

a flag in the input file, SOLN.DAT, before commencing a simulation run. This

output data file is a text file in ASCII format and contains the information in

columns so that it can be easily imported into a spreadsheet. The data in each

column is:

1. Total elapsed simulation time (sec)

2. Hot blast temperature (°C)

3. Blast air flowrate (Nm3/hr)

4. Blast pressure (kPa)

5. Mixer valve position(% open)

For each stove:

1. Stove number

2. Elapsed cycle time (sec)

3. Dome temperature (° C)

4. Flue temperature (°C)

5. Combustion air flowrate (Nm3/hr)

6. Fuel flowrate (Nm3/hr)

- 85 -

5 INVESTIGATION OF MODEL

A computer simulation model of the hot blast stoves has been developed using a

numerical model (Chapter 2) and incorporating an automatic control scheme

(Chapter 3). The model can now be compared with data from an actual stoves

process to evaluate the model's ability to accurately represent the process. The

effectiveness of the automatic control scheme can then be evaluated using the

simulation model.

5.1 COMPARISON TO PLANT DATA

In order to determine the model's capability of representing the actual process, plant

data was obtained from the stoves of BHP Newcastle No. 4 Blast Furnace (NBF4).

From this information, the input data set for the simulation model was generated and

model results compared to the actual stove performance.

5.1.1 Plant Data

Data for the stoves at NBF4 is reported to the process computer which automatically

displays trends of the key variables. Some of the data is averaged over 6 ·minute

time intervals and subsequently stored in a database. This data is stored for 40 days

and can be easily accessed using a database query program. However, at present

there exists some stoves process data which is only stored in the process computer

for a period of time long enough to generate short. term trends. If a permanent

record of this data is required, it must be specially downloaded at regular time

intervals.

Information on dome temperature, flue gas temperature and fuel flowrates for each

stove was downloaded from the process computer into text files. In addition, the

mixer valve position and hot blast temperature were also downloaded. A set of one

minute data over an 8 hour period of relatively stable stoves operations was

- 86 -

assembled for the analysis. However, due to difficulties involved with averaging the

data over the interval, one minute snap shots were reported.

Figure 5-1 depicts the dome and flue temperatures of Stove 1 for the 8 hour

recording period. The gas cycles can be easily identified by noting the areas of

sudden change in both temperatures. Following the start of a gas cycle (where dome

and flue gas temperatures increase sharply), the dome temperature quickly reaches

its maximum limit and is maintained at this temperature by the override air which

controls the flame temperature in the stove combustion chamber. Although the

maximum dome temperature of these stoves was known to be 1200°C, it was found

that the average dome temperature was maintained at 1190° C during the course of

the analysis period. At the end of a gas cycle, where the flue temperature reaches its

maximum limit of 350° C, the temperature drops very quickly and reaches a value of

approximately 190° C when the stove is put on gas cycle again.

flue temp. (°C) dome temp. (° C)

....--------------------------. 1,200

400

350

300

250

200

01:41 02:41 03:41 04:41 05:41 06:41 07:41 08:41 time

Figure 5-1 - Actual Dome and Flue Temperature

- 87 -

1,180

1,160

1,140

1,120

1,100

1,080

From Figure 5-1, it can be seen that once on gas, the flue temperature initially

increases at a very fast rate followed by a more steady rate over the remainder of the

gas cycle. For the present study, it has been assumed that this initial high rate

observed at the start of the gas cycle can be attributed to the transient response of the

flue gas thermocouple. Therefore the real flue gas temperature at the start of the gas

cycle was found by extrapolating the more steady rate, giving an actual flue

temperature of approximately 240° C. Although it may appear that this initial period

coincides with the time required to reach maximum dome temperature, the extremely

high rate of increase in the flue temperature shown in Figure 5-1 is physically

unrealistic for these stoves.

The variation of the fuel gas flowrate over the same 8 hour period is shown in Figure

5-2. The fuel flowrate appears to be extremely variable, however it should be noted

that it is presented as one minute snap shots with no averaging.

flue temp. (" C) fuel flowrate (kNm3 /hr) 350.--~-,..~~~~~~~~~~~~~__,.~~~~~---.so

300

250

200

150

100

50

fuel flowrate

70

60

50

40

30

20

10

0 0 01:41 02:41 03:41 04:41 05:41 06:41 07:41 08:41

time

Figure 5-2 - Actual Fuel Flowrate and Flue Temperature

- 88 -

The variability in the fuel flowrate appears to be quite random with both high and

low frequency components visible. Due to the slow thermal response of the

checkerwork, the high frequency component has a negligible affect on the stoves

heating rate. However close inspection of Figure 5-2 shows a slight change in the

rate at which the flue temperature increases in response to the low frequency

component of the fuel flowrate variability. This affect is highlighted in Figure 5-3

for the second heating cycle of Figure 5-2. The fuel flowrate suddenly increases for

a sustained period of time and the flue temperature subsequently increases at a

slightly higher rate.

flue temp. (° C) fuel flowrate (kNrrf /hr) 350.....-~~~~~~~--.-~~~-.-~~~~~~~~~--.45

300

250

200

04:19 04:34 04:49 05:04 time

40

35 fuel flowrate

30

05:19 05:34 05:49

Figure 5-3 - Effect of Fuel Flowrate on Rate oflncrease of Flue Temperature

Figure 5-4 shows the flue temperatures of all three stoves over the 8 hour duration to

illustrate the gas cycle scheduling of the stoves system. It can be noted that

approximately mid-way through the gas cycle of a particular stove, another stove is

put on gas. The maximum flue temperature for these stoves is 350° C, and it appears

that Stove 2 does not achieve this level on two occasions. This may be the result of

the stove being required for the blast cycle before it has reached the maximum flue

temperature. Also, the heating rate of this stove during the third gas cycle does not

- 89 -

appear to be constant. From the data presented in Figure 5-4, the gas cycle times

were determined and are given in Table 5-1 along with the average and standard

deviation for each stove. There appears to be a significant trend in the data with the

cycle times of all stoves increasing throughout the duration of the analysis period

which therefore gives rise to the high variability. Also, it can be seen that the

average cycle time of Stove 3 is much higher than that of the other stoves. The

overall average gas cycle time for all stoves was taken to be 90 minutes.

flue temp. (° C)

stove 1 stove 3

150......_ ____ ~----~-----'------'------'------'--------'-------' 01:49 02:49 03:49 04:49 05:49 06:49 07:49 08:49

time

Figure 5-4 - Actual Flue Temperatures for all Three Stoves

Table 5-1 - Actual Gas Cycle Times in Minutes

Stove 1 Stove 2 Stove 3

Cycle 1 - 77 85

Cycle2 83 90 94

Cycle3 92 98 107

Average 87.5 88.3 95

Standard Deviation - 8.7 8.6

- 90-

The variation of the mixer valve position and hot blast temperature is shown in

Figure 5-5. The mixer valve varies between approximately 88% closed at the

beginning of a blast cycle and 104% closed at the end of the blast period. The scale

of the mixer valve position is therefore shifted slightly upwards. The large variation

in hot blast temperature at the start of each blast cycle is due to the incorrect

positioning of the mixer valve when it makes the sudden transition from completely

closed at the end of the previous blast cycle to the required position for the new

stove on blast. From Figure 5-4, the average blast cycle duration was taken to be 50

minutes.

hot blast temp. (° C) mixer position (%closed) 1,120.-----......-------------------. 105

mixer position

1,110 100

95

90

85

80

1,050 75 hot blast temperature

1 040 70 ' 01 :59 02:59 03:59 04:59 05:59 06:59 07:59 08:59 09:59

time

Figure 5-5 - Actual Hot Blast Temperature and Mixer Valve Position

5.1.2 Model Simulation

In order to compare the model results to the actual stoves data presented in Section

5 .1.1, the conditions under which the stoves were operating during the 8 hour

analysis period were first determined and used as input to the simulation model. The

initial conditions were then estimated and the process simulated with the model.

- 91 -

5.1.2.1 Input Requirements

The information required for the simulation model was:

1. blast air flowrate

2. blast pressure

3. chemical composition of blast air, fuel gas, and combustion air

4. fuel flowrate

5. stoves physical characteristics

The blast air data for the 8 hour period representing the plant data is given in Table

5-2 and this information was extracted from a 6 minute blast furnace database. Since

the blast air flowrate given in Table 5-2 does not include the steam addition, the total

blast flowrate was calculated to be 128,410 Nm3/hr.

Table 5-2 - Blast Air Data

Variable Average Standard

Deviation

Blast pressure (kPa gauge) 253 5.6

Steam flowrate (kg/hr) 2,158 293

Oxygen flowrate (Nm3/hr) 4,172 47

Blast air flowrate (Nm3/hr) 125,724 584

The stoves at NBF4 are fired on waste gas, or top gas, from the blast furnaces and

the fuel gas chemical composition can be calculated using data recorded by top gas

analysers. The data for the 8 hour period on a 6 minute averaging basis is presented

in Table 5-3. It can be noted that the sum of the constituents does not equal 100%,

and this is due to the presence of other trace elements and inaccuracies in the

analysers. Comparing the data in Table 5-3 for each blast furnace, the averages

appear to be quite similar but the standard deviation of each constituent is

significantly different between the furnaces.

- 92 -

Table 5-3 - Top Gas Analysis

Constituent No. 3 Blast Furnace No. 4 Blast Furnace

Average Standard Average Standard

Deviation Deviation

N2 50.2 0.29 50.7 2.24

C02 21.3 0.29 22.1 1.51

co 20.8 0.44 19.8 1.21

H2 6.6 0.15 6.5 0.38

Table 5-4 presents the chemical compositions of the combustion air, fuel, and blast

air. To calculate the chemical analysis of the fuel gas, the data from Table 5-3 was

normalised to 100% and the blast furnace gas was assumed to be completely

saturated with water vapour at a temperature of 25 • C. For the combustion air, it was

assumed that the ambient air temperature over the analysis period was 15°C with the

relative humidity being 20%. For the blast air, the amount of oxygen and steam

given in Table 5-2 was used to determine its chemical composition.

Table 5-4 - Gas Chemical Composition for Simulation Model

Constituent Gas

Combustion Air Fuel Blast Air

N2 78 49.9 73.8

02 20.7 - 23

co2 - 21

H20 1.3 3.1 3.2

co - 19.7

H2 - 6.3

- 93 -

As previously noted, the fuel flowrate to each stove over the 8 hour analysis period

appears to be extremely variable based on the one minute snap shot data. Although

large shifts in the fuel flowrate may have an effect on the rate of increase of flue

temperature, the overall change in flue temperature over the gas cycle period would

be equivalent to that obtained using a constant average fuel flowrate if it is assumed

that the checkerwork heating rate is a linear function of fuel flowrate. This is the

same assumption used in deriving the control scheme for the heating rate control in

Chapter 3 and although the heat transfer is slightly nonlinear with respect to

flowrate, it can be assumed to be linear for the range of changes in fuel flowrate

illustrated in Figures 5-2 and 5-3. Therefore, an average fuel flowrate of 35,000

Nm3/hr for all three stoves was used for the simulation model.

The physical characteristics of the hot blast stoves used for the simulation study were

found from plant layout drawings and are given in the sample input data files in

Appendix B.

5.1.2.2 Procedure

The computer simulation model begins from a specified set of initial conditions and

will slowly reach cyclic equilibrium where the gas and blast cycle times of each

stove do not vary over time as shown in Figure 5-6.

Since the checkerwork temperature distribution could not be obtained from the plant

data, the initial conditions were unknown and therefore it was assumed that the

stoves were operating in cyclic equilibrium at the start of the analysis period. It was

further assumed that the fuel flowrate prior to the analysis period was maintained at

the aver~ge level of 35,000 Nm3/hr.

- 94 -

gas cycle period (mins) 82.--~~~~~~~~~~~~~~~~~~~~--.

80

78

76

74

03:00 06:00 09:00 12:00 15:00 18:00 simulation time

Figure 5-6 - Model Simulation Approaching Cyclic Equilibrium

To accurately represent the gas and solid phase temperature distributions and ensure

numerical stability, the checkerwork was divided into 30 equal size elements for the

simulation model. After reaching cyclic equilibrium, the model was allowed to run

for a simulated time of 8 hours and data was recorded at one minute time intervals.

During the course of the simulation, it was assumed that a stove which had reached

maximum flue temperature early would be bottled until the mixer valve reached aim

changeover position.

Several methods of controller tuning exist such as the Cohen-Coon and

Ziegler-Nichols techniquesP51, however for the present study, the constants used in

the PID feedback control loops were manually tuned by studying the response of

each controlled variable under various combinations of constants.

5.1.2.3 l\1odel Results

The results of the manual PID loop tuning are given in Table 5-5. The criteria used

to tune these control loops was the overshoot, stability, and steady state error. For

- 95 -

the hot blast temperature control and dome temperature control, the most important

objective was to ensure that the temperature did not exceed its maximum limit for an

extended period of time. It was found that optimum control constants for the PID

control loops depended on the sampling interval and therefore the data presented in

Table 5-5 is considered optimum for the 30 second time interval used in the

simulation model.

Table 5-5 - PID Loop Control Constants

Constant Dome Hot Blast Air to Fuel Ratio

Temperature Temperature Optimisation

Control Control

Kc 0.6 0.001 1.5

cs 0.9 0 0.68

-r1 (mins) 0.5 0.0025 0.2

-rD (mins) 0.125 0.025 0.1

The dome and flue temperatures for Stove 1 are shown in Figure 5-7. It should be

noted that the rate of change in flue temperature is highly linear and the dome

temperature reaches its set point very quickly. The gas cycle time for each stove was

found to be 85 minutes; however before going onto blast, each stove was bottled for

5 minutes to allow the mixer valve to reach its aim changeover position.

The variation of the mixer valve position and the hot blast temperature are shown in

Figure 5-8. The hot blast temperature appears to be significantly affected by a stove

changeover where the mixer valve makes the sudden transition from being fully

closed to the new position required for the next stove on blast. The blast cycle time

for each stove was found to be 50 minutes.

- 96 -

flue temp. (° C) dome temp. (° C)

1,200 400

1,180

350 1,160

1,140

300 1,120

1,100

250

oo:oo 01 :oo 02:00 o3:oo o4:oo 05:oo 06:00 01:00 os:oa1·080

simulation time

Figure 5-7 - Simulated Dome and Flue Temperature

hot blast temp. (°C) mixer position (% closed) 1,180....-----------------------

mixer position 100

95

90

1,100 hot blast temperature 85

1,080 80 A ,.._

1,060 75

1,040 ._._ __ _,_ _ ___. __ _._ __ _.._ __ ..__ _ __._ __ _._ __ ...._.70 00:00 01 :00 02:00 03:00 04:00 05:00 06:00 07:00 08:00

simulation time

Figure 5-8 - Simulated Mixer Valve Position and Hot Blast Temperature

- 97 -

It should be noted that the fuel flowrate for each gas cycle was set at a constant value

of 35,000 Nm3/hr and since all stoves have exactly the same physical properties, the

cycle times and temperature profiles of each stove were identical.

The checkerwork temperature distribution as calculated by the simulation model is

shown in Figure 5-9. The temperature profiles are given at the end of a gas cycle

and the end of a blast cycle and are quite linear. The difference between the two

profiles represents the amount of stored heat in the checkerwork which can be used

to heat the blast air. The area to the left of the temperature profile at the end of the

blast cycle is the residual heat in the checkerwork which is very large compared to

the useable heat. It should be noted that the checkerwork temperature difference

between cycles at the top of the checkerwork is lower than that at the bottom. This

is due to the increased heat capacity of the checkerwork in the upper region of the

stove since the checkerwork in this zone has a higher density and specific heat.

checkerwork height (m)

35....-------------------------------------------------------------------------------------------~

30

25

20

15

10

5

200 300 400 500 600 700 800 900 1,000 1,100 1,200 checkerwork temp. (° C)

Figure 5-9 - Simulated Checkerwork Temperature Distribution

- 98 -

5.1.3 Discussion

A comparison between the plant data and simulation results is shown in Table 5-6.

The blast cycle times were found to be the same although the gas cycle period for the

simulation model was 5 minutes shorter than the average value for the actual plant

data. This time difference resulted in each stove being bottled for 5 minutes in the

simulated case. However, as the variability of the gas cycle time for the plant data

was quite high (standard deviation of approximately 8 minutes), it may be concluded

that there is no significant difference between the actual and simulated cycle times.

Table 5-6 - Actual and Simulated Cycle Times

Gas cycle time Blast cycle time Bottle time

(mins) (mins) (mins)

Actual 90 50 -

Simulated 85 50 5

Figure 5-10 compares the simulated flue temperature with the actual flue

temperature. The actual flue temperature starts out at a much lower value (190°C)

than that for the simulated case (250°C); however it was noted in Section 5.1.1 that

the flue temperature was significantly reduced during the blast cycle. The exact

cause of this is unclear, however it may be due to the leakage of cold blast air into

the stove flue during the blast cycle.

It is of most interest to compare the heating rates or the rate at which the flue

temperature increases for both cases. It was found that the actual rate was

l.3°C/min, and for the simulation it was 1.2°C/min. This represents a relatively

small difference (approximately 8%) compared to the accuracy of the

instrumentation used to measure the input variables and the actual stoves response.

- 99 -

flue temp. (°C) 400~~~~~~~~~~~~~~~~~~~~~~~--.

300

200

end of gas

cycle

150 .......................................................................................................... u..w. .............................................................................................. ..............

01:05 01:15 01:25 01:35 01:45 01:55 02:05 02:15 02:25 time

Figure 5-10 Comparison of Simulated and Actual Flue Temperatures

The high level of variability in the actual gas cycle time was found to be due to

differences between stoves and also a trend in the data (see Table 5-1). The slight

trend in the gas cycle times suggests that the actual stoves operations are not in a

state of cyclic equilibrium. It is most probable that the stoves never achieve

equilibrium due to variability in the input parameters, such as fuel supply, and also

variability in the operator control actions. For example, a stove on gas which has

reached maximum flue temperature early will be automatically bottled by the

process computer and will remain in this state until an operator selects this stove for

blast. Another case is when a stove on gas has not reached maximum flue

temperature by the time the mixer valve is completely closed. To initiate a stove

changeover requires manual intervention by the operator and the point of changeover

in this case may vary somewhat. The net effect of this would be a somewhat

variable stoves response inducing a certain level of instability into the process.

However, the simulation model neglects variability in the input parameters and

assumes a consistent control action thus maintaining cyclic equilibrium. Therefore

the assumption of cyclic equilibrium which was used for the simulation may not be

valid when comparing the results to plant data. The checkerwork temperature

distribution provides a good indication of the state of each stove, but since this data

- 100 -

was not available for the actual process, the initial conditions were unknown and the

assumption of cyclic equilibrium used in the simulation was the best information

available. An indication of the checkerwork temperature distribution may be

obtained by measuring the temperature at three or more points along the length of

the checkerwork and using this data as the initial conditions for the model.

The checkerwork properties can have a significant impact on the stoves operations

and although the type of refractory used and the length of each checkerwork zone for

the stoves was known, the exact conditions of the checkerwork within each stove

was not. Further, there is some uncertainty associated with the properties given by

the manufacturers of the checkerwork. It was found that a small variation in the

checkerwork properties altered both gas and blast cycle times from the simulation

model, however the stoves would always reach maximum flue temperature early and

be subsequently bottled. This phenomenon, along with Figure 5-10, indicates that

the actual thermal efficiency is slightly lower than that calculated theoretically by the

model. This may be the result of a reduced combustion efficiency (refer to Chapter

2 for further details).

From the data presented, it can therefore be concluded that the simulation model

gives an accurate representation of the actual stoves process even when the unknown

parameters are taken into account. The main contributors to the deviation in

calculated and measured results were thought to consist of the following unknowns:

1. instrument error,

2. initial conditions,

3. checkerwork condition, and

4. combustion efficiency.

- 101 -

5.2 EVALUATION OF CONTROL SCHEME

It has been demonstrated in the previous section that the computer simulation model

represents the stoves process with a high level of accuracy. Therefore the model can

be used to evaluate the effectiveness of the control scheme proposed in Chapter 3.

5.2.1 Procedure

The effectiveness of the automatic control scheme can be determined by comparing

its capability of meeting the control objectives to that of a manual control scheme

under dynamic (unsteady) operating conditions. To determine this, the following

stoves key performance indicators were reported for both manual and automatic

control:

1. thermal efficiency for minimising fuel consumption,

2. hot blast temperature variability to ensure stable blast furnace operations, and

3. gas cycle durations to reduce heating rates and ensure stable stoves operations.

Using the simulation model, the optimum fuel flowrate was first determined under

static conditions, i.e. no change in input parameters. This optimum value was

defined as the fuel flowrate which allowed the stoves to reach maximum flue

temperature when the mixer valve was in the aim changeover position. The heating

rate constants for the automatic control scheme were then determined and the set

points for the changeover management system were selected.

The simulation model was first run for a 48 hour simulated period to ensure cyclic

equilibrium had been attained. To simulate dynamic operating conditions, a step

change in the fuel flowrate was then introduced such that the total available fuel to

the stoves was limited to 60,000 Nm3/l1r (previously 80,000 Nm3/l1r). The fuel

supply was subjected to this change to simulate a sudden reduction in fuel gas supply

pressure. For the automatic and manual control schemes, the response of the stoves

to this step change was then recorded for a period of 8 hours (simulation time)

- 102 -

immediately following the step change. To examine the long term effects of each

control scheme, the model was then allowed to continue for a further 32 simulated

hours after which the stoves process data was again recorded for an 8 hour period.

The manual control scheme used in the companson retained the PID feedback

control features of the automatic control scheme, i.e. air to fuel ratio optimisation,

dome temperature control, and hot blast temperature control. However, the manual

control technique did not have a heating control scheme or a high level condition

based changeover management system. Therefore, the fuel flowrate set point was

held constant at the optimum value calculated under static conditions. As this

flowrate could not be sustained for two stoves on gas simultaneously, the available

fuel was divided evenly between the two stoves. The changeover management

system was kept simple and a gas to blast changeover was only initiated if a stove

had reached maximum flue temperature. If a stove attained maximum flue

temperature before the mixer valve reached aim changeover position, the stove was

put on blast immediately, thus eliminating bottling. This strategy reflects that

presently used to control the stoves at NBF4.

The remaining input parameters used in the evaluation were the same as those used

in the previous section for the actual plant data since this represents operating

conditions which could be expected in a typical application of the control scheme.

In addition, the PID control constants determined previously were used in the

evaluation.

5.2.2 Results

Under static conditions and for the given set of input parameters, the optimum fuel

flowrate was determined using the simulation model as being 32,600 Nm3/hr. With

this flowrate, the gas cycle time was found to be 93 minutes and the blast cycle

duration was 53 minutes.

- 103 -

5.2.2.1 Control Scheme Tuning

To determine the gas heating rate constant, the simulation model was used to

determine the rate at which the flue temperature increased as a function of fuel

flowrate. Figure 5-11 illustrates this for two fuel flowrates (32,000 Nm3/hr and

35,000 Nm3/hr).

flue temp. (° C) 360..-~~~~~~~~~~~~~~~~~~~~~~---.

340

320

300

280

260

240 ....................................................................................................................................................................................................... ......... 00:00 00: 15 00:30 00:45

time 01:00 01:15 01:30

Figure 5-11 - Variation of Flue Temperature Increase With Fuel Flowrate

The gas heating rate constants for both fuel rates are given in Table 5-7 along with

the rate at which the mixer valve closed (or blast heating rate constant) during the

blast cycle. It was found that although the rate of flue temperature increase was a

function of fuel flowrate, the relationship was very nearly linear in the range of fuel

flowrate examined in Table 5-7 as the gas heating rate constants were almost

identical (0.5% difference). The blast heating rate constant for both cases was found

to be 0.18%/min as shown in Table 5-7. As the duration of the stoves compression

cycle was known to be 5 minutes, the mixer valve aim changeover position was

calculated as 0.9%.

- 104 -

Table 5-7 - Calculated Gas and Blast Heating Rate Constants

Fuel flowrate Flue temp. Gas heating rate Blast heating rate

(Nm3/hr) increase rate constant constant

(°C/min) (°C/kNm3) (%/min)

32,000 1.09 2.04 0.18

35,000 1.18 2.03 0.18

The set points used in the stoves changeover management system will depend on the

operating parameters and the physical characteristics of the stoves. The flue

temperature control limits depend on the amount of time which a stove can remain

on blast cycle as a function of the flue temperature reached during the previous gas

cycle. For example, a stove may be able to maintain hot blast temperature for 50

minutes when the flue temperature has reached the maximum limit during the gas

cycle. However if the stove was changed over from gas to blast early, the

subsequent blast cycle time would be less than 50 minutes and it would depend on

the flue temperature at which it was taken off gas cycle. The maximum bottled

changeover position for the mixer valve controls the length of time a stove which has

reached maximum flue temperature early will be bottled. If this value is set equal to

the aim changeover mixer position, a stove will never be taken off blast cycle until

the mixer valve has reached the fully closed position. However it should be noted

that this function will be redundant if the heating rate control scheme has been

optimally tuned since in this case a stove will never bottle. This function is therefore

only retained to compensate for variations in such parameters as the fuel calorific

value which then impact on the heating rate constants.

The set points for the stoves changeover management used in the evaluation of the

automatic control scheme are presented in Table 5-8. The values were selected on

the basis of prior knowledge of the stoves operation.

- 105 -

Table 5-8 - Set Points for Stoves Changeover Management System

Upper flue temperature control limit 32o·c

Mid flue temperature control limit 3oo·c

Lower flue temperature control limit 28o·c

Minimum hot blast temperature 1040°C

Aim mixer changeover position 1% open

Maximum bottled changeover mixer position 1% open

5.2.2.2 Manual Control

The variation of the hot blast temperature using manual control over an 8 hour

simulation period is shown in Figure 5-12. There is a large drop in blast temperature

for approximately 30 minutes where the stove was forced to remain on blast cycle

longer than necessary on account of the other stoves not having reached maximum

flue temperature in time. For this initial 8 hour period, the thermal efficiency of the

stoves process was calculated as being 82.8%.

The variability of the hot blast temperature after a total simulated time of 40 hours is

shown in Figure 5-13. It should be noted that the maximum simulation time value

that could be displayed was 24:00:00, therefore a total simulation time of 40 hours

was indicated as 16:00:00. The data presented in Figure 5-13 indicated that the hot

blast temperature variability increased over time and therefore it can be concluded

that the process did not reach cyclic equilibrium.

- 106 -

hot blast temp. CC) 1,080--------------------------.

980........._ _____ .__ ___________ __.. _____ ......

00:00:00 02:00:00 04:00:00 simulation time

06:00:00 08:00:00

Figure 5-12 - Hot Blast Temperature With Manual Control Scheme

hot blast temp. (°C) 1,080.....------------------------,

1,060

1,040

1,020

1,000

980

960

940 .......... _____ ..__ ____ _._ _____ ......_ ____ _.......,

16:00:00 18:00:00 20:00:00 simulation time

22:00:00 00:00:00

Figure 5-13 - Hot Blast Temperature With Manual Control Scheme After 40 Hours

To investigate the increase in hot blast temperature variability over time, the gas

cycle periods were also recorded over the course of the simulation and the results are

shown in Figure 5-14. It can be seen that the gas cycle times became more variable

- 107 -

with time. Therefore the process became more unstable thus leading to the increased

hot blast temperature variability. The initial standard deviation of the hot blast

temperature was calculated as being 12°C and for the long term (Figure 5-13) it was

found to be 29.6°C.

gas cycle period (mins) 300.--~~~~~~~~~~~~~~~~~~~~~~--.

250

200

150

50

o~~~~~~~~~~~~~~~~~~~~~~~~

10 20 30 40 50 cycle number

Figure 5-14 - Gas Cycle Periods with Manual Control Scheme

5.2.2.3 Automatic Control

Figure 5-15 shows that the hot blast temperature variability during the initial 8 hour

period, for the case where the stoves are controlled by the automatic control scheme,

was minimal (standard deviation of 3.4°C). The only cause of variability was that

due to stove changeovers and this phenomenon was very short lived. The thermal

efficiency for this period was calculated as being 83.2%.

The simulation model was also allowed to continue for an additional 32 simulated

hours with the results shown in Figure 5-16. It was found that using the automatic

control strategy, the hot blast temperature variability remained quite low with a

standard deviation of 8.5°C.

- 108 -

hot blast temp. (° C) l,080r--------------------------.

- -- r-

1,060

1,040

1,020

l,OOO .......... -------......_------------......_----__._. 00:00:00 02:00:00 04:00:00 06:00:00 08:00:00

simulation time

Figure 5-15 - Hot Blast Temperature with Automatic Control Scheme

hot blast temp. (" C) 1,080.--------------------------.

1,040

1,020

1,000........_ _____ .__ ____ _._ ____ __. _____ ...........

16:00:00 18:00:00 20:00:00 22:00:00 00:00:00 simulation time

Figure 5-16 - Hot Blast Temperature with Automatic Control Scheme

After 40 Hours

- 109 -

To examine the stability of the automatic control scheme, the gas cycle periods were

recorded and are presented in Figure 5-17. The average gas cycle time started out at

95 minutes, but was slowly reduced to approximately 60 minutes. Although the total

available fuel to the stoves was suddenly reduced, the gas cycle times decreased

since the stoves were taken off gas cycle by the changeover management system

before the maximum flue temperature was reached.

gas cycle period (mins) 100....--~~~~~~~~~~~~~~~~~~~~~~----.

90

80

70

60

50

10 20 30

cycle number 40 50

Figure 5-17 - Gas Cycle Periods with Automatic Control Scheme

5.2.3 Discussion

Table 5-9 compares the results of the automatic control scheme to that of manual

control. From a blast furnace operations perspective, the main operating objective of

the stoves is to maintain hot blast temperature. Table 5-9 contrasts the capability of

each control technique to achieve this objective. The variability in hot blast

temperature during the initial analysis period with the automatic control scheme was

found to be due to the sudden change in mixer valve position during a stove

changeover. This phenomenon was found to occur for both manual and automatic

control and depends on the response of the hot blast temperature feedback control

- 110 -

loop. Therefore the standard deviation calculated for the initial period with

automatic control (3.4°C) can be taken as the base value and the data presented in

Table 5-9 was normalised by subtracting this value from the actual standard

deviation. From this data, it can be seen that the automatic control scheme reduced

the short and long term hot blast temperature compared to the manual control

strategy.

The difference in thermal efficiency between the automatic and manual control

schemes represents a change of 0.4%. In terms of fuel savings, an improvement in

thermal efficiency of this order represents a significant daily reduction of 17 GJ in

energy requirements.

The gas cycle times may be used to assess the stability of the stoves operations. As

shown in Table 5-9, the variability of the gas cycle periods with manual control is

extremely high and Figure 5-14 suggests that this instability actually increases with

time which would have a detrimental effect on the hot blast temperature. However,

in reality this instability would be recognised by appropriate alarming functions on a

process computer and manual intervention would then be required to re-stabilise the

process. The automatic control scheme is much more stable as shown in Figure 5-17

and therefore would not require operator supervision or intervention.

Table 5-9 Comparison of Automatic Control to Manual Control

Control Normalised Hot Blast Thermal Gas Cycle times

Scheme Temperature Standard Efficiency (mins)

Deviation (°C) (%)

Initial Final Average Standard

Period Period Deviation

Manual 8.6 26.2 82.8 119 61

Automatic - 5.1 83.2 68 12

- 111 -

It was demonstrated that use of the automatic control scheme also resulted in an

increase in the hot blast temperature variability during the final analysis period.

Since the set points of the stoves changeover management system depend on the

characteristics of the disturbance, the increase in long term variability indicates that

the set points were directed at short term control of the stoves. In addition, the

oscillation in the gas cycle times shown in Figure 5-17 continued with very little

damping and did not reach equilibrium. Therefore the set points given in Table 5-8

are not optimum for the long term step change in fuel supply. However, in practice

it is difficult to predict the characteristics of most disturbances before the event and

therefore an on-line tuning system to calculate the set points may be required in the

automatic control scheme to achieve optimum control action. A proposed tuning

system may rely on feed-forward control by monitoring the disturbance combined

with a feed-back mechanism which measures the thermal state of the stoves. It is

thought that implementation of such a system would have eliminated the increase in

hot blast temperature variability encountered during the simulation of the automatic

control scheme.

The present study used a step change in the fuel gas supply to simulate dynamic

operating conditions. However, in practice, many other disturbances in the input

parameters are possible, such as a change in blast parameters or a reduction in fuel

calorific value. In addition, the rate of change of these parameters may also vary, for

example random disturbances with high and low frequency components, or a gradual

drift in the mean level. Therefore, the present study may be further extended to

determine the response of a set of hot blast stoves to other dynamic conditions.

- 112 -

6 CONCLUSIONS

6.1 CONCLUSION

A simulation model, consisting of a mathematical model coupled to an automatic

control scheme, has been developed to optimise the control objectives of the

regenerative heat exchangers supplying hot blast to the ironmak:ing blast furnace.

The strategy will maintain the desired blast parameters under dynamic operating

conditions with minimal fuel consumption.

The mathematical model developed calculates the gas and solid temperature

distributions within a stove. The model utilises the transient energy equations for

gas and solid phases which are then solved using a finite difference scheme. The

mathematical model also calculates the temperature and chemical composition of

the combustion products during the gas cycle and includes the effects of stoves

changeovers on the heat balance.

The energy equations were found to be coupled by the nonlinear heat transfer term

due to its dependence on both gas and solid temperatures. However, by linearising

the heat transfer term and using the upwinding technique in the solution procedure,

the gas and solid temperature distributions could be calculated explicitly for any type

of finite difference scheme including the fully implicit case.

An automatic control scheme has been devised to obtain optimum stoves

performance. This is accomplished by utilising a condition-based changeover

management system with a predictive algorithm for calculating the optimum fuel

flowrate during the gas cycle.

The mathematical model and automatic control scheme were incorporated into a

computer simulation model capable of emulating different stove configurations with

a variety of input parameters. The simulation model presents a graphical

- 113 -

representation of the stoves process and records various operating parameters for

further data analysis.

The capability of the mathematical model to effectively represent the stoves process

was evaluated by carrying out the simulation of the stoves at BHP Newcastle No. 4

Blast Furnace. The results were then compared to measured values of the key

variables which represent the thermal state of these stoves. It was found that the

calculated results from the model and the measured values corresponded very well,

with a deviation of 8% in heating rate. The simulation model was therefore

considered to be an accurate representation of the process and was then used to

evaluate the effectiveness of the automatic control scheme under dynamic operating

conditions. The response of the stoves to a step change in the fuel supply was

simulated for both automatic control and manual control, and the results were later

compared. For automatic control, the duration of the gas and blast cycles were

reduced with an increase in long term hot blast temperature standard deviation of

5°C. However, with manual control, the step change in available fuel destabilised

the stoves process, leading to a substantial increase in the long term hot blast

temperature variability (standard deviation of 26°C). Therefore application of the

automatic control scheme to the stoves process would result in a significant

reduction in hot blast temperature variability compared to the manual control

strategy under dynamic operating conditions.

6.2 SCOPE FOR FURTHER WORK

During the course of evaluating the capability of the simulation model to represent

the actual process, it was found that the model did not have provision to take into

account the actual combustion efficiency and checkerwork conditions of each stove.

It was concluded that this was a major contributor to the discrepancy between the

model results and the measured variables of the stoves. Therefore, further work

should be undertaken to determine the most appropriate measure of the combustion

efficiency and checkerwork conditions and this should then be included in the

simulation model to improve its accuracy. In addition, it was not possible to

- 114 -

determine the initial conditions of the stoves from the available plant data. Therefore

there is scope for further work in validating the model if the checkerwork

temperature distribution could be measured.

Although the step change in fuel supply used to evaluate the automatic control

scheme represents a realistic disturbance, it is by no means exhaustive. It is

recommended that there is further scope for work in evaluating the stoves response

to a variety of disturbances including random variability and to changes in blast

requirements such as hot blast temperature.

It was found that a prior knowledge of the characteristics of the disturbance was

required to optimally tune the automatic stove changeover management system.

Therefore, additional work is required in determining the optimum set points with

the possibility of including a self tuning algorithm to further enhance the

performance of the control scheme under a variety of conditions.

- 115 -

REFERENCES

1. Cheng, A., Lauzon, G., Prokopchuk, N., and Strieck, G., "Integrating Corporate Energy Requirements into Furnace and Stove Operating Practices at Algoma's No. 7", McMaster Symposium, No. 15, pp. 31-65, 1987.

2. Strassburger, J.H., "Blast Furnace -Theory and Practice", Vol. 2, Gordon and Breach Science Publishers, New York, 1969.

3. Snowden, P.F., Ballard, P.D., and Devin, G.L., "Blast Temperature Considerations for the Port Kembla Blast Furnaces", McMaster Symposium, No. 15, pp. 265-278, 1987.

4. Kashtanova, S.P. et al, "Industrial Investigation of the Operation of Blast Furnace Hot-Blast Stoves", Steel in the USSR. Vol. 5,_pp. 302-303, 1975.

5. More, G. et al, "Computer Control of a Hot Stove System", International Meeting on Iron and Steel Making, Brussel, Preprint 3.1.3, 1976.

6. Sovetkin, V.L. et al, "Optimizing the Thermal Working of Blast-Furnace Hot-Blast Stoves During Heating With Thermal and Technological Limitations", Steel in the USSR, Vol. 7, pp. 202-203, 1977.

7. Lezhnev, G.P. et al, "Optimizing Running Period of Blast Furnace Hot Blast Stoves", Steel in the USSR, Vol. 13, pp. 370-372, 1983.

8. Shklyar, F.R. et al, "Optimal-Control Algorithm for Blast Furnace Hot Blast Stoves", Steel in the USSR, Vol. 15, pp. 502-503, 1985.

9. Bouget, J. et al, "Automatic Computer-Aided Model for Hot Stove Heat Control at Solmer", Ironmaking Proc., Vol. 44, pp. 51-58, 1985.

10. Matoba, Y., Otsuka, K., Ueno, Y. and Onishi, Y., "Mathematical Model and Automatic Control System of Hot-Blast Stove", source unknown.

11. Dai, J., Lu, L., Zhang, X., and Du, H., "To Obtain High Blast Temperature (1200-1300°C) Based on Low Heating Value Gases (3000 kJ/Nm3)", McMaster Symposium, No. 15, pp. 101-107, 1987.

12. Derycke, J. et al, "Automation of Hot Blast Stove Operation at Sidmar: Control and Optimisation of Energy Consumption", Ironmaking and Steelmaking, Vol. 17, No. 2, pp. 135-138, 1990.

13. Makai, Y. et al, "Application of Fuzzy Theory to Ironmaking Process Control", Kawasaki Steel Technical Report, No. 24, pp. 8-15, 1991.

- 116 -

14. Beentjes, P.A., Wokke, S., and van Breda, J., "Benefits of Automation of Hot Blast Stove Operation", Iron and Steel Engineer, Vol. 68, No. 3, pp. 45-49, 1991.

15. Hausen, H., Arch. Eisenhiittenwesen, Vol. 3, p. 473, 1939.

16. Butterfield, P., Schofield, J.S., and Young, P.A., "Hot Blast Stoves", J. Iron. Steel Inst., Vol. 201, pp. 497-508, 1963.

17. Wilmott, A.J., "Digital Computer Simulation of a Thermal Regenerator", Int. J. Heat Mass Transfer, Vol. 7, pp. 1291-1302, 1964.

18. Wilmott, A. J., "The Regenerative Heat Exchanger Computer Representation", Int. J. Heat Mass Transfer, Vol. 12, pp. 997-1014, 1969.

19. Beets, J. and Elshout, J., "Control Model for a Hot Blast Stoves System", International Meeting on Iron and Steel Making, Brussel, Preprint 3.1.1, 1976.

20. Tamura, N. et al, "A Modeling Approach to the Energy Saving of Hot Blast Stove System", Fifth International Iron and Steel Congress, Ironmaking Proc., Book 2, Vol. 45, pp. 549-554, 1986.

21. Tatemichi, H., "Saving Energy on Blast Furnace", Proc. European Ironmaking Congress. Aachen, Vol. 2, Session III/5, pp. 1-30, 1986.

22. Christman, R.G. and Poveromo, J.J., "Hot Blast Temperatures, Stove Conditions and the Use of Bethlehem's Computer Models", McMaster Symposium, No. 15, pp. 114-134, 1987.

23. Robson, P., Private Communications, 1992.

24. Gillard, D.P., "Blast Furnace Reline Stoves Automation and Individual COG Enrichment", BHP Steel Long Products Division Internal Report, EN.D. 325, 1987.

25. Holman, J.P., "Heat Transfer", Sixth Edition, McGraw-Hill Book Company, New York, 1986.

26. Patankar, S.V., "Numerical Heat Transfer and Fluid Flow", Hemisphere Publishing Company, Washington, 1980.

27. Rogers, G.F.C. and Mayhew, Y.R., "Engineering Thermodynamics Work and Heat Transfer", Third Edition, Longman, New York, 1980.

28. Bird, R.B., Stewhart, S.E., and Lightfoot, E.N., "Transport Phenomena", John Wiley & Sons, New York, 1960.

29. Kakac, S., Shah, R.K., and Aung, W., "Handbook of Single-Phase Convective Heat Transfer", Jbhn Wiley & Sons, New York, 1987.

- 117 -

30. Ridgion, J.M. and Kerrison, B., "Measurement of Heat Transfer Coefficients for Stove Checkers", J. Iron. Steel Inst., Vol. 202, pp. 315-318, 1964.

31. Hottel, H.C. and Sarofim, A.F., "Radiative Transfer", McGraw-Hill Book Company, New York, 1967.

32. Leckner, B,. "Spectral and Total Emissivity of Water Vapour and Carbon Dioxide", Combustion and Flame, Vol. 19, pp. 33-48, 1972.

33. Gerald, C.F., and Wheatley, P.O., "Applied Numerical Analysis", Fourth Edition, Addison-Wesley Publishing Company, Massachusetts, 1989.

34. Eastop, T.D., and McConkey, A., "Applied Thermodynamics for Engineering Technologists", Third Edition, Longman, New York, 1983.

35. Stephanopoulos, G., "Chemical Process Control: An Introduction to Theory and Practice", Prentice-Hall, New Jersey, 1984.

36. "Thermophysical Properties of Matter, The TPRC Data Series", Plenum Publishing Company, 1970.

- 118 -

APPENDIX A - COMPUTER PROGRAM LISTING

A-1 STOVES™.H

#define GAS 0 #define PURGE 1 #define BOTI 2 #define COMPRESS 3 #define BLAST 4 #define DECOMP 5 #define MAX_STV 4 #define MAX_ELEM 41 #define NUM_GAS 10 #define NUM_COEFF 4 #define CONVERGE 0.1 #define SMALL l.OE-6 #define LARGE 1.0E6 #define ZERO_K 273.15 #define ATM_PRESS 101325 #define STEF _BOLTZ 5.669e-8 #define GAS_CONST 8314.5 #define HOURS_24 86399 #define POS(fl) ((fl)>O)? fl : SMALL

A-2 STOVES™.C

#include <stdlib.h> #include <conio.h> #include "stovesim.h"

unsigned long int tot_time; int ne, dt, nwn_stv; int t_blast, t_purge, t_comp, t_decomp; int ops_flag, eff_flag; float T_air, T_fuel, T_cb, T_hb; float dx, P _I, A_g, A_s, dh_s, V _misc, f; float cv _sc, cv _sm, eps_s; float Z_dome, T _inf, R_th; float p_blast, aim_02; float Kp_02, Ki_02, Kd_02, bias_02; float Kp_dome, Ki_dome, Kd_dome, bias_dome; float Kp_mix, Ki_mix, Kd_mix, bias_mix; float C_gh, C_bh, max_mix, mix_ch, fire_damp; float Tctl_flue 1, Tctl_flue2, Tctl_flue3; float Tmax_flue, Tmax_dome, Tmin_:hb; float rho_Nair, rho_Nfuel, rho_Nblast; float mdotmax_fuel, mdotmin_fuel, mdottot_fuel; float flow_purge, mdot_purge, mdot_blast; float M_air[NUM_GAS], M_fuel[NUM_GAS], M_blast[NUM_GAS]; float rho_s[MAX_ELEM];

struct check {

- A. I -

};

float l_sl; float rho_sl; float l_s2; float rho_s2; float l_s3; float rho_s3;

struct control {

};

float Kc_02; float bias_02; float taui_02; float taud_02; float Kc_dome; float bias_dome; float taui_dome; float taud_dome; float Kc_mix; float bias_mix; float taui_mix; float taud_mix;

extern void data_path (void); extern void gas_data (void); extern void combust_air_data (float *X_air); extern void fuel_data (float *X_fuel, float *flowmax_fuel, float *flowmin_fuel, float *flowtot_fuel); extern void blast_data (float *X_blast, float *flow_blast); extern void stove_phys_data (float *t_dome); extern void checker_data (float • Atot_s, float *hA_s, float *fA_s, struct check *chkr); extern void stove_ops_data (struct control *konst); extern void soln_data (void); extern void init_cond_data (int *cycle, int *time, float *T_s); extern void open_ops_file (void);

extern void init_solid_data (float Atot_s, float hA_s, float fA_s, float t_dome, struct check *chkr); extern void init_gas_data (float *X_air, float *X_fuel, float *X_blast, float flowmax_fuel, float

flowmin_fuel, float flowtot_fuel, float flow_blast); · extern void init_control_data (float *Q_gas, float *Q_blast, struct control *konst);

extern void init_cond (int *cycle, int *time, int *dome_flag, float *T_g, float *T_s, float *mdot_g, float *p_g, float *M_g);

extern void temp_t_dt (int *cycle, int *time, float *T_g, float *T_s, float *mdot_g, float *p_g, float *M_g, float *Q_gas, float *Q_blast);

extern void auto_control (int *cycle, int *time, int *dome_flag, float *T_g, float *T_s, float *mdot_g, float *p_g, float *M_g);

extern void graphics_init (void); extern void overlay (void); extern void gas_lines_init (void); extern void purge_lines_init (void); extern void comp_lines_init (void); extern void blast_lines_init (void); extern void decomp_lines_init (void);

extern void eff_out (float Q_gas, float Q_blast); extern void final_cond_out (int *cycle, int *time, float *T _s);

- A.2 -

extern void close_ops_file (void); extern void restore_display (void);

void main (void) {

int cycle[MAX_STV], time[MAX_STV], dome_flag[MAX_STV]; float Atot_s, hA_s, fA_s, t_dome, Q_gas, Q_blast; float flowmax_fuel, flowmin_fuel, flowtot_fuel, flow_blast; float mdot_g[MAX_STV], p_g[MAX_STV]; float M_g[MAX_STV][NUM_GAS]; float T_g[MAX_STV][MAX_ELEM], T _s[MAX_STV][MAX_ELEM]; float X_air[NUM_GAS], X_fuel[NUM_GAS], X_blast[NUM_GAS]; struct check chkr; struct control konst;

/* Read in all input data *I

data_path O; gas_data O; I* Gas properties data*/ soln_data O; I* Solution criteria*/ stove_phys_data (&t_dome); /*Stoves physical arrangement*/ checker_data (&Atot_s, &hA_s, &fA_s, &chkr); /* Checkerwork data*/ combust_air_data (X_air); /*Combustion air data*/ fuel_data (X_fuel, &flowmax_fuel, &flowmin_fuel, &flowtot_fuel); /*Fuel data*/ blast_data (X_blast, &flow_blast); /*Blast data*/ stove_ops_data (&konst); /*Control constants*/ init_cond_data (cycle, time, *T_s); /*Initial conditions data*/

if (ops_flag) open_ops_file O; !*Open operations output file ifrequired */

I* Initialise gas and solid data *I

init_solid_data (Atot_s, hA_s, fA_s, t_dome, &chkr); init_gas_data (X_air, X_fuel, X_blast, flowmax_fuel, flowmin_fuel, flowtot_fuel, flow_blast); init_control_data (&Q_gas, &Q_blast, &konst);

/* Initialise graphics system */

graphics_init O; gas_lines_init O; purge_lines_init O; comp_lines_init O; blast_lines_init O; decomp_lines_init O; overlay O;

I* Set up initial conditions */

init_cond (cycle, time, dome_flag, *T_g, *T_s, mdot_g, p_g, *M_g);

do {

I* Calculate temperature distribution at next time interval */

temp_t_dt (cycle, time, *T _g, *T _s, mdot_g, p_g, *M_g, &Q_gas, &Q_blast);

I* Activate automatic control scheme */

-A.3 -

auto_control (cycle, time, dome_flag, *T,_g, *T_s, mdot,_g, p,_g, *M,_g); } while (!kbhit O); /* Stop the program with any key*/

/*Miscellaneous clean up operations*/

if(eff_flag) eff_out (Q,_gas, Q_blast); /*Calculate thermal efficiency*/ final_cond_out (cycle, time, *T_s); /*Write final conditions data to a file*/ if(ops_flag) close_ops_file O; /*Close operating data file*/ restore_display O; /*Return display to text mode */ exit (l);

}

A-3 DATAIO.C

#include <stdio.h> #include <stdlib.h> #include <string.h> #include <dir.h> #include "stovesim.h"

extern unsigned long int tot_time; extern int ne, dt, num_stv; extern int t_blast, t_purge, t_comp, t_decomp; extern int ops_flag, eff_flag; extern float T_air, T_fuel, T_cb, T_hb;

. extern float dh_s, V _misc, R_th, p_blast, T_inf, f; extern float cv_sc, cv_sm, eps_s; extern float C_gh, C_bh, max_mix, mix_ch, fire_damp; extern float Tctl_flue 1, Tctl_flue2, Tctl_flue3; extern float Tmax_flue, Tmax_dome, Tmin_hb; extern float aim_02, flow_purge;

extern float rho_Nair, rho_Nfuel, rho_Nblast, mdot_blast, p_blast; extern float t_dome;

FILE *open_file (char *file_name, char *mode);

struct check {

};

float l_sl; float rho_sl; float l_s2; float rho_s2; float l_s3; float rho_s3;

struct control {

float Kc_02; float bias_02; float taui_02; float taud_02; float Kc_dome;

- A.4 -

};

float bias_dome; float taui_dome; float taud_dome; float Kc_mix; float bias_mix; float taui_mix; float taud_mix;

static char dir[MAXDIR]; static FILE *fp_ops;

I* Find data files directory and open operating data output file if needed*/

void data_path (void) {

}

getcwd (dir, MAXDIR); strcat (dir, "\\DA1\\");

/*Find graphics files directory*/

void graph_path (char *gdir) {

}

getcwd (gdir, MAXDIR); strcat (gdir, "\\GRAPIDCS\\");

/*Read in coefficients for gas properties*/

void gas_coeff_data (float *MW _data, float *cp_data, float *mu_data, float *k_data, float *dHO_data, float *e_C02_data, float *e_H20_data)

{ FILE *fp; int num_datl, num_dat2, num_dat3, sizef;

nwn_datl = NUM_GAS * NUM_COEFF; num_dat2 = 20; num_dat3 = 9; sizef = sizeof (float);

fp = open_file ("GASDATA.DAT", "rb"); fread (MW _data, sizef, NUM_GAS, fp); fread (cp_data, sizef, num_datl, fp); fread (mu_data, sizef, num_datl, fp); fread (k_data, sizef, num_dat I, fp); fread (dHO_data, sizef, NUM_GAS, fp); fread (e_C02_data, sizef, nwn_dat2, fp); fread (e_H20_data, sizef, num_dat3, fp); fclose (fp);

-A.5 -

I* Read in data relating to solution procedure*/

void soln_data (void) {

}

FILE *fp;

fp = open_file ("SOLN.DAT", "r"); fscanf(fp, "%*s %i %*s %i %*s %f', &ne, &dt, &f); fscanf(fp, "%*s %i %*s %i", &ops_flag, &eff_flag);

fclose (fp);

I* Read in stoves physical data*/

void stove_phys_data (float *t_dome) {

}

FILE *fp;

fp = open_file ("STVPHYS.DAT", "r"); fscanf(fp, "%*s %i", &num_stv); fscanf(fp, "%*s %f%*s %f', &Tmax_flue, &Tmax_dome); fscanf(fp, "%*s %i %*s %i", &t_purge, &t_comp); fscanf(fp, "%*s %i %*s %i", &t_blast, &t_decomp); fscanf(fp, "%*s %f%*s %f', &V_misc, t_dome); fscanf(fp, "%*s %f%*s %f', &R_th, &T_inf); fclose (fp);

Tmax_flue += ZERO_K; Tmax_dome += ZERO_K.; t_purge *= 60; t_comp *= 60; t_blast *= 60; t_decomp *= 60; *t_dome *= 60.0; T_inf += ZERO_K;

I* Read in checkerwork data *I

void checker_data (float * Atot_s, float *hA_s, float *fA_s, struct check *chkr) {

FILE *fp;

fp = open_file ("CHECKER.DAT", "r"); fscanf(fp, "%*s %f%*s %f%*s %f', Atot_s, hA_s, fA_s); fscanf(fp, "%*s %f%*s %f', &dh_s, &eps_s); fscanf(fp, "%*s %f%*s %f', &cv_sc, &cv_sm); fscanf(fp, "%*s %f%*s %f', &chkr->l_sl, &chkr->rho_s1); fscanf (fp, "%*s %f %*s %f', &chkr->l_s2, &chkr->rho_s2); fsca.nf\fp, "%*s %f%*s %f', &chkr->l_s3, &chkr->rho_s3); fclose (fp);

- A.6 -

}

*fA_s /= l 00.0; dh_s /= 1000.0;

I* Read in combustion air data*/

void combust_air_data (float *X_air) {

}

inti; FILE *fp;

fp = open_file ("COMBAIR.DAT", "r"); fscanf(fp, "%*s %f%*s %f', &T_air, &flow_purge); for (i = O; i < NUM_GAS; i++) fscanf (fp, "%*s %f ", (X_air + i)); fclose (fp );

T_air += ZERO_K; flow_purge /= 3600.0; for (i = O; i < NUM_GAS; i++) *(X_air + i) /= 100.0;

I* Read in fuel data *I

void fuel_data (float *X_fuel, float *flowmax_fuel, float *flowmin_fuel, float *flowtot_fuel) {

}

inti; FILE *fp;

fp = open_file ("FUEL.DAT", "r"); fscanf {fp, "%*s %f %*s %f ", flowmax_fuel, flowmin_fuel); fscanf(fp, "%*s %f%*s %f%*s %f', flowtot_fuel, &T_fuel, &aim_02); for (i = O; i < NUM_GAS; i++) fscanf (fp, "%*s %f ", (X_fuel + i)); fclose (fp);

*flowmax_fuel /= 3600.0; *flowmin_fuel /= 3600.0; *flowtot_fuel /= 3600.0; T _fuel += ZERO _K; aim_02 /= 100.0; for (i = O; i < NUM_GAS; i++) *(X_fuel + i) /= 100.0;

I* Read in blast data*/

void blast_data (float *X_blast, float *flow_blast) {

inti; FILE *fp;

fp = open_file ("BLAST.DAT", "r");

- A.7 -

}

fscanf (fp, "%*s %f%*s %f', flow_blast, &T_hb); fscanf(fp, "%*s %f%*s o/of', &T_cb, &p_blast); for (i = O; i < NUM_GAS; i++) fscanf(fp, "o/o*s o/of", (X_blast + i)); fclose (fp);

*flow_blast /= 3600.0; T _hb += ZERO_K; T_cb += ZERO_K; p_blast = ATM_PRESS + p_blast * 1000.0; for (i = O; i < NUM_GAS; i++) *(X_blast + i) /= 100.0;

/* Read in stoves control data *I

void stove_ops_data (struct control *konst) {

}

FILE *fp;

fp = open_tile ("STVCTRL.DAT", "r"); fscanf (fp, "%*s %f o/o*s %f %*s %f', &Tctl_flue 1, &Tctl_flue2, &Tctl_flue3); fscanf (fp, "%*s %f %*s o/of o/o*s %f', &Tmin_hb, &mix_ch, &max_mix); fscanf (fp, "%*s %f %*s %f', &konst->Kc_02, &konst->bias_02); fscanf (fp, "%*s %f o/o*s %f', &konst->taui_02, &konst->taud_02); fscanf (fp, "%*s %f o/o*s o/of', &konst->Kc_dome, &konst->bias_dome ); fscanf(fp, "%*s %f%*s %f', &konst->taui_dome, &konst->taud_dome); fscanf (fp, "%*s %f o/o*s %f', &konst->Kc_mix, &konst->bias_rnix); fscanf(fp, "%*s %f%*s %f', &konst->taui_mix, &konst->taud_mix); fscanf(fp, "%*s %f%*s %f%*s %f', &C_bh, &C_gh, &fire_damp); fclose (fp);

Tctl_flue 1 += ZERO_K; Tctl_flue2 += ZERO_K; Tctl_flue3 += ZERO_K; max_mix /= 100.0;

mix_ch /= 100.0; Tmin_hb += ZERO_K; konst->taui_02 *= 60.0; konst->taud_02 *= 60.0; konst->Kc_dome /= 100.0; konst->taui_dome *= 60.0; konst->taud_dome *= 60.0; konst->Kc_mix /= 100.0; konst->taui_mix *= 60.0; konst->taud_mix *= 60.0; C_bh /= 6000.0; C_gh /= 1000.0;

I* Read in initial conditions*/

void init_cond_data (int *cycle, int *time, float *T_s) {

inti,j; FILE *fp;

- A.8 -

}

fp = open_file ("INITCOND.DAT", "r"); for (i = O; i < nwn_stv; i++) fscanf (fp, "o/oi", (cycle+ i)); for (i = 0; i < nwn_stv; i++) fscanf (fp, "o/oi", (time+ i)); for (i = 1; i <= ne; i++) {

for (j = O; j < nwn_stv; j++) fscanf (fp, "%f ", (T _s + j • MAX_ELEM + i)); } fclose (fp);

I* Output final conditions distribution•/

void final_cond_out (int •cycle, int *time, float *T_s) {

}

inti, j; FILE *fp;

fp = open_file ("INITCOND.DAT", "w"); for (i = O; i < nwn_stv; i++) fprintf(fp, "%15i", *(cycle+ i)); fprintf (fp, "\n"); for (i = O; i < num_stv;· i++) fprintf(fp, "%15i", *(time+ i)); fprintf (fp, "\n"); for (i = 1; i <= ne; i++) {

}

for (j = O; j < nwn_stv; j++) fprintf (fp, "% 15.3f', *(T_s + j • MAX_ELEM + i)); fprintf (fp, "\n");

fclose (fp);

void eff_out (float Q_gas, float Q_blast) {

}

float thenn_eff; FILE *fp;

fp = open_file ("THERMEFF.OUT", "w"); therm_eff= (Q_blast I Q_gas) • 100.0; fprintf (fp, "Thermal efficiency= %10.3f %", therm_eft); fclose (fp);

I* Open file for operations data output •;

void open_ops_file (void) {

fp_ops = open_file ("OPSDATA.OUT", "w"); }

- A.9 -

I* Output operations data if required *I

void ops_data_out (int *cycle, int *time, float T_blast, float *T_g, float *mdot_fuel, float *mix_ratio, float *T_dome) {

}

inti, stv_b; float T_blst, p_blst, flow_blast, mixer; float T_dme, T_flue, flow_air, flow_fuel;

T_blst = T_blast- ZERO_K; flow_blast = mdot_blast I rho_Nblast * 3600.0; for (i = O; i < num_stv; i++) if(*( cycle + i) = BLAST) stv _b = i; p_blst = (p_blast- ATM_PRESS) I 1000.0; mixer= *(mix_ratio + stv_b) * 100.0;

fprintf(fp_ops, "%10li%10.lfU/olO.Of', tot_time, T_blst, flow_blast); fprintf (fp_ops, "% 10.3fU/o 10.3f', p_blst, mixer); for (i = O; i < num_stv; i++) {

}

if(*( cycle + i) = GAS) {

} else {

}

T_dme = *(f_dome + i)- ZERO_K; T_flue = *(f_g + i * MAX_ELEM + ne) - ZERO_K; flow_air = *(mix_ratio + i) * *(mdot_fuel + i) I rho_Nair * 3600.0; flow_fuel = *(mdot_fuel + i) I rho_Nfuel • 3600.0;

T_dme = 0.0; T_flue = 0.0; ffow_air = 0.0; flow_fuel = 0.0;

fprintf(fp_ops, "%5i%10i%10.lf', (i + 1), *(time+ i), T_dme); fprintf(fp_ops, "%10.lfU/olO.Of%10.0f', T_flue, flow_air, flow_fuel);

fprintf (fp_ops, "\n");

!* Open a file and check for errors *I

FILE *open_file (char *file_name, char *mode) {

}

char full_name[MAXPATH]; FILE *fp;

strcpy (full_name, dir); strcat (full_name, file_name); if ((fp = fopen (full_name, mode))== NULL) {

}

printf ("Cannot open data file %s", full_name); exit (l);

return (fp);

-A.IO-

/*Close operations data output file*/

void close_ops_file (void) {

fclose (fp_ops); }

A-4 INITIAL.C

#include <math.h> #include "stovesim.h"

extern int ne, dt, num_stv, t_comp, t_decomp; extern float dx, P _I, A_g, A_s, dh_s; extern float Kp_02, Ki_02, Kd_02, bias_02; extern float Kp_dome, Ki_dome, Kd_dome, bias_dome; extern float Kp_mix, Ki_mix, Kd_mix, bias_mix; extern float Z_dome, V _misc, f; extern float T_cb, T_hb, T_air, T_fuel, p_blast; extern float mdotmax_fuel, mdotmin_fuel, mdottot_fuel; extern float flow_purge, mdot_purge, mdot_blast; extern float rho_Nair, rho_Nfuel, rho_Nblast; extern float M_air[NUM_GAS], M_fuel[NUM_GAS], M_blast[NUM_GAS]; extern float rho_s[MAX_ELEM], eta_th[MAX_STV];

struct check {

};

float l_sl; float rho_sl; float l_s2; float rho_s2; float l_s3; float rho_s3;

struct control {

};

float Kc_02; float bias_02; float taui_02; float taud_02; float Kc_dome; float bias_dome; float taui_dome; float taud_dome; float Kc_mix; float bias_mix; float taui_mix; float taud_mix;

static float T _prod; static float M_prod[NUM_GAS];

-All -

extern float density (float *M_g, float T_g, float p_g); extern void vol_to_grav (float *X_g, float *M_g); extern void combustion (float *M_react, float *M_prod, float AF _ratio); extern float adiab_mixing (float *M_l, float *M_2, float T_l, float T_2, float rnix_ratio); extern float adiab_flame_temp (float *M_react, float *M_prod, float T_react);

void compress_dt (int time, float *T_s, float *mdot_g, float *p_g); void decomp_dt (int time, float *T_s, float *mdot_g, float *p_g); float mdot_pressure (int cycle, int del_t, float *T_s, float p_gO, float p_gl);

/* Initialise checkerwork data •I

void init_solid_data (float Atot_s, float hA_s, float fA_s, float t_dome, struct check *chkr) {

}

inti, nl, n2, stt, end; float l_s, rem 1, rem2, rho;

/* Physical checkerwork dimensions •I

l_s = chkr->l_sl + chkr->l_s2 + chkr->l_s3; dx = l_s /ne; A_g = fA_s • Atot_s;

A_s = (1.0 - fA_s) • Atot_s; P _I = hA_s I I_s;

I* Dome temperature response constant*/

Z_dome = 1.0 - exp(-dt I t_dome);

/*Calculate checkerwork density distribution wrt to height*/

nl =floor (chkr->l_sl I dx); reml = chkr->l_sl - nl * dx; n2 =floor ((chkr->l_s2 - (dx - rem I)) I dx); rem2 = (chkr->l_s2 - (dx - reml)) - n2 * dx; stt = 1; end= nl; for (i = stt; i <=end; i++) rho_s[i] = chkr->rho_sl; rho= (reml I dx) • chkr->rho_sl + (dx - reml) I dx • chkr->rho_s2; rho_s[end +I]= rho; stt =end+ 2; end = stt + n2 - I ; for (i = stt; i <=end; i++) rho_s[i] = chkr->rho_s2; rho= (rem2 I dx) • chkr->rho_s2 + (dx - rem2) I dx * chkr->rho_s3; rho_s[end + I]= rho; stt =end+ 2; end= ne; for (i = stt; i <=end; i++) rho_s[i] = chkr->rho_s3;

/* Initialise gas data*/

- A.12 -

void init_gas_data (float *X_air, float *X_fuel, float *X_blast, float flowmax_fuel, float flowmin_fuel, float flowtot_fuel, float flow_blast)

{

}

float T _react; float M_react[NUM_GAS];

/*Convert volwnetric analyses to gravimetric analyses*/

vol_to_grav (X_air, M_air); vol_to_grav (X_fuel, M_fuel); vol_to_grav (X_blast, M_blast);

!*Calculate gas densities at normal conditions*/

rho_Nair = density (M_air, ZERO_K, A TM_PRESS); rho_Nfuel =density (M_fuel, ZERO_K, ATM_PRESS); rho_Nblast =density (M_blast, ZERO_K, ATM_PRESS);

I* Determine mass flowrates * /

mdotmax_fuel = flowmax_fuel * rho_Nfuel; mdotmin_fuel = flowmin_fuel * rho_Nfuel; mdottot_fuel = flowtot_fuel • rho_Nfuel; mdot_purge = flow_purge * rho_Nair; mdot_blast = flow_blast * rho_Nblast;

I* Initial combustion calculations *I

combustion (M_react, M_prod, bias_02); T__react = adiab_mixing (M_air, M_fuel, T_air, T_fuel, bias_02); T_prod = adiab_flame_temp (M_react, M_prod, T_react);

I* Initialise heat transfer and control variables */

void init_control_data (float *Q_gas, float *Q_blast, struct control *konst) {

!* Initialise total heat transfer variables *I

*Q_gas = 0.0; *Q_blast = 0.0;

I* Calculate PID control constants*/

Kp_02 = konst->Kc_02; Ki_02 = konst->Kc_02 I konst->taui_02; Kd_02 = konst->Kc_02 I konst->taud_02; bias_02 = konst->bias_02;

Kp_dome = konst->Kc_dome; Ki_dome = konst->Kc_dome I konst->taui_dome; Kd_dome = konst->Kc_dome I konst->taud_dome; bias_dome = konst->bias_dome;

Kp_mix = konst->Kc_mix;

-A.13-

}

Ki_mix = konst->Kc_mix I konst->taui_mix; Kd_mix = konst->Kc_mix I konst->taud_mix; bias_mix = konst->bias_mix;

/*Initialise data for GAS cycle*/

void init_GAS (int *dome_flag, float *T_g, float T_s, float *T_dome, float *1_02, float *!_dome, float *mix_ratio, float AF _ratio, float *mdot_g, float *p_g, float *M_g, float mdot_fuel)

{

}

inti;

*dome_flag = O; *T _dome = T _s; *1_02 = 0.0; *!_dome= 0.0; *T_g = T_prod; *mix_ratio = AF _ratio; *mdot_g = (1.0 + AF_ratio) • mdot_fuel; *p_g = ATM_PRESS; for (i = O; i < NUM_GAS; i++) *(M_g + i) = M_prod[i];

I* Initialise data for PURGE cycle *I

void init_PURGE (float *T_g, float *mdot_g, float *p_g, float *M_g) {

}

inti;

*T _g = T _air; *mdot_g = mdot_purge; *p_g = A TM_pRESS; for (i = O; i < NUM_GAS; i++) *(M_g + i) = M_air[i];

I* Initialise data for BOTTLE period *I

void init_BOTT (float *T_g, float *mdot_g, float *p_g, float *M_g) {

}

inti;

*T_g=T_cb; *mdot_g = 0.0; *p_g = ATM_PRESS; for (i = O; i < NUM_GAS; i++) *(M_g + i) = M_air[i];

/* Initialise data for pressurisation of stove */

void init_COMPRESS (int time, float *T_g, float *T_s, float *mdot_g, float *p_g, float *M_g)

- A.14 -

}

inti;

*T_g = T_cb; if (time > 0) *p_g = ATM_PRESS + (p_blast - A TM_PRESS) * (time - dt) I t_comp; compress_dt (time, T _s, mdot_g, p_g); for (i = 0; i < NUM_GAS; i++) *(M_g + i) = M_blast[i];

/*Initialise data for BLAST cycle*/

void init_BLAST (float *I_blast, float *T_g, float *mix_ratio, float *mdot_g, float *p_g, float *M_g)

{

}

inti;

*!_blast= 0.0; *T_g=T_cb; *mix_ratio = SMALL; *mdot_g = mdot_blast; *p_g = p_blast; for (i = O; i < NUM_GAS; i++) *(M_g + i) = M_blast[i];

I* Initialise data for BLAST to GAS changeover*/

void init_DECOMP (int time, float *T_g, float *T_s, float *mdot_g, float *p_g, float *M_g) {

}

inti;

*T_g = *(f_s +I); if (time > 0) *p_g = p_blast - (p_blast - ATM_PRESS) * (time - dt) I t_decomp; decomp_dt (time, T_s, mdot_g, p_g); for (i = O; i < NUM_GAS; i++) *(M_g + i) = M_blast[i];

/*Reverse gas and solid temperature distributions at the completion ofa cycle*/

void reverse_temp (float *T_g, float *T_s) {

inti; float T[MAX_ELEM];

for (i =I; i <= ne; i++) T[i] = *(T_g + i); for (i = ne; i >=I; i--) *(T_g + i) = T[ne - i +I]; for (i = 1; i <= ne; i++) T[i] = *(T_s + i); for (i = ne; i >= 1; i--) *(T_s + i) = T[ne - i + 1];

-A.15-

I* Calculate mass flowrate and pressure of air during stove pressurising cycle *I

void compress_dt (int time, float *T _s, float *mdot_g, float *p_g) {

}

float p_gd;

if (time == 0) {

} else {

}

*p_g = ATM_PRESS; p_gd = p_blast; *mdot_g = mdot_pressure (COMPRESS, t_comp, T_s, *p_g, p_gd);

p_gd = *p_g; *p_g = ATM_PRESS + (p_blast - ATM_PRESS) *time I t_comp; *mdot_g = mdot_pressure (COMPRESS, dt, T_s, p_gd, *p_g);

/*Calculate pressure of stove during stove depressurising cycle*/

void decomp_dt (int time, float *T_s, float *mdot_g, float *p_g) {

}

float p_gd;

if(time = 0) {

} else {

}

*p_g = p_blast; p_gd = ATM_PRESS; *mdot_g = mdot_pressure (DECOMP, t_decomp, T_s, p_gd, *p_g);

p_gd = *p_g; *p_g = p_blast - (p_blast - ATM_PRESS) *time I t_decomp; *mdot_g = mdot_pressure (DECOMP, dt, T_s, *p_g, p_gd);

float mdot_pressure (int cycle, int del_t, float *T_s, float p_gO, float p_gl) {

inti; float T_c, rho_O, rho_l; float dtn, mdot_g;

if (cycle== COMPRESS) T_c = *(T_s + ne); /*Gas temp in combustion chamber*/ else T_c = *(T_s +I); rho_O =density (M_blast, T_c, p_gO); rho_I =density (M_blast, T_c, p_gl); dtn = V _misc * (rho_! - rho_O); for (i = I; i <= ne; i++) {

-A.16-

rho_O = density (M_blast, *(T _s + i), p_gO); rho_l =density (M_blast, *(T_s + i), p_gl); dm += A_g * dx * (rho_l - rho_O);

}

} mdot_g = dm I del_t; return (mdot_g);

A-5 CONTROL.C

#include "stovesim.h"

extern unsigned long int tot_time; extern int ne, dt, num_stv; · extern int t_blast, t_purge, t_comp, t_decomp, ops_flag, eff_flag; extern float Kp_02, Ki_02, Kd_02, bias_02; extern float Kp_dome, Ki_dome, Kd_dome, bias_dome; extern float Kp_mix, Ki_mix, Kd_mix, bias_mix; extern float C_gh, C_bh, max_mix, mix_ch, fire_darnp; extern float Tctl_fluel, Tctl_flue2, Tctl_flue3, Tmax_flue, Tmin_hb; extern float Tmax_dome, T_cb, T_hb, T_air, T_fuel, p_blast, flow_purge; extern float rho_Nair, rho_Nfuel, rho_Nblast; extern float aim_02, Z_dome; extern float mdotmax_fuel, mdotmin_fuel, mdot_blast, mdottot_fuel; extern float M_air[NUM_GAS], M_fuel[NUM_GAS], M_blast[NUM_GAS];

static float T_blast, I_blast; static float T_dome[MAX_STV]; static float I_dome[MAX_STV], 1_02[MAX_STV]; static float mdot_fuel[MAX_STV], flow[MAX_STV][3]; static float mix_ratio[MAX_STV], AF _ratio[MAX_STV];

extern void combustion (float *M_react, float *M_prod, float AF _ratio); extern float adiab_mixing (float *X_l, float *X_2, float T_l, float T_2, float mix_ratio); extern float adiab_flame_temp (float *X_react, float *X_prod, float T_react); extern float vol_gas (int gn, float *M_g); extern float enthalpy (float *M_g, float T _g);

extern void T_dt_steady (float *T_g, float *T_s, float mdot_g, float p_g, float *M_g); extern void T_dt_flow (float *T_g, float *T_s, float mdot_g, float p_g, float *M_g); extern void T_dt_no_flow (float *T_g, float *T_s, float mdot_g, float p_g, float *M_g); extern void T_dt_equal (float *T_g, float *T_s, float mdot_g, float *M_g);

extern void lines_disp (int sn, int cycle); · extern void gas_data_disp (int sn, int cycle, int time, float T_dome, float T_flue, float *flow); extern void purge_data_disp (int sn, int cycle, int time, float T_purge, float T_flue, float

flow _purge); extern void comp_data_disp (int sn, int cycle, int time, float T_comp, float mdot_comp); extern void text_BOTT (int sn, int cycle, int time); extern void blast_data_disp (int sn, int cycle, int time, float T_blast, float T_stv, float *flow); extern void decomp_data_disp (int sn, int cycle, int time, float T_decomp, float mdot_decomp);

extern void init_GAS (int *dome_flag, float *T_g, float T_s, float *T_dome, float *1_02, float *I_dome, float *mix_ratio, float AF _ratio, float *mdot_g, float *p_g, float *M_g, float mdot_fuel);

extern void init_PURGE (float *T_g, float *mdot_g, float *p_g, float *M_g);

-A.17-

extern void init_BOTI (float •T_g, float •mdot_g, float •p_g, float •M_g); extern void init_COMPRESS (int time, float •T_g, float •T_s, float *mdot_g, float *p_g, float

*M_g); extern void init_BLAST (float •!_blast, float *T_g, float *mix_ratio, float *mdot_g, float *p_g,

float *M_g); extern void init_DECOMP (int time, float *T_g, float *T_s, float *mdot_g, float *p_g, float •M_g);

extern void reverse_temp (float *T_g, float *T_s); extern void compress_dt (int time, float *T _s, float *mdot_g, float *p_g); extern void decomp_dt (int time, float *T_s, float *mdot_g, float *p_g); extern void eff_out (int sn, float eta_th); extern void ops_data_out (int *cycle, int *time, float T_blast, float *T_g, float *mdot_fuel, float

*mix_ratio, float *T_dome);

void GAS_ctrl (int sn, int •cycle, int •time, int *dome_flag, float *T_g, float *T_s, float *mdot_g, float *p_g, float *M_g);

void PURGE_ctrl (int sn, int *cycle, int *time, float *T_g, float *T_s, float *mdot_g, float *p_g, float *M_g);

void COMPRESS_ctrl (int sn, int *cycle, int *time, float *T_g, float *T_s, float *mdot_g, float *p_g, float *M_g);

void BOTI_ctrl (int sn, int *cycle, int *time, float *T_g, float *T_s, float *mdot_g, float *p_g, float *M_g);

void BLAST _ctrl (int sn, float •mdot_g); void DECOMP _ctrl (int so, int *cycle, int *time, int *dome_flag, float *T_g, float *T_s, float

*mdot_g, float *p_g, float *M_g); void AF_ratio_ctrl (int sn, float *T_g, float *mdot_g, float *M_g); void dome_control (int sn, float *T_g, float *mdot_g, float *M_g); void firing_control (int sn, float t_rem, float *T_g); void adjust_fuel (int *cycle, float *mdot_g); void GAS_to_PURGE (int sn, int *cycle, int *time, float *T_g, float *T_s, float *mdot_g, float

*p_g, float *M_g); void flowrates (int sn, int cycle);

/* Set up initial conditions •;

void init_cond (int *cycle, int *time, int *dome_flag, float *T_g, float *T_s, float *mdot_g, float •p_g, float *M_g)

{ inti, j; float *Tg, *Ts, *Mg;

tot_time = O; for (i = O; i < num_stv; i++) {

Tg = T_g + i * MAX_ELEM; Ts = T _s + i * MAX_ELEM; Mg = M_g + i * NUM_GAS; for (j =I; j <= ne; j++J *(Tg + j) =*(Ts+ j); AF _ratio[i] = bias_02; mdot_fuel[i] = mdotmax_fuel; switch (*\cycle + i)) {

case GAS:

- A.18 -

} }

init_GAS ((dome_flag + i), Tg, *(Ts+ l), (T_dome + i), (1_02 + i), (l_dome + i), (mix_ratio + i), bias_02, (mdot_g + i), (p_g + i), Mg, mdot_fuel[i]);

T_dt_steady (Tg, Ts, *(mdot_g + i), *(p_g + i), Mg); flowrates (i, GAS);

/* Display stove on GAS with initial data•/

lines_disp (i, GAS); gas_data_disp (i, *(cycle+ i), *(time+ i), T_dome[i], *(Tg + ne), flow[i]); break;

case PURGE: init_PURGE (Tg, (mdot_g + i), (p_g + i), Mg); T_dt_steady (Tg, Ts, *(mdot_g + i), *(p_g + i), Mg);

/*Display stove on PURGE with initial data•/

lines_disp (i, PURGE); purge_data_disp (i, *(cycle+ i), *(time+ i), T_air, *(Tg + ne), flow_purge); break;

case BOTT: init_BOTT (Tg, (mdot_g + i), (p_g + i), Mg); T_dt_steady (Tg, Ts, *(mdot_g + i), *(p_g + i), Mg); text_BOTT (i, *(cycle+ i), *(time+ i)); break;

case COMPRESS: init_COMPRESS (*(time + i), Tg, Ts, (mdot_g + i), (p_g + i), Mg); T_dt_steady (Tg, Ts, *(mdot_g + i), *(p_g + i), Mg);

/*Display stove on COMPRESS with initial data*/

lines_disp (i, COMPRESS); comp_data_disp (i, *(cycle+ i), *(time+ i), T_cb, *(mdot_g + i)); break;

case BLAST: init_BLAST (&!_blast, Tg, (mix_ratio + i), (mdot_g + i), (p_g + i), Mg); T_dt_steady (Tg, Ts, *(mdot_g + i), *(p_g + i), Mg); T_blast = adiab_mixing (M_blast, M_blast, T_cb, *(Tg + ne), *(mix_ratio + i)); flowrates (i, BLAST);

/*Display stove on BLAST with initial data*/

lines_disp (i, BLAST); blast_data_disp (i, *(cycle+ i), *(time+ i), T_blast, *(Tg + ne), flow[i]); break;

case DECOMP: init_DECOMP (*(time + i), Tg, Ts, (mdot_g + i), (p_g + i), Mg); T_dt_steady {Tg, Ts, *(mdot_g + i), *(p_g + i), Mg); lines_disp (i, DECOMP); decomp_data_disp (i, *(cycle+ i), *(time+ i), *(Tg + ne), *(mdot_g + i)); break;

- A.19 -

/*Calculate gas and solid temperature distributions*/

void temp_t_dt (int *cycle, int *time, float *T_g, float *T_s, float *mdot_g, float *p_g, float *M_g, float *Q_gas, float *Q_blast)

{ inti; float *Tg, *Ts, *Mg; float Q_air, Q_fuel, Q_prod, Q_cb, Q_hb;

for (i = O; i < num_stv; i++) {

Tg = T_g + i * MAX_ELEM; Ts= T_s + i * MAX_ELEM; Mg = M_g + i * NUM_GAS; *(time + i) += dt; switch (*(cycle+ i)) {

case GAS: T_dt_flow (Tg, Ts, *(mdot_g + i), *(p_g + i), Mg); T_dome[i] = T_dome[i] + Z_dome * (*Tg - T_dome[i]);

/* Calculate amount of heat in fuel used over dt */

if ( eff_flag) {

}

Q_air =AF _ratio[i] * mdot_fuel[i] * enthalpy (M_air, T_air); Q_fuel = mdot_fuel[i] *enthalpy (M_fuel, T_fuel); Q_prod = *(mdot_g + i) * enthalpy (Mg, *Tg); *Q_gas += (Q_prod - Q_air- Q_fuel) • dt;

gas_data_disp (i, *(cycle+ i), *(time+ i), T_dome[i], *(Tg + ne), flow[i]); break;

case PURGE: T_dt_flow (Tg, Ts, *(mdot_g + i), *(p_g + i), Mg); T_dome[i] = T_dome[i] + Z_dome • (*Tg- T_dome[i]); purge_data_disp (i, *(cycle+ i), *(time+ i), T_air, *(Tg + ne), flow_purge); break;

case COMPRESS: compress_dt (*(time + i), Ts, (mdot_g + i), (p_g + i)); T_dt_equal (Tg, Ts, *(mdot_g + i), Mg); T_dome[i] = T_dome[i] + Z_dome * (*(Tg + ne) - T_dome[i]);

I* Calculate amount of heat used to heat up blast*/

if (eff_flag) {

}

Q_cb = *(mdot_g + i) *enthalpy (M_blast, T_cb); Q_hb = *(mdot_g + i) •enthalpy (M_blast, *(Tg + ne)); *Q_blast += (Q_hb - Q_cb) • dt;

comp_data_disp (i, *(cycle+ i), *(time+ i), T_cb, *(mdot_g + i));

- A.20 -

}

} }

break;

case BOIT: T_dt_no_flow (Tg, Ts, *(mdot_g + i), *(p_g + i), Mg); text_BOIT (i, *(cycle+ i), *(time +i)); T_dome[i] = T_dome[i] + Z_dome •(*Ts - T_dome[i]); break;

case BLAST: T _dt_flow (Tg, Ts, *(mdot_g + i), *(p_g + i), Mg); T_blast = adiab_mixing (M_blast, M_blast, T_cb, *(Tg + ne), mix_ratio[i]); T_dome[i] = T_dome[i] + Z_dome • (*(Tg + ne)-T_dome[i]);

I* Calculate amount of heat used to heat up blast*/

if ( eff_flag) {

}

Q_cb = *(rndot_g + i) •enthalpy (M_blast, T_cb); Q_hb = *(rndot_g + i) •enthalpy (M_blast, *(Tg + ne)); *Q_blast += (Q_hb- Q_cb) • dt;

blast_data_disp (i, *(cycle+ i), *(time+ i), T_blast, *(Tg + ne), flow[i]); break;

case DECOMP: decomp_dt (*(time + i), Ts, (mdot_g + i), (p_g + i)); T_dt_equal (Tg, Ts, *(mdot_g + i), Mg); decomp_data_disp (i, *(cycle+ i), *(time+ i), *(Tg + ne), *(mdot_g + i)); T_dorne[i] = T_dome[i] + Z_dome • (*Tg - T_dome[i]); break;

tot_time += dt; if (tot_time > HOURS_24) tot_time = O; /*Reset total time clock after 24 hours •/

/* Output operating data if required *I·

if (ops_flag) ops_data_out (cycle, time, T_blast, T_g, mdot_fuel, mix_ratio, T_dome);

/*Automatic control scheme */

void auto_control (int *cycle, int *time, int *dome_flag, float *T_g, float *T_s, float *mdot_g, float *p_g, float *M_g)

{ inti;

for (i = 0; i < nwn_stv; i++) {

switch ( cycle[i]) {

case GAS: GAS_ctrl (i, cycle, time, dome_flag, T_g, T_s, mdot_g, p_g, M_g); break;

- A.21 -

}

} }

case PURGE: PURGE_ctrl (i, cycle, time, T_g, T_s, mdot_g, p_g, M_g); break;

case COMPRESS: COMPRESS_ctrl (i, cycle, time, T_g, T_s, mdot_g, p_g, M_g); break;

case BOTT: BOTT_ctrl (i, cycle, time, T_g, T_s, mdot_g, p_g, M_g); break;

case BLAST: BLAST_ctrl (i, mdot_g); break;

case DECOMP: DECOMP _ctrl (i, cycle, time, dome_flag, T_g, T_s, mdot_g, p_g, M_g); break;

adjust_fuel (cycle, mdot_g);

/* Control scheme for stove on GAS *I

void GAS_ctrl (int sn, int *cycle, int *time, int *dome_flag, float *T_g, float *T_s, float *mdot_g, float *p_g, float *M_g)

{ inti, j; float T _flue 1, T _flue2, t_rem; float*Tg[MAX_STV],*Ts[MAX_STV];

for (i = O; i < num_stv; i++) {

Tg[i] = T_g + i * MAX_ELEM; Ts[i] = T _s + i * MAX_ELEM;

}

T_fluel = *(Tg[sn] + ne); if((Tmax_dome -T_dome[sn]) <= 0.0) *(dome_flag + sn) =I; /*Flag to activate dome temp

PIO control loop *I

if (T _flue I >= Tmax_flue) /* Is flue temperature > maximum allowable ? *I {

GAS_to_PURGE (sn, cycle, time, Tg[sn], Ts[sn], mdot_g, p_g, M_g); /* Put the stove on PURGE*/

return;

i = O; while (*(cycle+ i) !=BLAST) i++; /*Determine which stove is on BLAST*/ j = O; while ((*(cycle+ j) !=GAS && j < num_stv) II j == sn) j++; if (j < num_stv) /*Is there another stove on GAS? */

- A.22 -

} else {

T_tlue2 = *(Tg(j] + ne); if (T _flue2 > T _flue l) /* Is its flue temp > that of current stove ? •I {

}

/*Calculate remaining GAS cycle time of cooler stove*/

t_rem = POS((mix_ratio[i] - mix_ch) I C_bh); t_rem += t_blast; firing_control (sn, t_rem, Tg[sn]); /* Control firing rate */ if (*(dome_flag + sn)) dome_control (sn, Tg[sn], mdot_g, M_g); /* Control dome

temp•/ else AF _ratio_ctrl (sn, Tg[sn], mdot_g, M_g); /* If dome temp< maximum, optimise

air/fuel ratio•/ return;

j =O; while (*(cycle+ j) !=BOTT &&j < nwn_stv) j++; if (j < nwn_stv) /* Is there a stove on BOTTLE ? • / {

} else {

I* Calculate remaining GAS cycle time of stove on GAS */

t_rem = POS((mix_ratio(j] - max_mix) I C_bh); t_rem += t_blast - t_purge;

firing_control (sn, t_rem, Tg[sn]); /*Control firing rate*/ if (*(dome_flag + sn)) dome_control (sn, Tg[sn], mdot_g, M_g); /*Control dome

temp•/ else AF _ratio_ctrl (sn, Tg[sn], mdot_g, M_g); /* If dome temp <maximum, optimise

air/fuel ratio */ return;

j = O; while (*(cycle+ j) !=PURGE && j < num_stv) j++; if (j < num_stv) /* Is a stove being purged? *I {

}

t_rem = POS(t_blast - *(time + j)); /* Calculate remaining GAS cycle time of stove on GAS •I

firing_control (sn, t_rem, Tg[sn]); /*Control firing rate •/ if(*(dome_flag + sn)) dome_control (sn, Tg[sn], mdot_g, M_g); /*Control dome

temp*/ else AF _ratio_ctrl (sn, Tg[sn], mdot_g, M_g); /* If dome temp< maximum,

optimise air/fuel ratio *I return;

j = O; while (*(cycle + j) != COMPRESS && j < num_stv) j++; if (j < nwn_stv) /* Is a stove being pressurised? *I {

t_rem = POS(t_blast - *(time + j) - t_purge ); /* Calculate remaining GAS cycle time of stove on GAS*/

firing_control (sn, t_rem. Tg[sn]); /*Control firing rate */ if \*(dome_flag + sn)) dome_control (sn, Tg[sn], mdot_g, M_g); /* Control dome.

temp*/

- A.23 -

}

} }

}

else AF _ratio_ctrl (sn, Tg[sn], mdot_g, M_g); /* If dome temp< maximwn, optimise air/fuel ratio */

return;

if (mix_ratio[i] < mix_ch) /*Is mixer valve< changeover set point?*/ {

}

if (T _flue 1 > Tctl_flue 1) {

}

GAS_to_PURGE (sn, cycle, time, Tg[sn], Ts[sn], mdot_g, p_g, M_g); /* Put the stove on PURGE*/

return;

if (mix_ratio[i] = 0.0) /* Is mixer valve fully closed? */ {

}

if (T _flue 1 > Tctl_flue2) {

}

GAS_to_PURGE (sn, cycle, time, Tg[sn], Ts[sn], mdot_g, p_g, M_g); /* Put the stove on PURGE •/

return;

if (T _blast < Tmin_hb) /* Is blast temp < minimum allowable ? •I {

}

if(T_fluel > Tctl_flue3) {

}

GAS_to_PURGE (sn, cycle, time, Tg[sn], Ts[sn], rndot_g, p_g, M_g); /* Put the stove on PURGE •I

return;

t_rern = SMALL; firing_control (sn, t_rem, Tg[sn]); /* Control firing rate */ if(*( dorne_flag + sn)) dome_control (sn, Tg[sn], rndot_g, M_g); else AF _ratio_ctrl (sn, Tg[sn], mdot_g, M_g); return;

t_rem = POS((mix_ratio[i] - mix_ch) I C_bh); firing_control (sn, t_rem, Tg[sn]); if (*(dome_flag + sn)) dome_control (sn, Tg[sn], mdot_g, M_g); /*Control dome temp•/ else AF _ratio_ctrl (sn, Tg[sn], mdot_g, M_g); /* If dome temp< maximum, optimise air/fuel

ratio */ return;

I* Control scheme for stove being purged*/

void PURGE_ctrl (int sn, int *cycle, int *time, float *T_g, float *T_s, float *mdot_g, float *p_g, float *M_g)

{ inti; float *Mg; float *Tg[MAX_STvl, *Ts[MAX_ST\1;

- A.24 -

}

for (i = 0; i < num_stv; i++) {

}

Tg[i] = T__g + i * MAX_ELEM; Ts[i] = T _s + i * MAX_ELEM;

Mg= M__g + sn * NUM_GAS;

if (*(time+ sn) >= t_purge) /* Is purge complete?*/ {

}

i = O; while (*(cycle+ i) !=BLAST) i++; /*Determine which stove is on BLAST*/ if (mix_ratio[i] <= mix_ch) /*Is mixer valve< aim changeover position?•/ {

} else {

}

/*Commence pressurising stove•/

*(cycle+ sn) =COMPRESS; *(time + sn) = O; reverse_temp (fg[sn], Ts[sn]); init_COMPRESS (*(time + sn), Tg[sn], Ts[sn], (mdot__g + sn), (p__g + sn), Mg); T_dt_steady (fg[sn], Ts[sn], *(mdot__g + sn), *(p__g + sn), Mg); purge_data_disp (sn, *(cycle+ sn), *(time+ sn), T_air, *(fg[sn] + ne), flow_purge); lines_disp (sn, PURGE); lines_disp (sn, COMPRESS); comp_data_disp (sn, *(cycle+ sn), *(time+ sn), T_cb, *(mdot__g + sn));

*(cycle+ sn) =BOTT; *(time + sn) = O; init_BOTT (fg[sn], (mdot__g + sn), (p__g + sn), Mg); T_dt_steady (fg[sn], Ts[sn], *(mdot__g + sn), *(p__g + sn), Mg); purge_data_disp (sn, *(cycle+ sn), *(time+ sn), T_air, *(fg[sn] + ne), flow_purge); lines_disp (sn, PURGE); text_BOTT (sn, *(cycle+ sn), *(time+ sn));

/*Control scheme for stove being pressurised*/

void COMPRESS_ctrl (int sn, int *cycle, int *time, float *T__g, float *T_s, float *mdot__g, float *p__g, float *M__g)

{ inti; float *Tg[MAX_STV], *Ts[MAX_STV], *Mg[MAX_STV];

for (i = 0; i < num_stv; i++) {

}

Tg[i] = T __g + i * MAX_ELEM; Ts[i] = T _s + i * MAX_ELEM; Mg[i) = M__g _,_ i * NUM_GAS;

if(*(time + sn) >= t_comp) /* Is compression complete '? *! {

i = O;

- A.25 -

} }

while (*(cycle+ i) !=BLAST) i++; /* Detennine which stove is on BLAST*/

/*Put the stove on BLAST*/

*(cycle+ sn) =BLAST; *(time + sn) = O; init_BLAST (&I_blast, Tg[sn], (mix_ratio + sn), (mdot_g + sn), (p_g + sn), Mg[sn]); T_dt_steady (Tg[sn], Ts[sn], *(mdot_g + sn), *(p_g + sn), Mg[sn]); T_blast = adiab_mixing (Mg[sn], Mg[sn], T_cb, *(Tg[sn] + ne), *(mix_ratio + sn)); flowrates (sn, BLAST); comp_data_disp {sn, *(cycle+ sn), *(time+ sn), T_cb, *(mdot_g + sn)); lines_disp (sn, COMPRESS); lines_disp (sn, BLAST); blast_data_disp (sn, *(cycle+ sn), *(time+ sn), T_blast, *(Tg[sn] + ne), flow[sn]);

/*De-pressurise the stove previously on BLAST*/

*(cycle + i) = DECOMP; t_blast = *(time + i); *(time + i) = O; reverse_ternp (Tg[i], Ts[i]); init_DECOMP (*(time + i), Tg[i], Ts[i], (mdot_g + i), (p_g + i), Mg{i]); T_dt_steady (Tg[i], Ts[i], *(mdot_g + i), *(p_g + i), Mg[i]); blast_data_disp (i, *(cycle+ i), *(time+ i), T_blast, *(Tg[i] + ne), flow[i]); lines_disp (i, BLAST); lines_disp (i, DECOMP); decornp_data_disp (i, *(cycle+ i), *(time+ i), *(Tg[i] + ne), *(rndot_g + i));

/*Control scheme for stove on BOTTLE*/

void BOTI_ctrl (int sn, int *cycle, int *time, float *T_g, float *T_s, float *mdot_g, float *p_g, float *M_g)

{ inti; float *Tg, *Ts, *Mg;

Tg = T _g + sn * MAX_ELEM; Ts = T _s + sn * MAX_ELEM; Mg= M_g + sn * NUM_GAS; i = O; while (*(cycle+ i) !=BLAST) i++; /* Detennine which stove is on BLAST*/ if (mix_ratio[i] < max_mix) /*Is mixer valve< maximwn mixer changeover? */ {

}

/*Commence pressurising stove */

*(cycle+ sn) =COMPRESS; *(time + sn) = O; reverse_temp (Tg, Ts); init_COMPRESS (*(time + sn), Tg, Ts, (mdot_g + sn), (p_g + sn), Mg); T_dt_steady (Tg, Ts, *(mdot_g + sn), *(p_g + sn), Mg); text_BOTI (sn, *(cycle + sn), *(time + sn)); lines_disp (sn. COMPRESS); comp_data_disp (sn, *(cycle+ sn), *(time+ sn), T_cb, *(mdot_g + sn));

- A.26 -

}

I* Control scheme for stove on BLAST*/

void BLAST_ctrl (int sn, float *mdot_g) {

}

static float P _blast[MAX_STV]; float D_blast;

I* Use PID control algorithm to maintain hot blast temperature*/

D_blast = P _blast[sn]; P _blast[sn] = T_blast - T_hb; !_blast+= P _blast[sn] * dt; D_blast = (P _blast[sn] - D_blast) I dt; mix_ratio[sn] = Kp_mix * P _blast[sn] + Ki_mix • I_blast + Kd_mix • D_blast + bias_mix; if (mix_ratio[sn] < 0.0) mix_ratio[sn] = 0.0; *(mdot_g + sn) = mdot_blast I (1.0 + mix_ratio[sn]); flowrates (sn, BLAST);

/*Control scheme for stove on BLAST to GAS changeover*/

void DECOMP_ctrl (int sn, int *cycle, int *time, int *dome_flag, float *T_g, float *T_s, float *mdot_g, float *p_g, float *M_g)

{

}

float *Tg, *Ts, *Mg;

Tg = T_g + sn * MAX_ELEM; Ts = T _s + sn * MAX_ELEM; Mg = M_g + sn * NUM_GAS;

if (*(time+ sn) >= t_decomp) /*Is changeover sequence complete?*/ {

}

/* Put the stove on GAS *I

*(cycle+ sn) =GAS; *(time + sn) = O; init_GAS ((dome_flag + sn), Tg, *(Ts+ l), (T_dome + sn), (1_02 + sn), (I_dome + sn),

(mix_ratio + sn), AF _ratio[sn], (mdot_g + sn), (p_g + sn), Mg, mdot_fuel[sn]); T_dt_steady (Tg, Ts, *(mdot_g + sn), *(p_g + sn), Mg); flowrates (sn, GAS); decomp_data_disp (sn, *(cycle+ sn), *(time+ sn), *(Tg + ne), *(mdot_g + sn)); lines_disp (sn, DECOMP); lines_disp (sn, GAS); gas_data_disp (sn, *(cycle+ sn), *(time+ sn), T_dome[sn], *(Tg + ne), flow[sn]);

/* Optimise air/fuel ratio using PID control algorithm */

- A.27 -

void AF _ratio_ctrl (int sn, float *T_g, float *mdot_g, float *M_g) {

}

static float P _02[MAX_STV]; float T_react, flue_02, D_02; float M_react[NUM_GAS]; float *Mg;

Mg = M_g + sn * NUM_GAS;

flue_02 = vol_gas (1, Mg); D_02 = P _02[sn]; P _02[sn] = aim_02 - flue_02; 1_02[sn] += P _02[sn] • dt; D_02 = (P _02[sn] - D_02) I dt; mix_ratio[sn] = Kp_02 • P _02[sn] + Ki_02 • 1_02[sn] + Kd_02 • D_02 + bias_02; AF _ratio[sn] = mix_ratio[sn];

/* Calculate new combustion conditions •I

combustion (M_react, Mg, mix_ratio[sn]); T_react = adiab_mixing (M_air, M_fuel, T_air, T_fuel, mix_ratio[sn]); *T_g = adiab_flame_temp (M_react, Mg, T_react); *(mdot_g + sn) = (1.0 + mix_ratio[sn]) • mdot_fuel[sn]; flowrates (sn, GAS);

/*Control scheme for dome temperature*/

void dome_control (int sn, float *T_g, float *mdot_g, float *M_g) {

}

static float P _dome[MAX_STV]; float D_dome, T_react; float M_react[NUM_GAS]; float *Mg;

Mg= M_g + sn • NUM_GAS;

/*Use PID control algorithm on override air to control dome temperature*/

D_dome = P _dome[sn]; P_dome[sn] = T_dome[sn] -Tmax_dome; I_dome[sn] += P _dome[sn] * dt; D_dome = (P _dome[sn] - D_dome) I dt; mix_ratio[sn] = Kp_dome * P _dome[sn] + Ki_dome • I_dome[sn] + Kd_dome * D_dome +

bias_dome; if (mix_ratio[sn] <AF _ratio[sn]) mix_ratio[sn] =AF _ratio[sn];

I* Calculate new combustion conditions */

combustion (M_react, Mg, mix_ratio[sn]); T_react = adiab_mixing (M_air, M_fuel, T_air, T_fuel, mix_ratio[sn]); *T_g = adiab_flame_temp (M_react, Mg, T_react); *(mdot_g + sn) =(I .0 + mix_ratio[sn]) * mdot_fuel[sn]; flowrates (sn, GAS);

- A.28 -

t• Control firing rate of stoves on GAS using time prediction function•/

void firing_ control (int sn, float t_rem, float *T _g) {

}

float flow, mdot;

flow= (Tmax_flue - *(T_g + ne)) I (t_rem • C_gh); mdot = flow • rho_Nfuel; mdot_fuel[sn] += fire_damp • (mdot - mdot_fuel[sn]); t• Use damping constant•/

/* Adjust fuel flowrate if demand is greater than supply *I

void adjust_fuel (int •cycle, float •mdot_g) {

inti, j; float sp_l, sp_2, fuel_use;

i= O; while (*(cycle+ i) !=GAS && i < num_stv) i++; if (i < num_stv) ;• Is there a stove on GAS ? •; {

sp_l = mdot_fuel[i]; j = O; while ((*(cycle + j) != GAS && j < num_stv) IU = i) j++; if (j < num_stv) /* Is there another stove on GAS ? •/ {

sp_2 = mdot_fuel[j]; fuel_use = sp_l + sp_2; if (fuel_use > mdottot_fuel) /* Is demand > supply */ {

mdot_fuel[i] = sp_l I fuel_use • mdottot_fuel; t• Ratio the fuel•/ mdot_fuel[j] = sp_2 I fuel_use • mdottot_fuel;

t• Check upper and lower flowrate constraints*/

if (mdot_fuel[i] > mdotmax_fuel) {

}

mdot_fuel[j] += mdot_fuel[i] - mdotmax_fuel; if (mdot_fuel[j] > sp_2) mdot_fuel[j] = sp_2; mdot_fuel[i] = mdotmax_fuel;

if (mdot_fuel[i] < mdotmin_fuel) {

}

mdot_fuel[j] -= mdotmin_fuel - rndot_fuel[i]; mdot_fuel[i] = mdotmin_fuel;

if (rndot_fuel[j] > mdotrnax_fuel) {

rndot_fuel[i] += mdot_fuel[j] - rndotmax_fuel; if (rndot_fuel[i] > sp_l) mdot_fuel[i) = sp_l; if (rndot_fuel[i] > mdotmax_fuel) mdot_fuel[i] = mdotmax_fuel;

- A.29 -

} else {

} }

}

mdot_fuel[j] = mdotmax_fuel; } if (mdot_fuel[j] < mdotmin_fuel) {

}

mdot_fuel[i] -= mdotmin_fuel - mdot_fuelUJ; if (mdot_fuel[i] < mdotmin_fuel) mdot_fuel[i] = mdotmin_fuel; mdot_fuel[j] = mdotmin_fuel;

*(mdot_g + i) = (1.0 + mix_ratio[i]) * mdot_fuel[i]; *(mdot_g + j) = (1.0 + mix_ratio[j]) * mdot_fuel[j]; flowrates (i, GAS); flowrates (j, GAS);

if (mdot_fuel[i] > mdottot_fuel) mdot_fuel[i] = mdottot_fuel; if (mdot_fuel[i] > mdotmax_fuel) mdot_fuel[i] = mdotmax_fuel; if (mdot_fuel[i] < mdotmin_fuel) mdot_fuel[i] = mdotmin_fuel; *(mdot_g + i) = (1.0 + mix_ratio[i]) * mdot_fuel[i]; flowrates (i, GAS);

/*Remove a stove from GAS on put on PURGE*/

void GAS_to_PURGE (int sn, int *cycle, int *time, float *T_g, float *T_s, float *mdot_g, float *p_g, float *M_g)

{

}

float *Mg;

Mg= M_g + sn * NUM_GAS; *(cycle+ sn) =PURGE; *(time + sn) = O; init_PURGE (T_g, (mdot_g + sn), (p_g + sn), Mg); T_dt_steady (T_g, T_s, *(mdot_g + sn), *(p_g + sn), Mg); gas_data_disp (sn, *(cycle+ sn), *(time+ sn), T_dome[sn], *(T_g + ne), flow[sn]); lines_disp (sn, GAS); lines_disp (sn, PURGE); purge_data_disp (sn, *(cycle+ sn), *(time+ sn), T_air, *(T_g + ne), flow_purge);

I* Calculate volwnetric flowrates of gas from mass flowrate */

void flO\\-Tates (int sn, int cycle) {

if (cycle == GAS) {

}

flow[sn][O] = mix_ratio[sn] * mdot_fuel[sn] I rho_Nair; flow[sn][l] = mdot_fuel[sn] I rho_Nfuel; flow[sn][2] = flow[sn][O] + flow[sn][l];

- A.30 -·

else {

flow[sn][O] = (mix_ratio[sn] • mdot_blast I (1.0 + mix_ratio[sn])) I rho_Nblast; flow[sn][l] = (mdot_blast I (1.0 + mix_ratio[sn])) I rho_Nblast; flow[sn][2] = mdot_blast I rho_Nblast;

} }

A-6HEAT.C

#include <math.h> #include "stovesim.h"

extern int ne, dt; extern float dx, P _I, l_s, A_g, A_s; extern float dh_s, f, cv _sc, cv _sm; extern float T_inf, R_th, eps_s; extern float rho_s[MAX_ELEM];

static float C_g[MAX_ELEM], R_g[MAX_ELEM], C_s[MAX_ELEM]; static float h_g[MAX_ELEM], eps_g[MAX_ELEM], alph_g[MAX_ELEM]; static float U[MAX_ELEM];

extern float vol_gas (int gn, float *M_g); extern float density (float *M_g, float T_g, float p_g); extern float spec_heat (float *M_g, float T_g); extern float convect_forc (float Tg, float *M_g, float mdot_g, float p_g); extern float convect_nat (float Tg, float Ts, float *M_g, float p_g); extern float emissivity (float T_g, float pp_C02, float pp_H20, float p_g); extern float absorptivity (float T_g, float T_s, float pp_C02, float pp_H20, float p_g);

void heat_props (float *T_g, float *T_s, float *M_g, float mdot_g, float p_g); void temp_distn (float *T_g, float *T_s); void linear_source (float *T_g, float *T_s); void T_g_solve (float *T_g, float *T_s); void T_s_solve (float *T_g, float *T_s); void T_gs_solve (int en, float T_ga, float T_gb, float T_gc, float T_sb, float *T_g, float *T_s);

/*Calculate steady state gas temperature distribution*/

void T_dt_steady (float *T_g, float *T_s, float mdot_g, float p_g, float *M_g) {

inti; float cp_g;

heat_props (T _g, T _s, M_g. mdot_g, p_g); for (i = I; i <= ne; i++) {

}

cp_g = spec_heat (M_g, *(T_g + i)); C_g[i] = 0.0; /* Gas phase transient term negelected */ R_g[i] = mdot_g * cp_g I (A_g * dx);

linear_source (T_g, T_s);

- A.31 -

T_g_solve (T_g, T_s); }

I* Calculate gas and solid temperature distributions with gas flow*/

void T_dt_flow (float *T_g, float *T_s, float mdot_g, float p_g, float *M_g) {

}

inti; float rho_g, cp_g, cv _s;

heat_props (T_g, T_s, M_g, mdot_g, p_g); for (i = 1; i <= ne; i++) {

}

rho_g =density (M_g, *(T_g + i), p_g); cp_g = spec_heat (M_g, *(T_g + i)); C_g[i] = rho_g * cp_g I dt; R_g[i] = mdot_g * cp_g I (A_g * dx); cv_s = cv_sc + cv_sm * *(T_s + i); C_s[i] = rho_s[i] • cv_s I dt;

linear_source (T_g, T_s); temp_distn (T_g, T_s);

/*Calculate temperature distribution with no gas flow and Tg =Ts•/

void T_dt_no_flow (float *T_g, float *T_s, float mdot_g, float p_g, float *M_g) {

}

inti; float rho_g, cp_g, cv_s;

for (i = 1; i < ne; i++) {

}

U[i] = 0.0; /*Gas to solid heat transfer neglected*/ rho_g =density (M_g, *(T_g + i), p_g); cp_g = spec_heat (M_g, *(T_g + i)); C_g[i] = rho_g * cp_g I dt; R_g[i] = mdot_g * cp_g I (A_g * dx); cv_s = cv_sc + cv_sm * *(T_s + i); C_s[i] = rho_s[i] * cv_s I dt;

temp_distn (T_g, T_s);

I* Calculate temperature distribution for gas temp= solid temp*/

void T_dt_equal (float *T_g, float *T_s, float mdot_g, float *M_g) {

inti; float cp_g, cv _s;

for (i = I; i < ne; i++)

- A.32 -

}

}

U[i] =LARGE; ;•Gas to solid heat ransfer resistance negligible•; cp_g = spec_heat (M_g, *(T_g + i)); C_g[i] = 0.0; t• Gas phase transient tenn negelected •; R_g[i] = mdot_g • cp_g I (A_g • dx); cv _s = cv _sc + cv _sm • *(T _s + i); C_s[i] = rho_s[i] • cv_s I dt;

temp_distn (T_g, T_s);

J• Determine heat transfer properties of gas phase •I

void heat_J>rops (float *T_g, float *T_s, float *M_g, float mdot_g, float p_g) {

}

inti; float pp_C02, pp_H20, Tg, Ts;

/* Calculate partial pressures of C02 and H20 •I

. pp_C02 = vol_gas (2, M_g) • p_g I ATM_PRESS; pp_H20 = vol_gas (3, M_g) • p_g I ATM_PRESS;

1• Calculate convective coefficients and radiation properties•/

for (i = 1; i <= ne; i++) {

}

Tg = *(T_g + i); Ts= *(T_s + i); h_g[i] = convect_forc (Tg, M_g, mdot_g, p_g); eps_g[i] =emissivity (Tg, pp_C02, pp_H20, p_g); alph_g[i] =absorptivity (Tg, Ts, pp_C02, pp_H20, p_g);

/* Linearise source tenn •I

void linear_source (float *T_g, float *T_s) {

inti; float Tg, Ts; float Z_rad, Q_rad;

for (i = I; i <= ne; i++) {

Tg = *(T_g + i); Ts= *(T_s + i); if (Tg ==Ts) Tg = (1.0 - SMALL)* Tg; /*Ensure numerical stability•; Z_rad = eps_g[i] •pow (Tg, 4.0) - alph_g[i] *pow (Ts, 4.0); Q_rad = STEF_BOLTZ * (1.0 + eps_s) I 2.0 * Z_rad;

!*Calculate overall heat transfer coefficient*/

U[i] = h_g[i] + Q_rad I (Tg - Ts);

- A.33 -

}

I* Calculate gas phase temperature distribution only*/

void T_g_solve (float *T_g, float *T_s) {

}

inti; float hP, a_p, a, cl, c2; float Tg[MAX_ELEM];

Tg[O] = *T_g; for (i = l; i <= ne; i++) {

hP = P_I * U[i]; a_p = C_g[i] + f * (R_g[i] + hP I A_g); a= C_g[i] - (1 - f) * (R_g[i] + hP I A_g); cl= R_g[i] * (f* Tg[i - 1) + (1 - f) * *(T_g + i - l)); c2 = hP I A_g * f* *(T_s + i); Tg[i] =(a* *(T_g + i) +cl + c2) I a_p;

} for (i = l; i <= ne; i++) *(T_g + i) = Tg[i];

I* Calculate solid phase temperature distribution only*/

void T_s_solve (float *T_g, float *T_s) {

}

inti; float hP, a_p, a, cl, c2;

for (i = l; i <= ne; i++) {

}

hP = P_I * U[i]; a_p = C_s[i] + f * (hP I A_s + 1.0 I (A_s * R_th)); a= C_s[i] - (1 - t) * (hP I A_s + 1.0 I (A_s * R_th)); cl= T_inf I (A_s * R_th); c2 = hP I A_s * *(T_g + i); *(T_s + i) =(a* *(T_s + i) +cl + c2) I a_p;

I* Calculate coupled gas and solid temperature distributions*/

void temp_distn (float *T_g, float *T_s) {

inti; float T _ga, T _gb, T _gc, T _sb; float Tg[MAX_ELEM], Ts[MAX_ELEM];

Tg[O] = *T_g; for (i = I; i <= ne; i++)

- A.34 -

}

}

T_ga = *(T_g + i - l); T_gb = *(T_g + i); T_gc = Tg[i - l]; T_sb = *(T_s + i); T_gs_solve (i, T_ga, T_gb, T_gc, T_sb, (Tg + i), (Ts+ i));

for (i = I; i <= ne; i++) {

}

*(T_g + i) = Tg[i]; *(T _s + i) = Ts[i];

/*Solve gas and solid phase energy equations simultaneously*/

void T_gs_solve (int en, float T_ga, float T_gb, float T_gc, float T_sb, float *T_g, float *T_s) {

}

float hP, a_gp, a_g, a_sp; float a_s, c_g, c_s, numer, denom;

hP = P_I * U[en]; a_gp = C_g[en] + f* (R_g[en] + hP I A_g); a_g = C_g[en] - (I - t) • (R_g[en] + hP I A_g); a_sp = C_s[en] + f* hP I A_s; a_s = C_s[en] - (1 - t) • hP I A_s; c_g = R_g[en] • (f • T_gc + (1 - t) • T_ga); c_s = hP I A_g * ((f * a_s I a_sp + (1.0- f)) * T_sb + f I a_sp * T_inf I (A_s * R_th)); numer = (a_g +pow (hP, 2.0) • f* (I - f) I (A_g • A_s * a_sp)) • T_gb + c_g + c_s; denom = a_gp - pow ((hP • t), 2.0) I (A_g • A_s • a_sp); *T _g = numer I denorn; *T_s = 1.0 I a_sp * (a_s * T_sb + T_inf I (A_s * R_th) + hP I A_s * (f* *T_g + (1 - t) *

T_gb));

A-7 COMBUST.C

#include <rnath.h> #include "stovesim.h"

extern float M_air[NUM_GAS], M_fuel[NUM_GAS], M_blast[NUM_GAS];

extern float enthalpy (float *M_g, float T_g); extern float spec_heat (float *M_g, float T_g); extern void grav_to_vol (float *M_g, float *X_g); extern void vol_to_grav (float *X_g, float *M_g); extern nonnalise_mass (float *M_g); extern float delta_HO (float *M_g);

I* Detennine composition of reactants and products *I

- A.35 -

void combustion (float *M_react, float *M_prod, float AF _ratio) {

}

inti; float R_N, R_O, R_C, R_H, X_02; float X_react[NUM_GAS], X_prod[NUM_GAS];

for (i = O; i < NUM_GAS; i++) *(M_react + i) = AF _ratio • M_air[i] + M_fuel[i]; normalise_mass (M_react); grav_to_vol (M_react, X_react); R_N = 2.0 • X_react[O]; R_O = 2.0 • X_react[l] + 2.0 • X_react[2] + X_react[3] + X_react[4]; R_C = X_react[2] + X_react[4] + X_react[6] + 2.0 • X_react[7] + 3.0 • X_react[8] + 4.0 •

X_react[9]; R_H = 2.0 • X_react(3] + 2.0 • X_react[5] + 4.0 • X_react[6] + 6.0 • X_react[7] + 8.0 •

X_react[8] + 10.0 • X_react[9]; X_prod[O] = 0.5 • R_N; X_prod[3] = 0.5 • R_H; X_02 = 0.5 • R_O - R_C - 0.25 * R_H; if (X_02 < 0.0) /* Rich mixture - carbon monoxide present in products */ {

}

X_prod[l] = 0.0; X_prod[2] = R_O - R_C - 0.5 * R_H; X_prod[4] = -R_O + 2.0 • R_C + 0.5 • R_H;

else /*Weak or stoichiometric mixture*/ {

}

X_prod[l] = X_02; X_prod[2] = R_C; X_prod[4] = 0.0;

for (i = 5; i < NUM_GAS; i++) X_prod[i] = 0.0; vol_to_grav (X_prod, M_prod);

t• Calculate temperature after adiabatic mixing of two streams•/

float adiab_mixing (float *M_I, float *M_2, float T_l, float T_2, float mix_ratio) {

inti; float enth_l, enth_2, T_3, T_3d, enth_3d, cp_3d; float Ml[NUM_GAS], M2[NUM_GAS], M3[NUM_GAS];

T_3 =ZERO_K;

I* Calculate gravimetric analysis of streams•/

for (i = O; i < NUM_GAS; i++) {

Ml [i] = mix_ratio • *(M_l + i); M2[i] = M_2(i]; M3[i] = Ml[i] + M_2[i];

}

enth_l =enthalpy (Ml, T_l); enth_2 = enthalpy (M2, T _2);

- A.36 -

}

do /*Iterative procedure to calculate final temperature•; {

}

T_3d=T_3; enth_3d =enthalpy (M3, T_3d); cp_3d = spec_heat (M3, T _3d); T_3 = T_3d + (enth_l + enth_2 - enth_3d) I cp_3d;

while (abs (T_3 -T_3d) >CONVERGE); return (T_3);

/*Calculate adiabatic flame temperature•/

float adiab_flame_temp (float *M_react, float *M_prod, float T_react) {

}

inti; float d.HO, enth_RO, enth_Rl, enth_PO, enth_P2d, cp_P2d; float T_25C, T_prod, T_prodd; float M_diffINUM_GAS];

T_25C = ZERO_K + 25.0; T_prod = ZERO_K;

;• Determine heat of combustion •I

for (i = O; i < NUM_GAS; i++) M_diff[i] = *(M_react + i) - *(M_prod + i); d.HO = delta_HO (M_dift);

/* Determine enthalpies •I

enth_RO =enthalpy (M_react, T_25C); enth_Rl =enthalpy (M_react, T_react); enth_PO =enthalpy (M_prod, T_25C); do /*Iterative procedure to calculate adiabatic flame temperature•/ {

}

T _prodd = T _prod; enth_P2d =enthalpy (M_prod, T_prodd); cp_P2d = spec_heat (M_prod, T _prodd); T_prod = T_prodd - (enth_P2d - enth_PO + d.HO + enth_RO - enth_Rl) I cp_P2d;

while (abs (T_prod - T_prodd) >CONVERGE); return (T_prod);

A-8 GASPROP.C

#include <stdio.h> #include <string.Ii> #include <math.h> #include "stovesim.h"

extern float A_g, A_s, dh...:.s, e_s, dx;

static float MW _data[NUM_GAS];

- A.37 -

static float cp_data[NUM_GAS][NUM_COEFF]; static float mu_data[NUM_GAS][NUM_COEFF]; static float k_data[NUM_GAS][NUM_COEFF]; static float dHO_data[NUM_GAS]; static float e_C02_data[4][5]; static float e_H20_data[3][3]; static float MW_O, MW_C, MW_H;

extern void gas_coeff_data (float *MW _data, float *cp_data, float *mu_data, float *k_data, float *dHO_data, float *e_C02_data, float •e_H20_data);

float emiss_C02 (float char_dim, float pp__g, float p__g, float T__g); float emiss_H20 (float char_dim, float pp__g, float p__g, float T__g); float props__g (float *data__g, float *M__g, float T__g);

I* Read in gas properties data and calculate mol.ecular weights */

void gas_data (void) {

}

gas_coeff_data (MW _data, •cp_data, *mu_data, *k_data, dHO_data, •e_C02_data, *e_H20_data);

MW _0 =MW _data[l] / 2.0; /*Oxygen molecular weight*/ MW _C =MW _data[4] - MW _O; /* Carbon molecular weight */ MW _H = MW _data[S] 12.0; I* Hydrogen molecular weight */

I* Calculate density of gas*/

float density (float *M__g, float T__g, float p__g) {

}

inti; float K, rho__g;

rho__g = 0.0; K = p__g I GAS_CONST I T__g; for (i = O; i < NUM_GAS; i++) rho__g += *(M__g + i) * K * MW _data[i]; return (rho__g);

I* Calculate specific heat of gas*/

float spec_heat (float *M__g, float T__g) {

}

float cp__g;

cp__g = props__g (*cp_data, M__g, T __g) * l .Oe3; return ( cp__g);

- A.38 -

/*Calculate viscosity of gas*/

float viscosity (float *M_g, float T_g) {

}

float mu_g;

mu_g = props_g (*mu_data, M_g, T_g) * I.Oe-6; return (mu_g);

/*Calculate thermal conductivity of gas*/

float therm_cond (float *M_g, float T_g) {

}

float k_g;

k_g = props_g (*k_data, M_g, T_g) * l.Oe-3; return (k_g);

/* Determine gas property in question */

float props_g (float *data_g, float *M_g, float T _g) {

}

int i, start; float x, yl, y2, y3, y4, prop_g;

x=T_g/ 1000.0; prop_g = 0.0; for (i = O; i < NUM_GAS; i++) {

}

start = NUM_COEFF * i; yl = *(data_g +start); y2 = *(data_g +start+ 1) *pow (x, 0.1); y3 = *(data_g +start+ 2) * x; y4 = *(data_g +start+ 3) *pow (x, 3.0); prop_g += *(M_g + i) * (yl + y2 + y3 + y4);

return (prop_g);

I* Calculate enthalpy of gas*/

float enthalpy (float *M_g, float T_g) {

int i, start; float x, yl, y2, y3, y4, enthalpy;

x =T_g; enthalpy= 0.0; for (i = O; i < NUM_GAS; i++) {

- A.39 -

}

}

start = NUM_COEFF * i; yl = *(*cp_data +start)* x; y2 = *(*cp_data +start+ 1) *pow (x, 1.1) I 2.195; y3 = *(*cp_data +start+ 2) * pow (x, 2.0) I 2.0e3; y4 = *(*cp_data +start+ 3) *pow (x, 4.0) I 4.0e9; enthalpy += *(M_g + i) * (y 1 + y2 + y3 + y4);

enthalpy = enthalpy * 1000. O; return (enthalpy);

/* Calculate heat of combustion of gas *I

float delta_HO (float *M_g) {

}

inti; floatdHO;

dHO=O.O; for (i = O; i < NUM_GAS; i++) dHO += *(M_g + i) * dHO_data[i]; return (dHO);

I* Convert volumetric gas analysis to gravimetric */

void vol_to_grav (float *X_g, float *M_g) {

inti; float mass_g;

mass_g = 0.0; for (i = O; i < NUM_GAS; i++) mass_g += *(X_g + i) *MW _data[i]; for (i = O; i < NUM_GAS; i++) *(M_g + i) = *(X_g + i) *MW _data[i] I mass_g;

}

/*Convert gravimetric gas analysis to volumetric*/

void grav_to_vol (float *M_g, float *X_g) {

inti; float vol_g;

vol_g = 0.0; for (i = O; i < NUM_GAS; i++) vol_g += *(M_g + i) I MW _data[i]; for (i = 0; i < NUM_GAS; i++) *(X_g + i) = *(M_g + i) I MW _data[i] I vol_g;

}

I* Nonnalise mass analysis of gas */

void normalise_mass (float *M_g)

- A.40 -

{

}

inti; float mass_g;

mass_g = 0.0; for (i = O; i < NUM_GAS; i++) mass_g += *(M_g + i); for (i = O; i < NUM_GAS; i++) *(M__g + i) /~ mass__g;

/* Calculate amount of gas constituent by volume */

float vol__gas (int gn, float *M__g) {

}

inti; float vol__gas; float tot_ vol= 0.0;

for (i = O; i < NUM_GAS; i++) tot_ vol+= *(M__g + i) I MW _data[i]; vol__gas = *(M__g + gn) I MW _data[gn] I tot_ vol; return (vol__gas);

I* Calculate ratio of oxygen mass to compound mass */

float mass_O_ratio (int gn) {

}

float mass_ratio;

mass_ratio =MW _O I MW _data[gn]; return (mass_ratio);

/*Calculate ratio of carbon mass to compound mass*/

float mass_C_ratio (int gn) {

}

float mass_ratio;

mass_ratio =MW _CI MW _data[gn]; return (mass_ratio );

I* Calculate ratio of hydrogen mass to compound mass*/

float mass_H_ratio {int gn) {

float mass_ratio;

mass_ratio =MW _HI MW _data[gn]; return (mass_ratio );

- A.41 -

}

/*Calculate forced convective heat transfer coefficient for internal flow*/

float convect_forc (float T_g, float *M_g, float mdot_g, float p_g) {

}

float rho_g, cp_g, mu_g, k_g; float u_g, Re_g, Pr_g, Nu_g, h_g;

rho_g =density (M_g, T_g, p_g); cp_g = spec_heat (M_g, T_g); mu_g = viscosity (M_g, T_g); k_g = thenn_cond (M_g, T_g); u_g = mdot_g I rho_g I A_g; Re_g = rho_g * u_g * dh_s I mu_g; Pr_g = cp_g * mu_g I k_g; Nu_g = 0.035 * pow (Re_g, 0.825) * pow (Pr_g, 0.4); h_g = Nu_g * k_g I db_s; return (h_g);

/*Calculate emissivity of gas*/

float emissivity (float T_g, float pp_C02, float pp_H20, float p_g) {

}

float char_dim; float eps_C02, eps_H20, eps_g;

p_g /= ATM_PRESS; char_dim = dh_s; if (pp_C02 = 0.0) eps_C02 = 0.0; else eps_C02 = emiss_C02 (char_dim, pp_C02, p_g, T_g); I* Carbon dioxide emissivity*/ if (pp_H20 = 0.0) eps_H20 = 0.0; else eps_H20 = emiss_H20 (char_dim, pp_H20, p_g, T_g); /*Water vapour emissi•ity */ eps_g = eps_C02 + eps_H20; /* Total emissivity */ return (eps_g);

I* Calculate absorptivity of gas*/

float absorptivity (float T_g, float T_s, float pp_C02, float pp_H20, float p_g) {

float char_dim, T _ratio; float epsd_C02, epsd_H20, alph_C02, alph_H20, alph_g;

p_g /= ATM_pRESS; T_ratio = T_s I T_g; char_dim = dh_s * T_ratio; if(pp_C02 = 0.0) epsd_C02 = 0.0; else epsd_C02 = emiss_C02 lchar_dim, pp_C02, p_g, T_s); alph_C02 = epsd_C02 I pow lT_ratio, 0.65); /*Carbon dioxide absorptivity*/ if (pp_H20 = 0.0) epsd_H20 = 0.0;

- A.42 -

}

else epsd_H20 = emiss_H20 (char_dim, pp_H20, p_g, T_s); alph_H20 = epsd_H20 I pow (T_ratio, 0.45); ;•Water vapour absorptivity•; alph_g = alph_C02 + alph_H20; 1• Total absorptivity•; return (alph_g);

I* Calculate emissivity of carbon dioxide*/

float emiss_C02 (float char_dim, float pp_g, float p_g, float T_g) {

}

inti, j; float Le, lambda, tau, Pe, lam_max, A, B, xi, eps_C02; float sum, epsO_g, reml, rem2; float a[3];

Le= 0.95 * char_dim * 100.0; lambda= log IO (pp_g *Le); tau= T_g I 1000.0; Pe = p_g * (1.0 + 0.28 * pp_g I p_g); if (T_g > 700) lam_max = loglO (0.225 *pow (tau, 2.0)); else lam_max = loglO (0.054 *pow (tau, -2.0)); A= 0.10 * pow (tau, -1.45) + 1.0; B= 0.23; xi= 1.47; for (i = O; i <= 3; i++) {

}

sum= 0.0; for (j = l; j <= 4; j++) sum+= e_C02_data[i][j] •pow (tau, j); a[i] = e_C02_data[i][O] +sum;

sum= O; for (i = l; i <= 3; i++) sum= sum+ a[i] •pow (lambda, i); epsO_g =exp (a[O] + sum); reml =(A* Pe+ B) I (Pe+ A+ B - 1.0); rem2 =exp (-xi *pow ((lam_max - lambda), 2.0)); eps_C02 = epsO_g * (1.0 + rem2 * (reml - l)); return (eps_C02);

/*Calculate emissivity of water vapour*/

float emiss_H20 (float char_dim, float pp_g, float p_g, float T_g) {

float i, j; float Le, lambda, tau, Pe, lam_max, A, B, xi, eps_H20; float sum, epsO_g, reml, rem2; float a[3];

Le = 0.95 * char_dim * 100.0; lambda= loglO (pp_g *Le); tau= T_g I 1000.0; Pe = p_g * (1.0 + 4.9 * pp_g .1 p_g * sqrt (ZERO_K IT _g));

la.m_max =log IO (13.2 *tau* tau); if(T_g < 750) A= 1.6315;

- A.43 -

else A= 1.888 + 2.053 * loglO (tau); B = 1.10 * pow (tau, -1.4); xi= 0.5; for (i = O; i <= 2; i++) {

sum= 0.0; for G = I; j <= 2; j++) sum += e_H20_data[i][j] * pow (tau, j); a[i) = e_H20_data[i][O] +sum;

} sum= O; for (i =I; i <= 2; i++) sum= sum+ a[i] *pow (lambda, i); epsO_g = exp (a[O] + sum); rem I= (A* Pe+ B) I (Pe+ A+ B - 1.0); rem2 = exp (-xi * pow ((lam_max - lambda), 2.0)); eps_H20 = epsO_g * (1.0 + rem2 *(rem I - 1)); return (eps_H20);

}

A-9 DISPLAY.C

#include <alloc.h> #include <stdio.h> #include <string.h> #include <stdlib.h> #include <graphics.h> #include "stovesim.h"

#define RIGHf I #define NOCONN 0 #define LEFT - I

extern unsigned long int tot_time; extern int num_stv; extern float T_cb, T_hb, T_air, T_fuel, rho_Nblast;

static void far *lines_mem[DECOMP+l]; static int stv _lft, stv _rht, chk_rht; static int stv _top, stv _bot, chk_top; static int stv_wdt, stv_hgt; static int indent, xmarg, xspac; static int txt_spc, box_hgt, box_wdt, box_twdt;

extern void graph_path (char *gdir);

void comb_air_lines (void); void fuel_gas_lines (void); void flue_gas_Iines (void); void cold_blast_lines (void); void mixer_lines (void); void hot_blast_lines (void); void data_box (int xpos, int ypos, int dir); void checker_gas_dir (int cycle); void arrow (int xpos, int top, int wdt, int hgt, int cycle); void status_text (char *cycle); void save_image (int cycle); void new_data (int xpos, int ypos, int colour, int new, float temp, float flow);

- A.44 -

void sec_to_luns (long int time, char *luns);

I* Initialise graphics system and layout of stove */

void graphics_init (void) {

}

char gdir[30]; int driver, mode, th, tw;

I* Initialise graphics device*/

driver= DETECT; graph_path (gdir); initgraph (&driver, &mode, gdir); setvisualpage (O); setactivepage (O); setbkcolor (BLACK);

I* Calculate text size attributes * /

th= textheight ("%10.0f'); tw = textwidth (''%10.0f'); txt_spc = th I 3;

I* Set indentations and margins *I

indent = th + 2 * txt_spc; xmarg = (12 - 2 * num_stv) *indent; xspac = (18 - 3 * num_stv) * indent;

/*Determine size of stoves for display*/

stv_wdt = (getmaxx O - (2 * xmarg + (num_stv- 1) * xspac)) I num_stv; stv _hgt = getmaxy O - 23 * indent; stv _top = 11 * indent; stv _bot = stv _top + stv _hgt; chk_top = stv_top + stv_wdt 12;

/*Determine positioning of stove*/

stv_lft = 5 *indent/ 2; stv _rht = stv _lft + stv _ wdt; chk_rht = stv_rht- (5 - num_stv) *indent;

I* Determine size of data boxes*/

box_hgt = indent; box_ wdt = tw + 2 * txt_spc; box_twdt = textwidth ("%9s") + 2 * txt_spc;

I* Create outline of stove on GAS and save in memory *I

- A.45 -

void gas_lines_init (void) {

}

int XpOS, ypos;

/* Set display defaults */

setactivepage (O); clearviewport O; setlinestyle (SOLID_LINE, l, NORM_ WIDTH);

comb_air_lines O; fuel_gas_lines O; flue_gas_lines O;

I* Dome temperature data box */

setcolor (YELLOW); xpes = chk_rht; ypos = chk_top - txt_spc; data_box (xpes, ypos, NOCONN);

checker_gas_dir (GAS); /* Gas flow lines */ status_text ("GAS"); /* Text indicating stove on GAS */ save_image (GAS); /*Save image on far heap*/

/* Create outline of stove being purged and save in memory*/

void purge_lines_init (void) {

}

/* Set display defaults *I

setactivepage (O); clearviewport O; setlinestyle (SOLID_LINE, 1, NORM_ WIDTH); comb_air_lines O; flue_gas_lines O; checker_gas_dir (GAS); /* Gas flow lines */

status_text ("PURGE"); /*Text indicating stove on PURGE*/ save_image (PURGE); /* Save image on far heap*/

/*Create outline of stove being pressurised and save in memory*/

void comp_lines_init (void) {

I* Set display defaults */

setactivepage (O); clearviewport O; setlinestyle (SOLID_LINE, I, NORM_ WIDTH);

cold_blast_lines O; checker_gas_dir (BLAST); /*Gas flow lines*/

- A.46 -

}

status_text ("COMP"); /* Text indicating stove on COMPRESS •/ save_image (COMPRESS); /*Save image on far heap*/

I* Create outline of stove on BLAST and save in memory*/

void blast_lines_init (void) {

}

I* Set display defaults*/

setactivepage (O); clearviewport O; setlinestyle (SOLID_LINE, 1, NORM_ WIDTH);

cold_blast_lines O; mixer_lines O; hot_blast_lines O; checker_gas_dir (BLASn; /*Gas flow lines•/ status_text ("BLAST"); /* Text indicating stove on BLAST */ save_image (BLASn; /* Save image on far heap •/

/* Create outline of stove being de-pressurised and save in memory */

void decomp_lines_init (void) {

/* Set display defaults•/

setactivepage (O); clearviewport O; setlinestyle (SOLID_LINE, 1, NORM_ WIDTH);

}

flue_gas_lines O; checker_gas_dir (GAS); /*Gas flow lines•/ status_text ("DECOMP"); /*Text indicating stove being de-compressed•/ save_image (DECOMP); /*Save image on far heap*/

I* Draw combustion air supply line to stove with data box•/

void comb_air_lines (void) {

int lft, rht, top, bot; int xpos, ypos;

setcolor (CY AN); top = stv _bot - 2 • indent; bot = getmaxy O - 3 • indent; lft = stv _rht; rht = stv_rht + 3 •indent; line (!ft, top, rht, top); line (rht, top, rht, bot);

- A.47 -

}

ypos = stv _bot + indent; arrow (rht, ypos, indent, indent, BLAST); xpos = rht; ypos = stv _bot + 5 * indent; data_box (xpos, ypos, LEFT);

I* Draw fuel supply line to stove with data box*/

void fuel_gas_lines (void) {

int lft, rht, top, bot; int xpos, ypos;

setcolor (LIGHTGREEN); top= stv_bot- indent; bot= getmaxy O - 5 * indent; lft = stv _rht; rht = stv _rht + 2 * indent; line (!ft, top, rht, top); line (rht, top, rht, bot); ypos = stv_bot +indent; arrow (rht, ypos, indent, indent, BLAST); xpos =rht;

}

ypos = stv_bot + 2 *indent; data_box (xpos, ypos, LEFT);

/*Draw flue gas line from stove with data box*/

void flue_gas_lines (void) {

int lft, rht, top, bot; int xpos, ypos;

setcolor (LIGHTMAGENT A); top = 4 * indent; bot = stv _bot - indent; lft = stv _lft - 2 * indent; rht = stv _!ft; line (!ft, bot, rht, bot); line (!ft, bot, lft, top); ypos = chk_top; arrow (!ft, ypos, indent, indent, BLAST); xpos = lft;

}

ypos = stv_top - 2 *indent; data_box (xpos, ypos, RIGHT);

/* Draw cold blast supply to stove with data box*/

void cold_blast_lines (void)

- A.48 -

}

int lft, rht, top, bot; int xpos, ypos;

setcolor (LIGHTBLUE); top = stv _bot - indent; bot= getmaxy 0- indent; xpos = stv _lft - 2 * indent; line (xpos, top, xpos, bot); ypos = stv _bot + 5 * indent; arrow (xpos, ypos, indent, indent, BLAST); lft = xpos; rht = stv _lft; ypos = stv _bot - indent; line (lft, ypos, rht, ypos); ypos = stv _bot + 2 * indent; data_box (xpos, ypos, RIGHT);

/* Draw mixer line from cold blast supply *I

void mixer_lines (void) {

int top, bot, xpos, ypos;

top = 2 * indent; bot = stv _bot - indent; xpos = stv _lft - 2 * indent; line (xpos, top, xpos, bot); ypos = chk_top; arrow (xpos, ypos, indent, indent, BLAST); ypos = stv _top - 5 * indent; data_box (xpos, ypos, RIGHT);

}

I* Draw blast line from stove *I

void hot_blast_lines (void) {

int lft, rht, top, bot; int xpos, ypos;

setcolor (LIGHTRED); lft = stv _rht; rht = stv _rht + 2 * indent; ypos = (stv_top + stv_bot) I 2; line (lft, ypos, rht, ypos); xpos = rht; top = 2 * indent; bot= ypos; line (xpos, top, xpos, bot); ypos = chk_top; arrow (xpos, ypos, indent, indent, BLAST); xpos = rht;

- A.49 -

}

ypos = stv _top - 2 * indent;· data_box (xpos, ypos, LEFT); xpos = (stv_lft + stv_rht) I 2 + box_wdt I 2; ypos = 2 * indent - txt_spc; data_box (xpos, ypos, NOCONN);

/*Display text indicating the cycle of the stove*/

void status_text (char *cycle) {

}

char text[20]; int xpos, ypos;

setcolor (WHITE); . settextjustify (CENTER_TEXT, BOTTOM_TEXT);

xpos = (stv_lft + chk_rht) I 2; ypos = (chk_top + stv_bot) I 2 - txt_spc; sprintf (text, cycle); outtextxy (xpos, ypos, text);

/* Save image of gas lines in far memory •/

void save_image (int cycle) {

}

unsigned int size; int lft, rht, top, bot;

/* Save image on far heap *I

lft = O; rht = stv _rht + 7 * indent I 2; top= O; bot = getmaxy O; size= imagesize (lft, top, rht, bot); if((lmes_mem[cycle] = farmalloc (size))= NULL) /*Allocation error checking*/ {

}

closegraph O; printf ("Error: not enough heap space\a"); exit (l);

getimage (lft, top, rht, bot, lines_mem[cycle]);

I* Draw gas flow lines through checkerwork indicating flow direction *I

void checker_gas_dir (int cycle) {

int lft, rht, top, bot, xpos, ypos. dir;

if (cycle == GAS) dir = l; /* Determine direction of arrows *I

- A.50 -

}

else dir = -1 ;

/*Draw flow lines*/

setcolor (LIGHTMAGENT A); lft = stv _lft; rht = (stv_lft + chk_rht) I 2 - indent; ypos = stv _bot - indent; line (Ift, ypos, rht, ypos); xpos = rht; ypos = stv _bot - 2 * indent; arc (xpos, ypos, 270, 0, indent); xpos = rht + indent; top= (chk_top + stv_bot) I 2 + box_hgt + txt_spc; bot= ypos; line (xpos, top, xpos, bot); ypos =(top+ bot+ indent) I 2 + dir *indent I 2; arrow (xpos, ypos, indent, indent, cycle); /*Add arrow*/ setcolor (LIGHTRED); top = chk_top; bot= (chk_top + stv_bot) I 2 - box_hgt- txt_spc; line (xpos, top, xpos, bot); ypos = (top + bot) I 2 + dir * indent I 2; arrow (xpos, ypos, indent, indent, cycle); /*Ass arrow*/

/* Add an arrow *I

void arrow (int xpos, int top, int wdt, int hgt, int cycle) {

int x, i, lft, rht, ypos; float grad;

grad = wdt I hgt; for (i = 1; i <=hgt; i++) {

x = i * grad I 2; lft = xpos - x; rht = xpos + x; if (cycle = GAS) ypos = top - i; /* Determine arrow direction * / else ypos = top + i; line (lft, ypos, rht, ypos); /*Solid arrow filled with lines*/

} }

/* Draw overlay on screen*/

void overlay (void) {

char text[40]; int stv _lft, stv _rht, chk_rht; int lft, rht, top, mid, bot; inti;

- A.51 -

/* Set display defaults*/

setactivepage (0); clearviewport O; setlinestyle (SOLID_LINE, 1, THICK_ WIDTH); settextjustify (LEFT_ TEXT,BOTTOM_ TEXT); settextstyle (DEFAULT_FONT, HORIZ_DIR, 1);

/*Draw hot blast main at top of page*/

setcolor (LIGHTRED); lft = indent; rht = getmaxx O - indent; top = 2 * indent; bot= top; line (lft, top, rht, bot); sprintf (text, "Hot Blast"); outtextxy (lft, (top - txt_spc), text);

/* Draw flue gas main near top of page * /

setcolor (LIGIITMAGENT A); top += 2 * indent; bot= top; line (l:ft, top, rht, bot); sprintf (text, "Flue Gas"); outtextxy (lft, (top - txt_spc), text);

/*Draw cold blast supply main at bottom of page*/

setcolor (LIGHTBLUE); top = getmaxy O - indent; bot= top; line (lft, top, rht, bot); sprintf (text, "Cold Blast"); outtextxy (lft, (top - txt_spc), text);

/*Draw combustion air supply main near bottom of page*/

setcolor (CY AN); top -= 2 * indent; bot= top; line (lft, top, rht, bot); sprintf (text, "Combust Air"); outtextxy (lft, (top - txt_spc), text);

/* Draw fuel gas supply main near bottom of page *I

setcolor (LIGHTGREEN); top -= 2 * indent; bot= top; line (lft, top, rht, bot); sprintf (text, "Fuel Gas"); outtextxy (lft, (top - txt_spc), text);

/* Draw stoves outline *I

setcolor (YELLOW);

- A.52 -

}

setlinestyle (SOLID_LINE, 1, NORM_ WIDTH); mid= (chk_top + stv_bot) I 2; for (i = O; i < num_stv; i++) /*Draw required nwnber of stoves*/ {

}

stv_lft = xmarg + (xspac + stv_wdt) • i; stv_rht = stv_lft + stv_wdt; chk_rht = stv_rht - (5 - nwn_stv) •indent; lft = stv _lft; rht = stv _rht; top = chk_top; bot = stv _bot; line (lft, top, lft, bot); line (rht, top, rht, bot); line (lft, bot, rht, bot); rht = chk_rht; line (lft, top, rht, top); line (rht, top, rht, bot); top = mid - box_hgt; bot = mid + box_hgt; line (lft, top, rht, top); line (lft, mid, rht, mid); line (lft, bot, rht, bot); top = chk_top; lft += stv _ wdt I 2; arc (lft, top, 0, 180, (stv_wdt I 2)); /*Draw stove dome*/

/*Fill in checkerwork */

setfillstyle (WIDE_OOT_FILL, GREEN); for (i = O; i < num_stv; i++) {

}

lft = xmarg + (xspac + stv_wdt) • i + stv_wdt I 2; top= stv_bot - stv_hgt I 4; floodfill (lft, top, YELLOW); top= stv_top + stv_wdt I 2 + stv_hgt I 4; floodfi.11 (lft, top, YELLOW);

/* Draw data box for total time display •I

setcolor (YELLOW); rht = getmaxx O - indent; lft = rht - textwidth ("00:00:00") - 2 • txt_spc; bot = 2 • indent - txt_spc; top = bot - box_hgt; rectangle (lft, top, rht, bot);

I* Draw a data box *I

void data_box (int xpos, int ypos, int dir) {

int lft, rht, top, bot;

switch (dir)

- A.53 -

}

}

case LEFT: /*Box to the left of connector line*/ lft = xpos - 2 • indent - box_ wdt; rht = xpos; line (lft, ypos, rht, ypos); rht = lft + box_ wdt; top = ypos - box_hgt; bot = ypos + box_hgt; break;

case RIGHT: /*Box to the right of connector line */ lft = xpos; rht = xpos + 2 • indent + box_ wdt; line (lft, ypos, rht, ypos); lft = xpos + 2 • indent; top = ypos - box_hgt; bot = ypos + box_hgt; break;

case NOCONN: /* Box with no connector line */ lft = xpos- box_wdt; rht= xpos; top = ypos - box_hgt; bot= ypos; break;

rectangle (lft, top, rht, bot);

I* Display gas lines connecting to stove for the appropriate cycle */

void lines_disp (int sn, int cycle) {

}

int lft, top;

lft = xmarg + (xspac + stv_wdt) * sn - 5 *indent/ 2; top= O; putimage (lft, top, lines_mem[cycle], XOR_PUT);

I* Display data for GAS cycle*/

void gas_data_disp (int sn, int cycle, int time, float T_dome, float T_flue, float *flow) {

char text[20], hms[lO]; int stv _lft, stv _rht, chk_rht; int new, xpos, ypos;

/* Set diplay defaults */

setfillstyle (SOLID_FILL, BLACK); setcolor (WHITE); stv_lft = xmarg + (xspac + stv_wdt) * sn; stv_rht = stv_lft + stv_wdt;

- A.54 -

}

chk_rht = stv_rht - (5 - num_stv) *indent;

if(cycle =GAS) new= l; /*Display fresh data*/ else new= O; I* No display of data - only clear old data*/

I* Display fuel temperature and flowrate */

xpos = stv _rht; ypos = stv_bot + 2 *indent; new_data (xpos, ypos, LIGHTGREEN, new, T_fuel, *(flow+ 1));

/* Display combustion air temperature and flowrate */

xpos = stv _rht + indent; ypos = stv _bot + 5 * indent; new_data (xpos, ypos, CY AN, new, T_air, *flow);

/*Display flue gas temperature and flowrate */

xpos = stv _lft + box_ wdt; ypos = stv _top - 2 * indent; new_data (xpos, ypos, LIGHTMAGENTA, new, T_flue, *(flow+ 2));

settextjustify (RIGHT_TEXT, BOTTOM_TEXT); xpos = chk_rht - txt_spc; ypos = chk_top - 2 * txt_spc; floodfill (xpos, ypos, YELLOW); /*Clear previous dome temperature*/

/*Display dome temperature if required*/

if(new) {

}

sprintf (text, "%10.0f', (T_dome - ZERO_K)); strcat (text, n• ");

outtextxy (xpos, ypos, text);

xpos = (stv_lft + chk_rht) I 2; ypos = (chk_top + stv_bot) I 2 + box_hgt- txt_spc; floodfill (xpos, ypos, YELLOW); /*Clear previous cycle time*/

/*Display cycle time ifrequired */

if(new) {

setcolor (WHITE); settextjustify (CENTER_TEXT, BOTTOM_TEXD; sec_to_hms ((long) time, hms); sprintf (text, "%s", hms); outtextxy (xpos, ypos, text);

I* Display data for PURGE cycle */

void purge_data_disp (int sn, int cycle, int time, float T_purge, float T_flue, float flow_purge)

- A.55 -

{

}

char text[20], hms[IO]; int stv _lft, stv _rht, chk_rht; int new, xpos, ypos;

I* Set display defaults */

setfillstyle (SOLID_FILL, BLACK); setcolor (WHITE); stv_lft = xmarg + (xspac + stv_wdt) * sn; stv_rht = stv_lft + stv_wdt; chk_rht = stv_rht - (5 - nurn_stv) *indent;

if (cycle = PURGE) new = I; /* Display fresh data *I else new= O; /* No display of data - only clear old data*/

/*Display purge temperature and flowrate */

xpos = stv _rht + indent; ypos = stv _bot + 5 • indent; new_data (xpos, ypos, CY AN, new, T_purge, flow_purge);

/* Display flue temperature and flowrate *I

xpos = stv _lft + box_wdt; ypos = stv _top - 2 * indent; new_data (xpos, ypos, LIGHTMAGENTA, new, T_flue, flow_purge);

xpos = (stv _lft + chk_rht) I 2; ypos = (chk_top+ stv_bot) I 2 + box_hgt- txt_spc; floodfill (xpos, ypos, YELLOW); /*Clear previous cycle time•/

I* Display cycle time if required *I

if(new) {

}

setcolor (WHITE); settextjustify (CENTER_ TEXT, BOTTOM_ TEXT); sec_to_hms ((long) time, hms); sprintf (text, "%s", hms); outtextxy (xpos, ypos, text);

I* Display status and time for a stove on BOTTLE*/

void text_BOTT (int sn, int cycle, int time) {

char text[20], hms[l 0]; int stv _lft, stv _rht, chk_rht; int xpos, ypos, new;

stv_lft = xmarg + (xspac + stv_wdt) * sn; stv _rht = stv _Ift + stv _ wdt; chk_rht = stv_rht - (5 - num_stv) * indent;

- A.56 -

}

if(cycle == BOIT) new= 1; !*Display fresh data•; else new= O; /* No display of data - only clear old data•/

xpos = (stv_lft + chk_rht) I 2; ypos = ( chk_top + stv _bot) I 2 - txt_spc; floodfill (xpos, ypos, YELLOW); /*Clear previous text*/ ypos = (chk_top + stv_bot) I 2 + box_hgt- txt_spc; floodfill (xpos, ypos, YELLOW); /* Clear previous cycle time */

/* Display cycle and time if required*/

if(new) {

}

setcolor (WHITE); settextjustify (CENTER_ TEXT, BOTTOM_TEXT);

/*Text indicating stove on BOTTLE*/

ypos = (chk_top + stv_bot) I 2 - txt_spc; sprintf (text, "BOTTLE"); outtextxy (xpos, ypos, text);

/* Time stove has been on BOTTLE *I

sec_to_hms ((long) time, hms); ypos = (chk_top + stv_bot) I 2 + box_hgt- txt_spc; sprintf(text, "%s", hms); outtextxy (xpos, ypos, text);

/*Display data for COMPRESS cycle*/

void comp_data_disp (int sn, int cycle, int time, float T_comp, float mdot_comp) {

char text[20], hms[l O]; int stv _lft, stv _rht, chk_rht; int new, xpos, ypos; float flow _comp;

/* Set display defaults */

setfillstyle (SOLID_FILL, BLACK); setcolor (WHITE); stv_lft = xmarg + (xspac + stv_wdt) • sn; stv_rht = stv_lft + stv_wdt; chk_rht = stv_rht - (5 - num_stv) • indent;

if (cycle == COMPRESS) new= 1; /* Display fresh data *I else new= O; /*No display of data - only clear old data•;

flow _comp= mdot_comp I rho_Nblast;

/* Display compression temperature and flowrate */

xpos = stv_lft + box_wdt;

- A.57 -

}

ypos = stv _bot + 2 * indent; new_data (xpos, ypos, LIGHTBLUE, new, T_comp, flow_comp);

xpos = (stv _lft + chk_rht) I 2; ypos = ( chk_top + stv _bot) I 2 + box_hgt - txt_spc; floodfill (xpos, ypos, YELLOW); /*Clear previous cycle time */

/*Display cycle time ifrequired */

if(new) {

}

setcolor (WHITE); settextjustify (CENTER_TEXT, BOTTOM_TEXT); sec_to_hms ((long) time, hms); sprintf (text, "%s", hms); outtextxy (xpos, ypos, text);

/* Display data for BLAST cycle */

void blast_data_disp (int sn, int cycle, int time, float T_blast, float T_stv, float *flow) {

char text[20], hms[IO]; int stv _lft, stv _rht, chkJht; int new, xpos, ypos;

/*Set display defaults*/

setfillstyle (SOLID_FILL, BLACK); setcolor (WHITE); stv_lft = xmarg + (xspac + stv_wdt) • sn; stv _rht = stv _lft + stv _ wdt; chk_rht = stv_rht - (5 - num_stv) *indent;

if (cycle = BLAST) new = 1; /* Display fresh data •I else new= O; /*No display of data - only clear old data*/

/*Display air temperature and flowrate at exit from checkerwork */

xpos = stv _rht; ypos = stv _top - 2 * indent; new_data (xpos, ypos, LIGHTRED, new, T_stv, *(flow+ I));

I* Display cold blast temperature and flowrate */

xpos = stv _lft + box_ wdt; ypos = stv _bot + 2 * indent; new_data (xpos, ypos, LIGHTBLUE, new, T_cb, *(flow+ 2));

I* Display mixer temperature and flowrate */

xpos = stv_lft + box_wdt; ypos = stv _top - 5 * indent; new_data (xpos, ypos, LIGHTBLUE, new, T_cb, *flow);

- A.58 -

}

settextjustify (RIGHT_TEXT, BOTTOM_TEXT); xpos = (stv_lft + stv_rht) / 2 + box_wdt / 2 - txt_spc; ypos = 2 • indent - 2 • txt_spc; floodfill (xpos, ypos, LIGHTRED); /*Clear previous blast temperature */

/* Display blast temperature if required*/

if(new) {

}

sprintf(text, "%10.0f', (T_blast- ZERO_K)); strcat (text, 110

");

outtextxy (xpos, ypos, text);

xpos = (stv_lft + chk_rht) / 2; ypos = ( chk_top + stv _bot) I 2 + box_hgt - txt_spc; floodfill (xpos, ypos, YELLOW); /*Clear previous cycle time */

/* Display cycle time and total simulation time if required * /

if(new) {

}

setcolor (WIIlTE); settextjustify (CENTER_TEXT, BOTTOM_TEXT); sec_to_hms (Qong) time, hms); sprintf (text, "%s", hms); outtextxy (xpos, ypos, text); xpos = getmaxx O - indent - txt_spc; ypos = 2 • indent - 2 • txt_spc; floodfill (xpos, ypos, YELLOW); settextjustify (RIGHT_TEXT, BOTTOM_TEXT); sec_to_hms (tot_time, hms); sprintf(text, "%s", hms); outtextxy (xpos, ypos, text);

I* Display data for stove being de-pressurised*/

void decomp_data_disp (int sn, int cycle, int time, float T_decomp, float mdot_decomp) {

char text[20], hms[lO]; int stv _lft, stv _rht, chk_rht; int xpos, ypos, new; float flow _decomp;

setfillstyle (SOLID_FILL, BLACK); setcolor (WHITE); stv_lft = xmarg + (xspac + stv_wdt) • sn; stv _rht = stv _Ift + stv _ wdt; chk_rht = stv_rht - (5 - num_stv) • indent;

if (cycle== DECOMP) new= l; /*Display fresh data*/ else new= O; /*No display of data - only clear old data*/

flow_decomp = mdot_decomp I rho_Nblast;

- A.59 -

}

I* Display decompression temperature and flowrate */

xpos = stv _lft + box_ wdt; ypos = stv _top - 2 • indent; new_data (xpos, ypos, LIGHTMAGENTA, new, T_decomp, flow_decomp);

xpos = (stv_lft + chk_rht) / 2; ypos = ( chk_top + stv _bot) I 2 + box_hgt - txt_spc; floodfill (xpos, ypos, YELLOW); /*Clear previous cycle time*/

I* Display cycle time ifrequired */

if(new) {

}

setcolor (WHITE); settextjustify (CENTER_TEXT, BOTTOM_TEXT); sec_to_hms ((long) time, hms); sprintf (text, "%s", hms); outtextxy (xpos, ypos, text);

I* Clear old data and display new data ifrequired */

void new_data (int xpos, int ypos, int colour, int new, float temp, float flow) {

char text[20];

temp-= ZERO_K; flow *= 3600; xpos -= txt_spc; ypos -= txt_spc; floodfill (xpos, ypos, colour); /*Clear old data*/ if (new) /* Display new data */ {

}

settextjustify (RIGHT_TEXT, BOTTOM_TEXT); sprintf(text, "%10.0f', temp); strcat (text, 11011

);

outtextxy (xpos, ypos, text);

ypos += 2 • txt_spc; floodfill (xpos, ypos, colour); /*Clear old data*/ if (new) /* Display new data * / {

}

settextjustify (RIGHT_TEXT, TOP _TEXT); sprintf(text, "%10.0f', flow); outtextxy (xpos, ypos, text);

I* Convert seconds to hours:minutes:seconds fonnat */

void sec_to_hms (long int time, char *luns)

-A.60 -

}

char a[8], b(8], c[8]; ldiv_t nurnl, nurn2;

nurnl =!div (time, 3600); /* Nurnber of hours*/ num2 =!div (nurnl.rem, 60); /*Number of minutes*/

if (nurn I .quot< I 0) strcpy (hms, "O"); I* Leading zero for< I 0 hours*/ else strcpy (hms, "\O"); strcat (hms, (ltoa (nurnl.quot, a, 10))); strcat (bins,":"); if (nurn2.quot < 10) strcat (hms, "0"); /* Leading zero for< I 0 minutes */ strcat (hms, (ltoa (num2.quot, b, 1 O))); strcat (hms, ":"); if (nurn2.rem < 10) strcat (hms, "0"); /* Leading zero for< I 0 seconds */ strcat (hms, (ltoa (num2.rem, c, 10)));

/* Restore the display by closing the graphics system *I

void restore_display O {

closegraph O; }

- A.61 -

APPENDIX B - SAMPLE INPUT DAT A FILES

B-1 SOLN.DAT

Number_of_elements Time_increment_(sec) Scheme_type_(O_--> I_= _explicit_--> _implicit) Operating_parameters_output_(l =yes_O=no) Thermal_efficiency _output_(l =yes_O=no)

B-2 STVPHYS.DAT

Number_of_stoves Maximium_flue_temperature_(° C) Maximum_dome_temperature_(°C) Purge_cycle_time_(mins) Compression_cycle_time_(mins) Aim_BLAST_cycle_time_(mins) Decompression_time_(mins) Combustion_cbamber_and_dome_ volwne_(m3) Dome_temperature_time_constant_(min) W all_thermal_resistance_(K/W) Ambient_air_temperature_(° C)

B-3 CHECKER.DAT

Checkerwork_cross_section_(m2) Heating_surface_area_(m2) Free_area_of_checkerwork_(%) Hydraulic_diameter_of_flues_(mm) Emissivity Specific_heat_constant_(J/kg/K) Specific_heat_temperature_gradient_(/K) Zone_l_length_(m) Zone_l _density _(kg/m3) Zone_2_length_(m) Zone_2_density _(kg/m3) Zone_3_length_(m) Zone_3_density _(kg/m3)

B-4 COMBUSTAIR.DAT

Inlet_air_temperature_(' C) Purge_flowrate_(Nm3/hr) Nitrogen_(%) Oxygen_(%) Carbon_Dioxide_(%) Water_ Vapour_(%) Hydrogen_(%) 0.0 Carbon_Monoxide_(%)

- B. l -

30 30

1 0 1

3 350.0

1190.0 1 5

50 5

350.0 5.0 0.025

15.0

34.06 30264.0

40.5 63.5 0.95

900.0 0.15 3.0

2500.0 6.1

2300.0 23.8

2150.0

15.0 2000.0

78.0 20.8

0.0 1.2

0.0

Methane_(%) Ethane_(%) Propane_(%) Butane_(%)

B-5 FUEL.DAT

Maximwn_fuel_flowrate_(Nm3/hr) Minimwn_fuel_flowrate_{Nm3/hr) Maximwn_total_fuel_flowrate_(Nm3/hr) Fuel_inlet_temperature_(° C) Aim_flue_oxygen_content_(%) Nitrogen_(%) Oxygen_(%) Carbon_Dioxide_(%) Water_ vapour_(%) Carbon_Monoxide_(%) Hydrogen_(%) Methane_(%) Ethane_(%) Propane_(%) Butane_(%)

B-6 BLAST.DAT

Flowrate_of_blast_(Nm3/hr) Hot_blast_temperature_(° C) Cold_blast_temperature_(° C) Bh1st_pressure_(kPa) Nitrogen_(%) Oxygen_(%) Carbon_Dioxide_(%) Water_ Vapour_(%) Hydrogen_(%) Carbon_Monoxide_(%) Methane_(%) Ethane_(%) Propane_(%) Butane_(%)

B-7 STVCTRL.DAT

Upper_control_flue_changeover_temperature_(°C) Mid_control_flue_changeover_temperature_(° C) Lower_control_flue_changeover_temperature_(' C) Minimwn_hot_blast_temperature_(° C) Aim_GAS_changeover_mixer_position_(%_open) Maximwn_BOITLE_changeover_mixer_position_(%_open) Flue_oxygen_proportional_constant_(%/%_02) Flue_oxygen_bias_signal Flue_oxygen_integral_time_constant_(min) Flue_oxygen_derivative_time_constant_(min) Dome_temperature_proportional_constant_(%/° C)

- B.2 -

0.0 0.0 0.0 0.0

40000.0 10000.0 60000.0

25.0 1.0

49.9 0.0

21.0 3.1

19.7 6.3 0.0 0.0 0.0 0.0

128410.0 1065.0 150.0 253.0 73.8 23.0

0.0 3.2 0.0 0.0 0.0 0.0 0.0 0.0

320.0 300.0 280.0

1040.0 1.0 1.0 1.5 0.68 0.2 0.1 0.6

Dome_temperature_bias_signal Dome_temperaturejntegral_time_constant_(min) Dome_temperature_derivative_time_constant_(min) Mixer_ valve_proportional_constant_(%r C) Mixer_ valve_bias_signal Mixer_ valve _integral_time_ constant_( min) Mixer_ valve_derivative_time_constant_(min) Blast_heating_control_constant_(%/min) Gas_heating_control_constant_(° C/kNm3 _fuel) Firing_rate_damping_ratio_(O_ --> _l)

B-8 INITCOND.DAT

4 360 500.746 527.876 554.925 580.957 608.702 636.538 664.364 691.887 718.558 745.895 774.168 802.880 832.083 861.443 890.674 920.298 950.153 980.375

1010.896 1041.418 1071.908 1102.277 1132.740 1165.563 1199.492 1234.777 1271.043 1307.714 1348.577 1390.429

0 60

1356.333 1317.238 1279.021 1243.722 1208.415 1174.276 1141.193 1109.169 1079.062 1048.816 1018.309 987.797 957.555 927.394 897.927 868.427 839.209 810.019 781.193 752.766 724.901 697.946 671.882 644.118 616.252 588.492 560.983 535.841 509.078 484.999

0 1350 1392.352 1346.422 1305.158 1268.758 1232.306 1197.285 1163.433 1130.706 1100.447 1070.168 1039.517 1008.992 978.582 948.373 918.618 889.014 859.492 830.155 801.153 772.478 744.200 716.900 690.286 662.650 634.868 607.111 579.502 553.620 526.888 502.092

- B.3 -

0.9 0.5 0.125 0.001 0.0 0.0025 0.025 0.18 2.2 0.5

APPENDIX C - GAS PROPERTIES

The chemical composition of all gases encountered in the hot blast stoves is assumed

to be comprised of the following elements:

1. Nitrogen

2. Oxygen

3. Carbon dioxide

4. Water vapour

5. Carbon monoxide

6. Hydrogen

7. Methane

8. Ethane

9. Propane

10. Butane

The gas properties required for heat transfer and combustion calculations are:

1. Density

2. Specific heat

3. Dynamic viscosity

4. Thermal conductivity

5. Enthalpy

6. Emmisivity

7. Absorptivity

These gas properties may be found in tabular formr361 or graphical formatf3' 1,

however this is generally unsuitable for use in a computer program. A mathematical

equation describing the variation of the gas with property with the independent

variables is the most compact technique in this case.

- C.1 -

C-1 THERI\f OPHYSICAL AND TRANSPORT PROPERTIES

For a gas which consisted of more than one element, the density, specific heat,

dynamic viscosity, thermal conductivity, and enthalpy were calculated using the

mass fractions of the constituents. Hence for a combination of n gaseous elements, a

particular gas property of the compound, cpg, is calculated using:

n

cj>8 = L, micj>g; i=l

(C-1)

The gas density is a function of both pressure and temperature and can be calculated

using the equation of state of a perfect gasl271, thus:

(C-2)

The specific heat, dynamic viscosity, and thermal conductivity are all temperature

dependent but may be considered constant over a fairly wide range of pressuresl251.

Although equations describing these properties already existl37J, the form of the

equations was found to be inconsistent over the ranges of temperature of chemical

constituents required for the stoves modelling. Therefore an appropriate form of

polynomial was selected and the coefficients determined· for each property and gas

constituent. The coefficients were calculated using a non-linear curve fitting

technique which minimised the sum of errorsr331• The polynomial used in the curve

fitting was:

(C-3)

This equation was selected as it could represent both logarithmic or exponentially

shaped curves, or a combination of both, combined with with a linear component.

The non-linear curve fitting technique involved determining the sum of the errors

squared and setting its partial derivative with respect to each coefficient all equal to

zero. This yielded a set of 4 simultaneous equations which could be subsequentially

solved using matrix algebra.

- C.2 -

The coefficients of equation (C-3) for specific heat (J/k:g/K), dynamic viscosity

(10-6 kg/m•s), and thermal conductivity (10-3 W/m•K), for the gas constituents are

given in Tables C-1, C-2, and C-3 respectively. It was found that the published data

of some properties1361 (in particular dynamic viscosity) did not cover the complete

temperature range required. In such a case, the properties were calculated by

extrapolating equation (C-3).

Table C-1 - Coefficients of Equation (C-3) for Specific Heat

Constituent ao at a2 a3

N2 2.750612 -2.139129 0.618034 -0.062981

02 -1.026725 2.163095 -0.038651 -0.008176

C02 -2.694081 4.014238 -0.067873 -0.017701

H20 7.336691 -6.641004 1.698397 -0.107505

co 1.899838 -1.150632 0.488706 -0.054246

H2 26.730041 -14.574463 2.692753 0.134539

CH4 -5.849291 7.973436 . 2.684539 -0.323441

C2H6 -14.576209 17.954593 0.875172 -0.176449

C3H8 -17.240227 21.140503 0.177016 -0.111578

C4H10 -17.362131 21.333063 0.026402 -0.097626

Table C-2 - Coefficients of Equation (C-3) for Dynamic Viscosity

Constituent ao a1 a1 a3

Nz -81.203118 106.316676 16.012868 -0.751577

02 -114.219527 146.328955 16.713717 0.376907

C02 -91.677309 114.134914 17.675462 -0.488364

H20 -3.145955 0.080344 40.687208 0.000129

co -68.462931 90.319351 20.849947 -2.254128

H2 -11.290666 17.590628 15.570983 -1.283851

CH4 -42.207563 54.449098 17.271221 -2.093606

C2H6 -29.284259 37.183406 19.412127 -2.371931

C3H8 -5.788281 7.268011 25.704516 -4.358358

C4H10 12.041202 -15.097902 30.306859 -6.709569

- C.3 -

Table C-3 - Coefficients of Equation (C-3) for Thermal Conductivity

Constituent ao a1 a2 03

N2 -251.427178 310.905205 -0.658964 3.924231

02 -107.562511 135.744151 44.728535 -1.214217

C02 -171.759277 191.639967 52.844031 -4.917463

H20 546.856291 -680.106629 255.868579 -35.967406

co -151.338379 190.977826 23.158416 1.648991

H2 -65.492149 175.103751 316.696886 1.305039

CH4 -501.355371 582.432331 37.677121 50.394751

C2H6 -409 .403441 486.850902 -11.016349 97.582242

C3,ffs 130.802901 -180.816999 159.286803 -0.475491

C4H10 294.325499 -387.523201 221.703898 -47.320129

The results of using equation (C-3) for the gas constituents are compared to the

actual valuesl361 in Table C-4.

The enthalpy is determined using the following relationshipl271:

(C-4)

Therefore, the enthalpy can be calculated by integrating equation (C-3) using the

coefficients given in Table C-1.

- C.4 -

Table C-4 - Comparison of Calculated and Actual Gas Properties

Constit. Temp. Specific Heat Dynamic Viscosity Thermal (K) (J/kg/K) (10-6 kg/m•s) Conductivity

(W/m•K)

Calculated Actual Calculated Actual Calculated Actual

Nz 500 1,055.9 1,056 25.906 25.9 0.038819 0.03864

1,000 1,166.5 1,167 40.375 40.36 0.062743 0.0631

1,500 1,237.5 - 50.996 - 0.084599 0.0842

02 500 971.2 970.3 30.619 30.54 0.041304 0.0412

1,000 1,089.5 1,089.8 48.446 48.5 0.071696 0.0717

1,500 1,140.3 - 61.963 61.9 0.096794 -C02 500 1,015.2 1,015.9 23.591 23.48 0.032854 0.03228

1,000 1,234.6 1,234.7 39.645 39.7 0.067807 0.068

1,500 1,324.7 - 52.045 52 0.090481 0.0909

HzO 500 1,976.2 1,975.3 17.273 17.27 0.035733 0.0357

1,000 2,286.6 2,286 37.622 37.62 0.086651 -1,500 2,605.7 - 57.969 - 0.101021 -

co 500 1,063.8 1,063.6 25.951 25.95 0.038636 0.0386

1,000 1,183.7 1,183.6 40.452 40.6 0.064447 0.0644

1,500 1,251.6 - 49.261 - 0.087845 -H2 500 14,494.8 14,497.6 12.747 12.74 0.256397 0.2564

1,000 14,982.9 14,982.1 20.587 20.7 0.427614 0.428

1,500 16,045.7 - 26.051 27.6 0.596307 0.597

CH4 500 2,892.1 2,891.1 16.969 16.96 0.067211 0.0671

1,000 4,485.2 4,486 27.419 27.6 0.169149 0.169

1,500 5,389.3 - 33.336 - 0.331776 -C2H6 500 2,591.5 2,588.2 14.819 14.82 0.051534 0.0516

1,000 4,077.1 4,076.6 24.939 25.1 0.164013 0.164

1,500 4,838.6 - 30.551 - 0.410409 -C3H8 500 2,559.1 2,556.4 13.301 13.3 0.041679 0.0417

1,000 3,965.7 3,965 22.826 - 0.108797 -1,500 4,664.1 - 25.628 - 0.179829 -

C4H10 500 2,543.3 2,540.1 12.269 12.27 0.037691 0.0377

1,000 3,899. 7 3,898.8 20.541 - 0.081186 -1,500 4,563.8 - 19.134 - 0.063617 -

- C.5 -

C-2 RADIATIVE PROPERTIES

It was described in Chapter 2 that most gases are transparent to radiation, however

carbon dioxide and water vapour radiate to an appreciable extent. Leckner321

outlines a procedure for calculating the emissivity of carbon dioxide and water

vapour which involves the following calculations:

A=log(pLe) (C-5)

Tg 't = 1000 (C-6)

;=0.5 forH20 (C-7)

; = 1.47 forC02 (C-8)

Amax = log ( 13 .2't2 ) for~O (C-9)

Amax= log ( 0.225't2) for C02 and Tg > 700K (C-10)

Amax= log ( 0.054't-2 ) for C02 and Tg < 700K (C-11)

A = 1.888 + 2.053 log 't for H20 and Tg > 750K (C-12)

A= 1.632 for H20 and Tg < 750K (C-13)

A = 0.1 O't-i.45 + 1.0 for C02 (C-14)

B = 1. IO't-i.4 forH20 (C-15)

B=0.23 for co2 (C-16)

( ~H,o R!J PE=pg l+ 4. Pco2 Tg for H20 (C-17)

- C.6 -

n

ai =co;+ :L Cj(r/ j=l

(C-18)

(C-19)

(C-20)

The constants c1; for water vapour and carbon dioxide are tabulated in Table C-5. It

should be noted that the values of n and m are different for HzO and C02 to ensure

that the maximum deviation from values calculated with spectral ~ta was 5%.

m

In eo = ao + :L ai}.,i i=l

(ep) ApE+B eo max=PE+A+B-1

(C-21)

(C-22)

(C-23)

To account for the spectral overlap of carbon dioxide and water vapour mixtures, a

correction factor is usually applied. However Lecknet281 explains that for low to

moderate partial pressures and short mean beam length, this correction factor can be

ignored; this being the case for the stove checkerwork. Therefore, the total

emissivity of the gas is:

(C-24)

To calculate the gas absorptivity, cxg, Holmanl24J indicates that the gas emissivity at

the checkerwork temperature and pressure-beam length parameter of pLe ~: is first

calculated to give e~, followed by:

- I g (

T )o.4s CXg -eg Ts (C-25)

- C.7 -

H20

C02

(T )o.65

- I g CX.g - eg Ts (C-26)

(C-27)

Table C-5 - Values of cji for Water Vapour and Carbon Dioxide

I

0 1 2 3 4

J 0 -2.2118 -1.1987 0.035596 - -1 0.85667 0.93048 -0.14391 - -2 -0.10838 -0.17156 0.045915 - -

J 0 -3.9781 2.7353 -1.9882 0.31054 0.015719

1 1.9326 -3.5932 3.7247 -1.4535 0.20132

2 -0.35366 0.61766 -0.84207 0.39859 -0.063356

3 -0.080181 0.31466 -0.19973 0.046532 -0.003309

- C.8 -

APPENDIX D GAS VELOCITY CALCULATIONS

The gas velocity inside the checkerwork varies as a function of its flowrate, pressure,

and temperature. The flowrate will depend on whether the stove is on gas or blast

cycle and the gas temperature will vary throughout the length of the checkerwork.

The gas velocity and Reynolds number will be calculated using data from the stoves

at BHP Newcastle No. 4 Blast Furnace for gas and blast cycles at the top and bottom

of the checkerwork.

The following physical dimensions were used:

total area of checkerwork = 34.06 m2

free area of checkerwork = 40.5%

:. free area = 13.79 m2

checkerwork flue diameter= 63.5 mm

The following gas data was used:

fuel flowrate = 35,000 Nm3/hr

combustion air flowrate = 34,000 Nm3/hr

blast air flowrate = 120,000 Nm3/hr

fuel and combustion air inlet pressure = 101.325 kPa (abs.)

blast pressure= 270 kPa (gauge)

adiabatic flame temperature= 1200°C

flue gas temperature= 300°C

cold blast temperature= 150°C

blast air temperature leaving stove= l l00°C

The chemical composition of combustion products and blast air are given in table

D-1.

- D.1 -

Table D-1 - Chemical Composition of Combustion Products an_d Blast Air

Constituent Combustion Blast Air (%)

Products (%)

Nz 62

02 4

co2 32

H20 2

The mass flowrates of the gases were calculated using:

This gave:

mass flowrate combustion products = 28.297 kg/s

mass flowrate blast air= 42.578 kg/s

The gas properties for both cycles are shown in table D-2.

74

23

-3

Table D-2 - Gas Properties for Gas and Blast Cycles

Cycle Checkerwork Temp. (°C) Pressure Pg (kg/m3)

Position (kPa abs.)

Gas Bottom 300 101.325 0.704

Top 1,200 0.274

Blast Bottom 150 371.325 3.023

Top 1,100 0.931

-D.2-

(D-1)

µg

(10'6 kg/m•s)

27.773

51.358

23.723

51.055

The gas velocity was calculated assuming a uniform distribution through all

checkerwork flues, thus:

(D-2)

The Reynolds number was found using the following relationship£251:

(D-3)

For the conditions described, the gas velocities and Reynolds numbers for gas and

blast cycles at the top and bottom of the checkerwork are presented in table D-3.

Table D-3 - Gas Velocities and Reynolds Numbers for Gas and Blast Cycles

Cycle Checkerwork Temp. (°C) Pressure ug (mis) Reg Position

(kPa abs.)

Gas Bottom 300 101.325 2.915 4,690

Top 1,200 7.493 2,536

Blast Bottom 150 371.325 1.021 8,262

Top 1,100 3.314 3,839

- D.3 -