A Complete Parametric Cycle Analysis for Ideal TurboFan Engine

advertisement
A Complete Parametric Cycle Analysis for Ideal
TurboFan Engine with Interstage Turbine Burner
S.L. Yang, Y.K. Siow, K.H. Liew, and E. Urip
Mechanical Engineering – Engineering Mechanics Department
Michigan Technological University
1400 Townsend Drive
Houghton, MI 49931-1295
906/487-2624
906/487-2822 (Fax)
slyang@mtu.edu
C. J. Marek
Combustion Technology Branch, MS 5-10
NASA Glenn Research Center
21000 Brookpark Road
Cleveland, OH 44135
216/433-3584
216/433-3000 (Fax)
Cecil.J.Marek@grc.nasa.gov
October 23, 2002
ABSTRACT
Today modern aircraft is based on air-breathing jet propulsion systems, which uses
moving fluids as substances to transform energy carried by the fluids into output power.
Throughout aero-vehicle evolution, improvements have been made on the engine
efficiency and pollutants reduction. This parametric study focuses on a complete
parametric cycle analysis of a turbofan engine with an Interstage Turbine Burner (ITB).
The major advantages associated with the addition of an ITB are the improvement of
thermal efficiency and reduction in NOx emission. Lower temperature peaks in the main
combustor results in lower thermal NOx emission and a lower amount of cooling air
required.
The objective of this study is to make use of the engine component parameters, namely
compressor or turbine polytropic efficiency, burner efficiency, pressure drop across the
engine components, design limitation (burner exit temperature), and flight environment
as inputs to calculate engine performance, specific thrust and thrust specific fuel
consumption. This relation can provide guidance in identifying the characteristics of the
engine’s components. The knowledge can subsequently be used to develop and optimize
the performance and integration of each component.
In this study, each component in the engine is treated individually. The first-law energy
equation, second-law, and conservation of momentum are then applied.
Visual Basic program, Excel macrocode, and Excel neuron code are used to facilitate
Excel software to plot engine performance versus engine design parameters. This
program computes and plots the data sequentially without forcing users to open other
types of plotting programs. A user’s manual on how to use the program is also included
in this report.
ii
ACKNOWLEDGEMENTS
This project on evaluating the improvement in performance of an aircraft gas turbine by
adding an Interstage turbine burner (ITB) is really challenging and would have not been
accomplished without the technical assistance and suggestion given from our graduate
advisor, Dr. S.L. (Jason) Yang.
Our sincere gratitude next goes to Dr. Cecil John Marek, for giving us this opportunity to
employ our limited knowledge in engineering mechanics in solving such an interesting
and practical problem related to gas turbine propulsion like this.
The authors would like to thank Dr. Paul Penko for being the grant monitor on this
project. Appreciation also goes to Dr. Scott John at NASA Glenn Research Center for
providing us the listing data for a two-spool high bypass turbofan engine with and
without ITB, and suggesting some valuable improvement that can be done to the code.
Special thank is due to Mr. Jeffrey R. Herbon from Williams International for carefully
reviewing and test-driving the code. Based on his experience and expertise in cycle
analysis, he has given us many valuable suggestions on how the program could be
enhanced for increased usefulness in the future.
iii
TABLE OF CONTENTS
ABSTRACT ………..…………………………………………………………….. ii
ACKNOWLEDGEMENT ……………………………………………………... iii
LIST OF FIGURES ……………………………………………………………... v
LIST OF TABLES …….………………………………………………………… vi
NOMENCLATURE ……………………………………………….…………….. vii
1. INTRODUCTION ……………………………………....…...………..….…... 1
2. ENGINE PERFORMANCE PARAMETERS…………………………….… 3
3. TURBOFAN with ITB CYCLE ANALYSIS……………………………….. 11
4. SUMMARY of EQUATIONS………………………………………………... 20
5. USER MANUAL …………………………………………………….……….. 24
6. DATA VALIDATION………………………………………………………... 32
7. RESULTS AND DISCUSSIONS…………………………………….………. 35
APPENDIX
A1 – EXCEL MACRO VISUAL BASIC CODE ………………………….. 44
A2 – FORTRAN 77 CODE ………………..………………………...……… 52
REFERENCES………………………………………………………………….. 78
iv
LIST OF FIGURES
Figure 1.1 – A Gas Generator propulsion system……………………………………….. 1
Figure 1.2 – A TurboJet Engine…………………………………………………….…… 1
Figure 1.3 – A TurboFan Engine…………………………………………………….….. 2
Figure 3.1 – Turbofan with Interstage Turbine Burner………………………………… 11
Figure 5.1 – Excel Input sheet screenshot…………………………………………….... 25
Figure 6.1 – Turbofan Engine with ITB: specific thrust vs flight Mach number
(both Fortran77 and Excel) …………………………………….…………. 32
Figure 6.2 – Turbofan Engine with ITB: specific thrust vs flight Mach number
(both Fortran77 and Excel) …………………………………………….…. 33
Figure 6.3 – Turbofan Engine with ITB: specific thrust vs flight Mach number
(both Fortran77 and Excel) ……….………...…………………………….. 33
Figure 6.4 – Turbofan Engine ITB: specific thrust vs flight Mach number
(both Fortran77 and Excel) ……….………...…………………………….. 34
Figure 7.1 – Turbofan Engine: specific thrust vs flight Mach number……………….… 36
Figure 7.2 – Turbofan Engine: thrust specific fuel consumption vs flight Mach
number ……………………………………………………………………. 37
Figure 7.3 – Turbofan Engine: specific thrust vs compressor pressure ratio ………….. 38
Figure 7.4 – Turbofan Engine: thrust specific fuel consumption vs compressor pressure
ratio ………………………………………………………………..……... 38
Figure 7.5 – Turbofan Engine: fuel/air ratio vs flight Mach number …………..……... 39
Figure 7.6 – Turbofan Engine: specific thrust vs fan pressure ratio …………….…….. 40
Figure 7.7 – Turbofan Engine: thrust specific fuel consumption vs fan pressure
ratio ………………………………………………………..……….……. 40
Figure 7.8 – Turbofan Engine: specific thrust vs bypass ratio ……………………..….. 41
Figure 7.9 – Turbofan Engine: thrust specific fuel consumption vs bypass pressure
ratio …………………………………………………….………………... 42
v
LIST OF TABLES
Table 7.1 – Input Data for Engine Parameters (SI unit) …………………………... 35
Table 7.2 – Input Data for Option 1 (SI unit) ……………………………………... 36
Table 7.3 – Input Data for Option 2 (SI unit) ……………………………………... 37
Table 7.4 – Input Data for Option 3 (SI unit) ……………………………………... 39
Table 7.5 – Input Data for Option 4 (SI unit) ……………………………………... 41
Table A.1 – Description of variables in MS Excel Macro Visual Basic code ……..44
Table B.1 – Description of Input Variables in ‘input’ file (English and SI unit)….. 55
vi
NOMENCLATURE
A
cross-sectional area
a
sound speed
CP
specific heat at constant pressure
D
drag force
e
polytropic efficiency
F
force uninstalled thrust
f
fuel/air ratio
gc
Newton’s constant
h
enthalpy
hPR
low heating value of fuel
M
mach number

m
mass flow rate
P
pressure
Pt
total pressure

Q
rate of thermal energy released or absorbed
R
universal gas constant
S
uninstalled thrust specific fuel consumption
T
temperature or installed thrust
TSFC
installed specific fuel consumption
Tt
total temperature
V
absolute velocity

W
power
vii
α
bypass ratio
γ
ratio of specific heats,
m
mechanical Efficiency
ηO
overall Efficiency
ηP
propulsive Efficiency
ηT
thermal Efficiency
π
ratio of total pressure
πr
(exception) ratio between total pressure and static pressure due
to the ram effect,
cp
cv
Pt
P
τ
ratio of total temperature
r
(exception) ratio between total temperature and static
temperature due to the ram effect,
τλ
Tt
T
ratio between total enthalpy and enthalpy at ambient condition
viii
SUBSCRIPTS
b
main burner or properties between main burner exit and ITB
c
properties between upstream and main burner or engine core
d
diffuser
e
exit
f
fan
fn
fan-nozzle
HPC
high pressure compressor
HPT
high pressure turbine
ITB
interstage turbine combustors
LPC
low pressure compressor
LPT
low pressure turbine
O
inlet
n
nozzle
r
ram
t
properties between ITB exit and downstream or total/stagnation
values of properties (i.e. temperature, pressure or enthalpy)
ix
1. Introduction
This program is designed to give a complete parametric cycle analysis of an ideal Turbo
Fan air-breathing propulsion system. In most common air-breathing propulsion engines,
the “heart” of a gas turbine is the gas generator. It consists of three major components
namely, compressor, combustor, and turbine as shown schematically in Figure 1.1.
Figure 1.1 – A Gas Generator Propulsion System
The idea behind a gas generator is to convert intake air mixed with fuel into high
temperature and high pressure gas. Depending on the applications of the gas turbine, the
energy provided is extracted and used for different applications (turbojet, turbofan, turboshaft, turboprop, and ramjet) through different mechanisms. A turbojet engine can be
constructed by adding an inlet and a nozzle as shown in Figure 1.2.
Figure 1.2 – A Turbo Jet Engine
1
The nozzle converts the internal energy of the hot gas into kinetic energy or thrust. The
work extracted by the turbine is used to drive the compressor. In the case of a turbofan,
turboprop, and turbo-shaft engine, the work from the turbine is required to drive a shaft
for the turbo-shaft, a fan for the turbofan, and a propeller for the turboprop in addition to
driving the compressor. The ramjet engine consists of an inlet, a combustor, with a nozzle
at the exit. It does not require the compressor because the inlet already uses a ram aircompressing mechanism such that intake air has sufficient kinetic energy to increase its
pressure.
The main objective of this analysis is to determine the relationships between engine
performance (primarily specific thrust
F

, thrust specific fuel consumption) to design
m
parameters (compressor pressure ratio, fan pressure ratio, bypass ratio, etc), to design
constraints (burner exit temperature, compressor exit pressure, etc), and to flight
environment (Mach number, ambient temperature, ambient pressure, etc).
Figure 1.3 – A Turbo Fan Engine
2
2. Aircraft Engine Performance Parameters
Thrust
Thrust is the force used to sustain the flight (thrust = drag), accelerated flight (thrust >
drag), deceleration (thrust < drag). Using Figure 1.3 for the control volume, we can apply
a momentum balance to the control volume. Uninstalled thrust F of a jet engine (single
inlet and single exhaust) is given by
F
.
m fuel  V

 
m 
 o
 
g


e
mo V
o

P

e
P A
o
(2.1)
e
c
.
where m , m
are mass flow rates of air and fuel respectively
fuel
o
are velocities at inlet and exit respectively
V o ,V e
Po , Pe
are pressure at inlet and exit respectively
For the ideal case, the hot gas is expanded to the ambient pressure which gives Pe = Po.
Equation (2.1) then becomes
F

 
m 
 o

m fuel  V

g


e
mo V
o
(2.2)
c
The installed thrust T is given by
T

F

D
inlet

D
nozzle
where Dinlet and Dnozzle are the drag force from the inlet and the nozzle.
3
(2.3)
Specific Fuel Consumptions
The specific fuel consumption is the rate of fuel use by the propulsion system per unit of
thrust produced. The installed specific fuel consumptions, TSFC, and the uninstalled
specific fuel consumptions, S, are given by

TSFC
m
T

fuel
(2.4)

S

m
F
fuel
(2.5)
Efficiency of an Engine
Some of the following parameters will be used widely in this program namely, thermal
efficiency, propulsive efficiency, and overall efficiency
The thermal efficiency characterizes the net energy output extracted (shaft work) from
the engine divided by the available thermal energy (fuel).

T
 W out
Qin
(2.6)
where,
T  thermal efficiency

W out  net power out of engine

 

Qin  rate of thermal energy released  m f h PR 


4
The propulsive efficiency defines the ratio between the engine power output and the
power being used to run the aircraft.
P 
T V0
(2.7)

W out
where,
 P  propulsive efficiency of engine
T  thrust of propulsion system
V 0  velocity of aircraft

W out  net power out of engine
An overall performance of a propulsion system is given by the combination between
thermal and propulsive efficiencies.
 O   P T
(2.8)
where,
 O  overall efficiency
5
Notations
Some useful quantity notations for compressible flow will be used in this report namely,
stagnation temperature, stagnation pressure, and Mach number.
Stagnation temperature or total temperature Tt is defined as the temperature obtained
when steadily flowing fluid is brought to rest adiabatically without extraction of work.
Applying the first law of thermodynamic to a calorically perfect gas gives:
V2
ht  h 
2
(2.9)
where,
h = static enthalpy
ht = enthalpy at stagnation condition
V = velocity
With the assumptions of constant specific heat coefficient, the above equation can be
written as:
Tt  T 
2
V 
2 CP
 1 2 

T t  T 1 
M 
2


where,
T t  stagnation temperature
T  static temperature
M  Mach number
  ratio of specific heats
6
(2.10)
Stagnation pressure or total pressure Pt is defined as the pressure reached when a steady
flowing fluid is brought to rest adiabatically and reversibly. Using the isentropic relation,
the total pressure is given by
 1


P t  P 1 
M 2
2


The ratio of total temperatures

 1
(2.11)
τ and the ratio of total pressure π across a component is
denoted by the subscript: d for diffuser, LPC for low pressure compressor, HPC for high
pressure compressor, b for main burner, ITB for inter-stage turbine burner, LPT for low
pressure turbine, HPT for high pressure turbine, n for nozzle, and f for fan.
For example:
d 
total pressure leaving diffuser
total pressure entering diffuser
d 
total temperature leaving diffuser
total temperature entering diffuser
7
Exceptions
For the free stream, ram, we define τr as a ratio of total temperature/static temperature
and πr as a ratio of total pressure/static pressure.
2
T t0  1    1
r 
M0
(2.12)
2
T0
   1 
r
  1

2
 Pt 0  1 
M0 
2


P0
A ratio between total enthalpy of the burner exit and ambient enthalpy, denoted
(2.13)
by
τλ,
is defined such that it will be one of the input parameters.
C p T t 
C p T 
C p T t 

C p T 
  b 
burner exit
(2.14)
0 , for ambient
   ITB
Inter  stage burner exit
0 , for ambient
8
(2.15)
Component Performance
In this analysis it is acceptable to assume that the working fluid in the engine can be
idealized as a perfect gas. Properties of an ideal gas strongly depend on the temperature.
This cycle allows fluid properties variation across the engine which assumes constant
fluid properties from the main burner entrance upstream (Cpc, γc), from ITB entrance to
the main burner exit (Cpb, γb), and from ITB exit downstream (Cpt, γt).
Inlet and Diffuser
Pressure losses occur due to the friction with the inlet wall. The total pressure ratio, πd, is
always less than 1.
In supersonic flight, the pressure losses cause shock waves which produce greater
pressure losses. The inlet total pressure is defined as the product of the ram pressure ratio
and the diffuser pressure ratio. Therefore the portion of the pressure loss due to the shock
waves and wall friction is defined by:
 d   d max  r
(2.16)
From the Military Specification 5008B (Ref. 2), the following relation is obtained:

1
M0  1

1.35
1  M0  5
 r  1  0.075 M 0  1

800

5  M0
4
 M 0  935
9
(2.17a,b,c)
Compressor and Turbine
The compressor is measured through two type of efficiencies namely, isentropic
efficiency and poly-tropic efficiency. The Isentropic efficiency is defined by
c 
ideal work of compression for given  c
actual work of compression for given  c
c   c

 1 
c
 1
 1
(2.18)
The poly-tropic efficiency is defined as
ec 
ideal work of compression for a differential pressure change
actual work of compression for a differential pressure change
(2.19)
With the assumption of constant ec, we can obtain the relation between τc and πc:

c  c c
 1
  c ec 
(2.20)
Going through a similar procedure as the compressor, we obtain turbine isentropic
efficiency, turbine poly-tropic efficiency and the relationship between τt and πt as
follows:
t 
ideal tubine work for given  t
actual turbine work for given  t
1  t
t 
  1 
1  t
 
t  t
 1
et 
(2.21)
(2.22)
10
3. TurboFan-Seperate Exhaust Streams with ITB Cycle
Analysis
Figure 3.1 – TurboFan with Interstage Turbine Burner (ITB)
Assumptions:
1. Perfect gas upstream of main burner with constant properties γc, Rc, Cpc.
2. Perfect gas between station four and five with constant properties γb, Rb, Cpb.
3. Perfect gas downstream of inter-stage burner with constant properties γt, Rt,
Cpt.
4. All components are adiabatic, no heat loss.
5. The efficiencies of the compressor-HPC, compressor-LPC, fan, turbine-HPT,
and turbine-LPT are described through the use of polytropic efficiencies eHPC,
eLPC, ef, eHPT, and eLPT, respectively.
11
Fan Stream
Step 1.
Uninstalled thrust of the fan stream Ff is given by

F
m 
g V

f
f
19

V
A P

0
19
19
P
(3.1)


P19 
 c 

(3.2)

0
c
rearranging gives:
F
.
m
a
g

f


 V 19

 a0

0
c
f
T

M
0

V
1  P0
19
T
0
19
a
0
Step 2.
2
2
2
 V 19 
a
19 M 19
 T 19 M 219
  
2
T0
 a0 
a 0
(3.3)
Step 3.
M
2
19
 Pt19   c  1  c

2

 1


 c  1  P19 

(3.4a)
where
P
P
t19
19

P
  
P
0
r
d
f

fn
(3.4b)
19
Step 4.
T t19
T 19 
T t19 T 0
T0 
  1  c
T t19
T0
 Pt19  c
T 19
P19 

12
(3.5a)
where
T
T
 

t19
r
(3.5b)
f
0
Engine Core Stream
Step 1.
Uninstalled thrust
F
c

1
g
c
 

 m10
V
10


m V
c
0

 

A P
10
10

P
0
(3.6)
rearranging gives:


F c  a0  m10 V 10 
A10 P10 1  P0 



M 0 




gc
a
P
10 

0
mc
mc
 mc

(3.7)
Step 2.

m10  1  f

mc
(3.8a)
where




m10  mc  mb  mITB
f  f b  f ITB
(3.8b)
(3.8c)

fb
b
 m

mc
(3.8d)
13

f ITB
 mITB
mc
(3.8e)
Step 3.
A10 P10 1  P0 


.
P

10 
mc

multiplied by
10
a0 a0
m10
A10 V 10  c Rc T 0
(3.9)
rearranging gives:
T 10
A10 P10 1  P0   1  f  Rt
T 0 a0



gc
P10 
Rc V 10

mc
a0
1  P0 

P10 


c


(3.10)
Step 4.
Uninstalled thrust for the engine core becomes:
F c  a0

gc
mc


T 10
R
P
1  f  V 10 
t
0  1 
T
0 
1 

M 0  1  f 

a0
Rc V 10
P10   c 



a0
(3.11)
Step 5.
2
V 10 
 t Rt T 10
2

  M 10 
 a0 
c Rc T 0
(3.12)
14
From the total pressure and mach number relation
M
2
10
 P t10   t
2



 t  1  P10 
 1
 t
T t10
T 10 
T t10 T 0
T0 

T t10
T0
 P t10
 t
T 10
P10 

 1

 1

(3.13)
 t
(3.14a)
where
Pt10  P0
 r  d  LPC  HPC  b  HPT  ITB  LPT  n (3.14b)
P10
P10
T t10 
 r  d  LPC  HPC  b  HPT  ITB  LPT  n
T0
(3.14c)
d
 1 (isentropic)
(3.14d)
n
 1 (isentropic)
(3.14e)
b

Tt 4
(3.14f)
T0  r  HPC  LPC
Step 6.
Applying the First Law of Thermodynamics and ideal gas relation to the main
burner, neglecting kinetic and potential energy changes:




C
h
pc T t 3 
PRb 
b
mc
mb
m4 C pb T t 4
15
(3.15)
Multiplying the above equation with
c r 
 b hPRb f b
T t0
, and re-arranging gives:

mc C pc T 0 T t 2
 1  f b    b
C pc T 0
(3.16)
Solving for fb
fb 
 c  r    b
 b h PRb
  b 
(3.17a)
C pc T 0
where
  b 
C pb T t 4
; T t 0  T t 2 for the case adiabatic
C pc T 0
 c   HPC  LPC
(3.17b)
(3.17c)
Step 7.
Applying the First Law of Thermodynamics and the ideal gas relation to the ITB,
neglecting kinetic and potential energy changes:



m4 C pb T t 5  mITB  ITB h PR ITB  m6 C pt T t 6
Multiplying the above equation with
   
r
d
c
b


h
C T
PR  ITB
ITB
pb
0
(3.18)
T t10
, and re-arranging gives:

m4 C pb T 0 T t 7

f

1 

ITB
f

 

b

  ITB
C
C
pc
pb
 1 

1 

f 
f b 
(3.19)
Solving for fITB
16
f ITB


 r  d  c  b  C pc    ITB 
C pb
 1  f 
 
b
 C pc
 ITB h PR ITB 


   ITB 
C pb T 0 
 C pb
(3.20a)
where
   ITB 
c
b 
d
C pt T t 6
C pc T 0
; T t10  T t 7 for the case adiabatic
  HPC  LPC
(3.20b)
(3.20c)
Tt 4
T0 r HPC LPC
(3.20d)
 1
(3.20e)
Step 8.
Applying the first law to each individual compressor and turbine, neglecting
kinetic and potential energy changes:
Power balance for LPC:
Power balance for HPC:
Power balance for HPT:
Power balance for LPT:
Power balance for Fan:
 m. C pc T t 2.5  T t 2 
c
(3.21)
.
.
W HPC  mc C pc T t 3  T t 2.5 
(3.22)
.
W LPC
.
W HPT
 m. C pb  m HPT T t 4  T t 5  (3.23)
4
.
.
W LPT  m6 C pt  m  LPT T t 6  T t 7  (3.24)
.
Wf
 m. C pc T t13  T t 2 
F
17
(3.25)
It is chosen that the HPT and HPC are connected by a single shaft; therefore for an ideal
turbofan the work relation is given by:


W HPC  W HPT
Multiplying both sides by
1
(3.26)
gives:
.
mc C pc T t 2.5
 HPC
C pb
1  f b   HPC  b  mHPT 1   HPT 
C pc
 1 
(3.27)
Solving for τHPT:
 HPT  1 
1
 f b
1   HPC
C pb
 HPC  b  m  HPT
C pc
(3.28a)
where
b 
Tt 4
(3.28b)
T0  r  c
LPT, LPC, and the fan are connected by a single shaft; therefore for an ideal turbofan, the
work relation is given by:
.
.
.
W LPC  W f  W LPT
multiplying both sides by
1
.
(3.29)
gives:
mc C pc T t 2
 LPC
 1    f  1 
C pt
1  f  T t 6  m LPT 1   LPT  (3.30)
C pc
T t2
18
Solving for τLPT:
1   LPC   1   f 
1  f  C pt T t 6  m LPT
C pc T t 2
 LPT  1 
(3.31a)
where
T t6 
 LPC  HPC  b  HPT  ITB
T t2
 ITB 
Tt 6
T0  r  c  b  HPT
(3.31b)
(3.31c)
Step 9.
The total uninstalled thrust per unit mass flow rate intake is given by:
Fc   FF
.
.
F
mF
 mc
.
1   
m0
(3.32)
Step 10,
The thrust specific fuel consumption S is give by:
S 
f
1
b
 f ITB 
(3.33)
   F m.
0
19
4. Summary of Equations:
INPUTS:
M0, T0, γc, Cpc, γb, Cpb, γt, Cpt, hPR-b, hPR-ITB, πd max, πb, πITB, πn, πfn, eHPC,
eLPC, ef, eHPT, eLPT, ηb, ηITB, ηm-HPT, ηm-LPT, P0/P10, P0/P19, Tt4, Tt6, πHPC,
πLPC, πf, α
F
OUTPUTS:
, S, f
.
m0
EQUATIONS:
Rc 
c  1
C pc
c
(4.1)
Rb 
b  1
C pb
b
(4.2)
Rt 
t  1
C pt
t
(4.3)
a0 
 c Rc T 0
(4.4)
V 0  a0 M 0
r  1 
(4.5)
c  1
2
M0
2
(4.6)
   1
r  r c c
(4.7)

1 for M 0  1

1.35
for 1  M 0  5
 r  1  0.075 M 0  1

800
 4
for M 0  5
 M 0  935
(4.8)
 d   d max  r
(4.9)
  b 
C pb T t 4
C pc T 0
(4.10)
20
   ITB 
C pt T t 6
C pc T 0
 c  1  c eHPC 
(4.11)
 HPC   HPC


  1  c eLPC
 LPC   LPC c
  1  c e f 
f  f c
(4.12)

(4.13)
(4.14)
 c   HPC  LPC
(4.15)
Tt 4
b 
(4.16)
T0  r  c
 HPC
eHPC
 1

HPC

 HPC  1
(4.17)
 LPC
eLPC
 1

LPC

 LPC  1
(4.18)
ef
 1

f
f 
f  1
 c  r    b
 b h PRb
fb 
  B 
 HPT  1 
f ITB
(4.19)
(4.20)
C pc T 0
1
 f b
1   HPC
C pb
 HPC  b  m  HPT
C pc


 r  c  b  HPT  C pc    ITB 


C pb

 1  f 

b
 C pc
 ITB hPR ITB 


 C    ITB  C T 
0
pb
 pb

f  f b  f ITB
 ITB 
(4.21)
(4.22)
(4.23)
Tt 6
(4.24)
T0  r  c  b  HPT
21
T t6 
 LPC  HPC  b  HPT  ITB
T t2
 LPT  1 
 HPT   HPT
(4.25)
1   LPC   1   f 
1  f  C pt T t 6  m LPT
C pc T t 2
 t  t  1 eHPT 

   1
 LPT   LPT t t eLPT
(4.26)
(4.27)
(4.28)
 HPT 
1   HPT
1   HPT1 eHPT
(4.29)
 LPT 
1   LPT
1   LPT1 eLPT
(4.30)
Pt10  P0
 r  d  LPC  HPC  b  HPT  ITB  LPT  n
P10
P10
(4.31)
T t10     
r c b HPT  ITB  LPT
T0
(4.32)
T t10
T 10 
T t10 T 0
T0 

T t10
T0
 P t10
 t
T 10
P10 

M 10 
 1
 t
 Pt10   t  1  t

2
 1


 t  1  P10 

V 10 
M 10
a0
 t Rt T 10
 c Rc T 0
(4.34)
(4.35)
Pt19  P0
 r  d  f  fn
P19
P19
M 19 
(4.33)
(4.36)
 Pt19   c  1  c

2
 1


 c  1  P19 

22
(4.37)
T t19 
r  f
T0
(4.38)
T t19
T 19 
T t19 T 0
T0 
  1  c
T t19
T0
 Pt19  c
T 19
P19 

(4.39)
V 19  a19 M 19 
a0
a0
(4.40)
Fc
T10


a0 
V10
Rt
T0 
P0  1 
1 

1  f   M 0  1  f 
(4.41)
gc 
a0
Rc V10 
P10   c 


a0




mc
F

f

m
a
g


 V 19

 a0

0
c
f
Fc

F


T

M
0

V
1
b
0
19
a
0
(4.42)

mf
(1   )
f
T


P19 
 c 

1  P0
19
Ff

mc
m
S 
T 19
M 19
T0

 
f
ITB
(4.43)

F
(4.44)

m0
23
5. User’s Manual
The excel program is written in combination between spreadsheet neuron cells, Visual
Basic, and macro code. These three combinations provide user-friendly software such
that compilation and preprocessing are no longer necessary. The user obtains result plots
right a way just by clicking some simple buttons.
The program is mainly comprised of six sheets namely CoverPage, Instruction, Input,
plot sheet, data sheet, and Otape&Test.
CoverPage sheet
The CoverPage sheet contains the authors of this program. Any questions regarding the
program can be addressed to us through email or phone.
Instruction sheet
First time users are strongly recommended to read this sheet before running the program.
Since there are always possibilities of getting error computations such as division by
zero, square root of a negative quantity, or over floating – under floating number, the
program is written such that it will not crash if those errors are encountered during the
computation. It will instead tell the user where the computation encounters those errors.
In this sheet, you will find details of how to run the program and how to fix a problem if
something goes wrong.
This sheet also explains several assumptions made in the equations so that the users are
aware of some cases in the equations that have been idealized to simplify the problems.
24
Figure 5.1 – Excel Input Sheet Screenshot
Input sheet
This sheet is where most of the inputs are specified. The program will check input value
in this sheet to make sure that all of the inputs are specified. It will tell the user if there
are inputs that are not specified. There are three Combo Box in the Input sheet (Combo
Box is a list box that displays a list of values and lets the users select one of the values in
the list) namely ITB, Units, and Choose a Plot as shown in Figure 5.1. You need first to
specify the value in combo box ITB and combo box Units before moving on to combo
box Choose a Plot. Combo Box Units lets you specify the input and output unit system.
Currently, the program can handle only two units systems, which are English or SI.
Combo Box ITB lets you turn ON or OFF the Interstage Burner (ITB) feature. This
feature provides a flexibility to choose two types of engine and they are engine with ITB
- ON and engine with ITB - OFF. With this feature, you will be able to see how much
additional engine performance you can get with ITB-ON or with ITB-OFF. Note that the
equations used for ITB-OFF are not the same as the equations from the reference book,
Elements of Gas Turbine Propulsion. This is because the cycle analysis in this program is
25
based on two shafts engine, and the one in the reference book is based on one shaft
engine.
When ITB-OFF is chosen, the program will execute as if there is no ITB added to the
Turbofan engine. Accordingly, the following variables will be changed internally and
automatically:
1. Cpt = Cpc
2. t = c
3. fitb = 0
4. itb = 1.0
5. itb = 1.0
Once all the inputs values are specified and combo box values on both ITB and Units are
specified, you can specify a value in combo box Choose a Plot. This combo box provides
several option lists to choose from, and they are:
1. Specific Thrust and TSFC Vs Compressor Pressure Ratio
2. Specific Thrust Vs Flight Condition Mach Number
3. TSFC Vs Flight Condition Mach Number
4. Specific Thrust Vs Fan Pressure Ratio
5. TSFC Vs Fan Pressure Ratio
6. Specific Thrust Vs ByPass Ratio
7. TSFC Vs ByPass Ratio
Once you select one of them, you will be directed to a new sheet. Basically once the
value of the combo box changed, it will execute a certain macro code. The macro code
associated with this combo box will open hidden plot sheets and hidden data sheets
depending on the selection you made.
26
The following discussion describes the instruction of how to run the program for each
different option.
Specific Thrust and TSFC Vs Compressor Pressure Ratio
When this option is chosen, the program opens four sheets namely ST_VS_PIc,
SF_VS_PIc, DataSTPIc, and DataSFPIc. You will be directed from Input sheet to
ST_VS_PIc sheet. ST_VS_PIc plots specific thrust and fuel-air mass fraction versus
compressor pressure ratio, and SF_VS_PIc plots thrust fuel specific consumption versus
compressor pressure ratio.
ST_VS_PIc
You expect to see result profiles similar to Figure 7-13a1 and Figure 7-13b1. You need to
complete all the inputs parameters indicated in green cells of the Input sheet and
ST_VS_PIc sheet. Click the  combo box to select number of plots for different ’s,
bypass ratio. New input parameters for different bypass ratio will be created indicated in
green cells. Once all the green cells are filled, you will need to specify the relation
between high total pressure compressor and low total pressure compressor ratios. To do
this you need to click on the Enter Relation. Once the relation between the two
compressors has been established, you need to click Generate to generate a table for
compressor pressure ratio. At this point you are ready to run the program and generate the
plots, simply by clicking Calculate button. Data computed will be stored in the
DataSTPIc sheet.
SF_VS_PIc
You expect to see results profiles similar to Figure 7-13c1. Most of the inputs are taken
from the Input sheet and ST_VS_PIc sheet except for the bypass ratio. You need to
specify number of bypass ratio you want to plot, then you can click Calculate to perform
computation and to plot the results. Data computed will be stored in the DataSFPIc sheet.
27
Specific Thrust Vs Flight Condition Mach Number or TSFC Vs Flight Condition Mach
Number
When you choose this option, the program closes the plot sheets and data sheets from the
previous use and opens one plot sheet and one data sheet, ST_VS_Mo and DataSTMo or
SF_VS_Mo and DataSFMo. You will then be directed from Input sheet to ST_VS_Mo or
SF_VS_Mo. This sheet is used to plot specific thrust or thrust specific fuel consumption
versus flight condition Mach number with different bypass ratio.
ST_VS_Mo or SF_VS_Mo
You expect to see result profiles similar to Figure 7-14a1 or Figure 7-14b1. You need to
complete all the input parameters indicate in the green cells of this sheet. Then you can
click Calculate to run the program and plot the results. Data computed associated with
this sheet will be stored in the DataSTMo sheet.
Specific Thrust Vs Fan Pressure Ratio or TSFC Vs Fan Pressure Ratio
Similar to Flight Condition Mach Number, this option opens ST_VS_PIf and DataSTPIf
or SF_VS_PIf and DataSTPIf. It plots specific thrust or thrust specific fuel consumption
vs fan pressure ratio with different bypass ratio. The steps to run the program in this
sheet are the same from option two or three of the Choose a Plot combo box.
Specific Thrust Vs ByPass Ratio or TSFC Vs ByPass Ratio
This option opens ST_VS_Alp and DataSTAlp or SF_VS_Alp and DataSFAlp. It plots
specific thrust or thrust specific fuel consumption vs bypass ratio with different fan total
pressure ratio, f. The steps to run the program in this sheet are the same from option two
or three of the Choose a Plot combo box.
28
In summary you need to do the followings to run the program:
1. Go to the Input sheet
2. Specify the Unit system (SI or English)
3. Specify the ITB switch. Is the computation for engine with ITB-ON or for
engine with ITB-OFF?
4. Enter all the input parameters indicated in green cells (do not modify or
change the value indicated in cyan).
5. Specify Choose a Plot. You will be directed to a new sheet depending on the
selection.
If you select to engine performance (Specific Thrust and TSFC) Vs Compressor Pressure
Ratio, do the followings:
ST_VS_PIc:
a. Specify number of bypass ratio (new green cells will be created).
b. Click Enter Relation (Enter relation).
c. Specify all input parameters indicated in green.
d. Click Generate to generate compressor total pressure ratio.
e. Click Calculate to compute and plot the results.
f. Repeat the above steps for different input parameters. If you want to
change the input parameters in the Input sheet, you need to go to the
Input sheet.
SF_VS_PIc:
a. Specify number of bypass ratio (new green cells will be created).
b. Specify all input parameters indicated in green.
c. Click Calculate.
d. Repeat the above steps for different bypass ratio. If you want to
change the input parameters in the Input sheet or in the ST_VS_PIc
sheet, you need to go back to one of those sheets and change the input
parameters.
29
ST_VS_Mo, SF_VS_Mo, ST_VS_PIf, and SF_VS_PIf:
a. Specify number of bypass ratio (new green cells will be created).
b. Specify all input parameters indicated in green.
c. Click Calculate.
d. Repeat the above steps for different input parameters. If you want to
change the input parameters in the Input sheet, you need to go to the
Input sheet.
ST_VS_Alp and SF_VS_Alp:
a. Specify number of fan total pressure ratio (new green cells will be
created).
b. Specify all input parameters indicated in green.
c. Click Calculate.
d. Repeat the above steps for different input parameters. If you want to
change the input parameters in the Input sheet, you need to go to the
Input sheet.
Discussions
The last sheet in the program is the Otape&Test; this is where the user can check a single
quantity namely Specific Thrust or Thrust Specific Fuel Consumption. Most of the input
parameters are from the Input sheet; additional inputs are inputs parameters that you see
in the plot sheets. By clicking the Test, you will obtain Specific Thrust and Thrust
Specific Fuel Consumption stored in cyan cells.
This program has been debugged several times. Therefore whenever you encounter
computation errors due to either zero division or square root of a negative quantity, you
will be notified by a pop up window indicating where the computation problem is. It will
indicate which equation that the computational error is encountered. If you have any
30
comments or bug problems you encounter in the program, you can report them to us for
further improvement. Detail about the contact number can be found in the CoverPage
sheet of the program.
It is also predicted that the plotting macro can encounter some problems in the future if
the users are not fully understand the program. Therefore I have set up a way how to fix
the problem. In case the plot starts giving problem, you need to do the followings (apply
to all plot sheets: ST_VS_PIc, SF_VS_PIc, ST_VS_PIf, SF_VS_PIf, ST_VS_Mo,
SF_VS_Mo, ST_VS_Alp, and SF_VS_Alpp):
a. Go to the plot sheet (e. ST_VS_Mo)
b. Go to cell D5
c. Note that you will not be able to click on that cell because it is lying on the
back of the plot chart. You may want to use cursor button from your
keyboard.
d. In that cell it reads “SUCCESS”. Change the value to any other type of
character, “FAIL” for example.
e. Clear the series in the chart plot by clicking right mouse button on the chart
plot.
f. Choose Source Data
g. Select Series and remove all the series. For the case ST_VS_PIc, you need to
clear the series on both charts.
Users are not expected to understand macro code in the program. However the part that
takes care the computation can be found in Module1 Sub Itb( ). In order to open it, you
need to open Excel Visual Basic by pressing Alt + F11. Any modification can be made in
subroutine Itb ( ). Do not add new variables into the program!
31
6. Data Validation
Since there is no experimental data for this application, a Fortran 77 code is written for
the comparison between results computed by Excel and Fortran 77. All the equations
used are the same in both codes and can be found in section 4 of ‘Summary of equations’.
Under the same turbofan engine operating conditions with ITB-ON, specific thrust
(i.e.
F

m
, SI unit:
N
) is computed using both codes and plotted versus various design
kg / s
parameters, namely flight Mach number (M0), compressor pressure ratio (c), fan
pressure ratio (f), and bypass ratio (). All the plots are in Tecplot 9.0 format as shown
below.
Figure 6.1 – Turbofan engine with ITB: Specific thrust vs flight Mach number
32
Figure 6.2 – Turbofan engine with ITB: Specific thrust vs compressor pressure
ratio
Figure 6.3 – Turbofan engine with ITB: Specific thrust vs fan pressure ratio
33
Figure 6.4 – Turbofan engine with ITB: Specific thrust vs bypass ratio
34
7. RESULTS AND DISCUSSIONS
Using data provided in eng_itb.dat (a sample listing data file for a two-spool high bypass
turbofan provided by Scott Jones, currently at Propulsion Systems Analysis Office,
NASA Glenn Research Center), results at different operating conditions are plotted using
Tecplot 9.0 and shown as below.
Table 7.1 –Input data for Engine parameters (SI unit)
Pressure drop ratio
engine-core
P0/P10 =
0.9
engine - fan
P0/P19 =
0.9
Maximum diffuser total pressure ratio
d max =
0.99
main burner total pressure ratio
b =
0.96
ITB - burner total pressure ratio
ITB =
0.96
region 0 --> 3
Cpc =
1.000645 KJ/Kg-K
engine nozzle total pressure ratio
n =
1.333
region 4 --> 5
Cpb =
1.159743 KJ/Kg-K
fan nozzle total pressure ratio
fn =
1.274
region 6 -->10
Cpt =
1.147183 KJ/Kg-K
T0 =
216.6667 K
Total pressure ratio
Properties of air and fuel
Specific heat at constant pressure
Polytropic efficiency
Ratio of specific heat
eHPC=
0.9066
region 0 --> 3
c =
1.39999
eLPC=
0.9036
region 4 --> 5
b =
1.27284
eHPT=
0.9029
region 6 -->10
t =
1.27882
eLPT=
0.9174
ef=
0.8961
Low heating value of fuel
Burner efficiency
b =
0.999
ITB =
0.999
Turbine mechanical efficiency
m-HPT =
0.92
m-LPT =
0.93
Burner exit temperature
main-burner
Tt4 = 1785.594 K
ITB - burner
Tt6 = 1563.844 K
35
Burner
hPR-b =
7917.12 KJ/Kg
ITB
hPR-ITB =
7917.12 KJ/Kg
Table 7.2 - The input data for Option 1:
Figure 7.1 - Specific thrust vs flight M0
Figure 7.2 - TSFC vs flight M0
Mo =
0
To
3
 Mo = 0.1
1 =
2 =
0.5
2
HPC = 25
LPC = 1.3
f = 1.3
Figure 7.1 – Turbofan engine: Specific thrust vs flight Mach number
36
Figure 7.2 – Turbofan engine: thrust specific fuel consumption vs flight Mach
number
Table 7.3 - The input data for Option 2:
Figure 7.3 - Specific thrust vs compressor pressure ratio
Figure 7.4 - TSFC vs compressor pressure ratio
Figure 7.5 - Fuel/air ratio vs compressor pressure ratio
LPC =
HPC =
f =

1.01
19.42
1.3
0.9
Scalec =
c =
 c =
1 =
2 =
37
19.23
19.62
1
0.5
2
to
50
Figure 7.3 – Turbofan engine: Specific thrust vs compressor pressure ratio
Figure 7.4 – Turbofan engine: thrust specific fuel consumption
vs compressor pressure ratio
38
Figure 7.5 – Turbofan engine: fuel/air ratio vs compressor pressure ratio:
Table 7.4 - The input data for Option 3:
Figure 7.6 - Specific thrust vs fan pressure ratio
Figure 7.7 - TSFC vs fan pressure ratio
f =
1.01
 f =
0.25
HPC =
LPC =

To
10
1 = 3
2 = 5
3 = 10
25
1.3
0.9
39
Figure 7.6 – Turbofan engine: Specific thrust vs fan pressure ratio
Figure 7.7 – Turbofan engine: thrust specific fuel consumption
vs fan pressure ratio
40
Table 7.5 - The input data for Option 4:
Figure 7.8 - Specific thrust vs bypass ratio
Figure 7.9 - TSFC vs bypass ratio
 = 0
  = 0.1
HPC = 25
LPC = 1.3
 0.9
To
10
f1 =
f2 =
1.5
3.5
Figure 7.8 – Turbofan engine: Specific thrust vs bypass ratio
41
Figure 7.9 – Turbofan engine: thrust specific fuel consumption
vs bypass ratio
Discussions
The computations are successful in providing an estimation of how the turbofan
performance is improved by adding an Inter-Stage Turbine Burner. As expected, the
specific thrust is increased at four different engine design parameters, namely Mach
number, compressor pressure ratio, fan pressure ratio and bypass ratio with the addition
of ITB. Nevertheless, the specific fuel consumption is relatively increased.
Typical ranges for each engine design parameter is based on Chapter 7 of ‘Elements of
Gas Turbine Propulsion’ by Dr. Jack Mattingly1.
In addition, more plots will be added in the future if necessary. For convenience purpose,
a Visual-Basic code may be developed to act as an interface between fortran77 data file
42
and MS Excel plot function. Then, user can plot the result data computed using Fortran77
on MS Excel without knowing how to use Tecplot 9.0 or any other equivalent postprocessing software.
43
Appendix
A - MACRO VISUAL BASIC CODE in MS EXCEL
VB code
variable
a0
a0
alpha

VB code

variable
VB code
variable
gamab
b
T10_T0
T10/T0
gamac
c
T19_T0
T19/T0
Cpb
Cpb
gamat
t
tau_alp_itb
-b
Cpc
Cpc
hPRb
hPR-b
tau_alp_itb
-ITB
Cpt
Cpt
hPRitb
hPR-ITB
tau_b
b
ef
ef
M10
M10
tau_c
c
tau_f
f
eff_hpc
HPC

M19
M19
eff_hpt
HPT

pi_d
d
tau_hpc
HPC
eff_lpc
LPC

pi_f
f
tau_hpt
HPT
eff_lpt
LPT

pi_hpc
HPC
tau_itb
ITB
r

pi_hpt
HPT
tau_lpc
LPC
effm_hpt
m-HPT

pi_lpc
LPC
tau_lpt
LPT
effm_lpt
m-LPT

pi_lpt
LPT
tau_r
eff_r
r
Tt10_T0
Tt10/T0
Pt10_P10
Pt10/P10
Tt19_T0
Tt19/T0
Pt19_P19
Pt19/P19
Tt6_Tt2
Tt6/Tt2
ehpc
eHPC
pi_r
elpc
eLPC
fb
fb
fc_mc
Fc


r
rb
Rb
v0
v0
rc
Rc
v10_a0
v10/a0
rt
Rt
v19_a0
v19/a0
s
S
mc
F
ff_mf
f

m
f
fitb
fITB
f_mo

F
m
0
Table A.1 – Description of variables in MS Excel Macro Visual Basic code
44
Sub itb()
Dim rc, rb, rt, a0, v0, tau_r, pi_r, eff_r, pi_d, tau_alp_b, tau_alp_itb, tau_hpc, tau_lpc,
tau_f
Dim tau_c, tau_b, eff_hpc, eff_lpc, eff_f, fb, tau_hpt, fitb, tau_itb, Tt6_Tt2, tau_lpt
Dim pi_hpt, pi_lpt, eff_hpt, eff_lpt, Pt10_P10, Tt10_T0, M10, v10_a0, Pt19_P19, M19,
Tt19_T0
Dim T19_T0, v19_a0, fc_mc, ff_mf, T10_T0
'zero-ing internal variables
rc = 0#: rb = 0#: rt = 0#: a0 = 0#: v0 = 0#: tau_r = 0#: pi_r = 0#: eff_r = 0#: pi_d = 0#
tau_alp_b = 0#: tau_alp_itb = 0#: tau_hpc = 0#: tau_lpc = 0#: tau_f = 0#
tau_c = 0#: tau_b = 0#: eff_hpc = 0#: eff_lpc = 0#: eff_f = 0#: fb = 0#
tau_hpt = 0#: fitb = 0#: tau_itb = 0#: Tt6_Tt2 = 0#: tau_lpt = 0#
pi_hpt = 0#: pi_lpt = 0#: eff_hpt = 0#: eff_lpt = 0#: Pt10_P10 = 0#: Tt10_T0 = 0#
M10 = 0#: v10_a0 = 0#: Pt19_P19 = 0#: M19 = 0#: Tt19_T0 = 0#
T19_T0 = 0#: v19_a0 = 0#: fc_mc = 0#: ff_mf = 0#
'empty-ing output variables
F_mo = Empty: s = Empty: f = Empty
Style = vbYes
Title = "ITB Cycle Analysis"
Style1 = vbYesNo
Msg = "Do you want to jump to the next alpha?"
Msg1 = "Division by zero ==> Refer to equations 1, 2, 3"
Msg2 = "Square root of a negative quantity ==> Refer to equation 4"
Msg3 = "Division by zero ==> Refer to equation 7"
Msg4 = "Division by zero ==> Refer to equations 10, 11, 12, 13, 14"
45
Msg5 = "Division by zero ==> Refer to equation 16"
Msg6 = "Division by zero ==> Refer to equations 17, 18, 19"
Msg7 = "Division by zero ==> Refer to equation 20"
Msg8 = "Square root of a negative quantity ==> Refer to equation 34"
Msg9 = "Square root of a negative quantity ==> Refer to equation 37"
If gamac = 0# Or gamab = 0# Or gamat = 0# Then
response = MsgBox(Msg1, Sytle, Title)
Msg1 = "Occurs at " & "PIc,PIf,Mo,ByPass = " & pi_hpc * pi_lpc & "," & pi_f & ","
& M0 & "," & alpha
response = MsgBox(Msg1, Style, Title)
jump = MsgBox(Msg1, Style1, Title)
GoTo 10
End If
rc = (gamac - 1#) * Cpc / gamac '(1)
rb = (gamab - 1#) * Cpb / gamab '(2)
rt = (gamat - 1#) * Cpt / gamat '(3)
If gamac < 0# Or rc < 0# Or T_o < 0# Or gc < 0# Then
response = MsgBox(Msg2, Style, Title)
Msg2 = "Occurs at " & "PIc,PIf,Mo,ByPass = " & pi_hpc * pi_lpc & "," & pi_f & ","
& M0 & "," & alpha
response = MsgBox(Msg2, Sytle, Title)
jump = MsgBox(Msg, Style1, Title)
GoTo 10
End If
a0 = (gamac * rc * T_o * gc) ^ 0.5
v0 = a0 * M0
'(4)
'(5)
If gamac = 1# Then
46
response = MsgBox(Msg3, Sytle, Title)
Msg3 = "Occurs at " & "PIc,PIf,Mo,ByPass = " & pi_hpc * pi_lpc & "," & pi_f & ","
& M0 & "," & alpha
response = MsgBox(Msg3, Style, Title)
jump = MsgBox(Msg, Style1, Title)
GoTo 10
End If
tau_r = (gamac - 1#) * (0.5 * M0 ^ 2) + 1#
pi_r = tau_r ^ (gamac / (gamac - 1))
If M0 <= 1# Then
'(6)
'(7)
'(8)
eff_r = 1#
Else
eff_r = 1# - 0.075 * (M0 - 1#) ^ 1.35
End If
pi_d = pi_dmax * eff_r
'(9)
If Cpc = 0# Or T_o = 0# Or gamac = 0# Or ehpc = 0# Or elpc = 0# Or ef = 0# Then
response = MsgBox(Msg4, Sytle, Title)
Msg4 = "Occurs at " & "PIc,PIf,Mo,ByPass = " & pi_hpc * pi_lpc & "," & pi_f & ","
& M0 & "," & alpha
response = MsgBox(Msg4, Style, Title)
jump = MsgBox(Msg, Style1, Title)
GoTo 10
End If
tau_alp_b = Cpb * Tt4 / (Cpc * T_o)
'(10)
tau_alp_itb = Cpt * Tt6 / (Cpc * T_o)
'(11)
tau_hpc = pi_hpc ^ ((gamac - 1#) / (gamac * ehpc))
tau_lpc = pi_lpc ^ ((gamac - 1#) / (gamac * elpc))
tau_f = pi_f ^ ((gamac - 1#) / (gamac * ef))
47
'(12)
'(13)
'(14)
tau_c = tau_hpc * tau_lpc
'(15)
If T_o = 0# Or tau_r = 0# Or tau_c = 0# Then
response = MsgBox(Msg5, Style, Title)
Msg5 = "Occurs at " & "PIc,PIf,Mo,ByPass = " & pi_hpc * pi_lpc & "," & pi_f & ","
& M0 & "," & alpha
response = MsgBox(Msg5, Style, Title)
jump = MsgBox(Msg, Style1, Title)
GoTo 10
End If
tau_b = Tt4 / (T_o * tau_r * tau_c)
'(16)
If tau_hpc = 1# Or tau_lpc = 1# Or tau_f = 1# Then
response = MsgBox(Msg6, Style, Title)
Msg6 = "Occurs at " & "PIc,PIf,Mo,ByPass = " & pi_hpc * pi_lpc & "," & pi_f & ","
& M0 & "," & alpha
response = MsgBox(Msg6, Style, Title)
jump = MsgBox(Msg, Style1, Title)
GoTo 10
End If
eff_hpc = ((tau_hpc ^ ehpc) - 1#) / (tau_hpc - 1#)
eff_lpc = ((tau_lpc ^ elpc) - 1#) / (tau_lpc - 1#)
eff_f = ((tau_f ^ ef) - 1#) / (tau_f - 1#)
'(17)
'(18)
'(19)
If tau_alp_b = eff_b * hPRb / (Cpc * T_o) Then
response = MsgBox(Msg7, Style, Title)
Msg7 = "Occurs at " & "PIc,PIf,Mo,ByPass = " & pi_hpc * pi_lpc & "," & pi_f & ","
& M0 & "," & alpha
response = MsgBox(Msg7, Style, Title)
jump = MsgBox(Msg, Style1, Title)
48
GoTo 10
End If
fb = (tau_c * tau_r - tau_alp_b) / (tau_alp_b - (eff_b * hPRb / (Cpc * T_o)))
'(20)
tau_hpt = 1# + (1# - tau_hpc) / ((1# + fb) * (Cpb / Cpc) * tau_hpc * tau_b * effm_hpt)
'(21)
If Sheets("Input").ComboBox2.Value = "ON" Then
'(22)
fitb = (1# + fb) * (tau_r * tau_c * tau_b * tau_hpt - (Cpc / Cpb) * tau_alp_itb) / ((Cpc /
Cpb) * tau_alp_itb - eff_itb * hPRitb / (Cpb * T_o))
Else
fitb = 0#
End If
f = fb + fitb
'(23)
If Sheets("Input").ComboBox2.Value = "ON" Then
'(24)
tau_itb = Tt6 / (T_o * tau_r * tau_c * tau_b * tau_hpt)
Else
tau_itb = 1#
End If
Tt6_Tt2 = tau_c * tau_b * tau_hpt * tau_itb
'(25)
tau_lpt = 1# + (1# - tau_lpc + alpha * (1# - tau_f)) / ((1# + f) * (Cpt / Cpc) * Tt6_Tt2 *
effm_lpt) '(26)
pi_hpt = tau_hpt ^ (gamat / ((gamat - 1#) * ehpt))
pi_lpt = tau_lpt ^ (gamat / ((gamat - 1#) * elpt))
49
'(27)
'(28)
eff_hpt = (1# - tau_hpt) / (1# - tau_hpt ^ (1# / ehpt))
eff_lpt = (1# - tau_lpt) / (1# - tau_lpt ^ (1# / elpt))
'(29)
'(30)
Pt10_P10 = P0_P10 * pi_r * pi_d * pi_lpc * pi_hpc * pi_b * pi_hpt * pi_itb * pi_lpt *
pi_n
'(31)
Tt10_T0 = tau_r * tau_c * tau_b * tau_hpt * tau_itb * tau_lpt
'(32)
T10_T0 = Tt10_T0 / Pt10_P10 ^ ((gamat - 1#) / gamat)
'(33)
If gamat < 1# Or Pt10_P10 ^ ((gamat - 1#) / gamat) < 1# Then
response = MsgBox(Msg8, Style, Title)
Msg8 = "Occurs at " & "PIc,PIf,Mo,ByPass = " & pi_hpc * pi_lpc & "," & pi_f & ","
& M0 & "," & alpha
response = MsgBox(Msg8, Style, Title)
jump = MsgBox(Msg, Style1, Title)
GoTo 10
End If
M10 = (((Pt10_P10 ^ ((gamat - 1#) / gamat)) - 1#) * 2# / (gamat - 1#)) ^ 0.5
'(34)
v10_a0 = M10 * (gamat * rt * T10_T0 / (gamac * rc)) ^ 0.5
'(35)
Pt19_P19 = P0_P19 * pi_r * pi_d * pi_f * pi_fn
If gamac < 1# Or Pt19_P19 ^ ((gamac - 1#) / gamac) < 1# Then
response = MsgBox(Msg9, Style, Title)
50
'(36)
Msg9 = "Occurs at " & "PIc,PIf,Mo,ByPass = " & pi_hpc * pi_lpc & "," & pi_f & ","
& M0 & "," & alpha
response = MsgBox(Msg9, Style, Title)
jump = MsgBox(Msg, Style1, Title)
GoTo 10
End If
M19 = (((Pt19_P19 ^ ((gamac - 1#) / gamac)) - 1#) * 2# / (gamac - 1#)) ^ 0.5
'(37)
Tt19_T0 = tau_r * tau_f
'(38)
T19_T0 = Tt19_T0 / Pt19_P19 ^ ((gamac - 1#) / gamac)
'(39)
v19_a0 = M19 * T19_T0 ^ 0.5
'(40)
fc_mc = (a0 / gc) * ((1# + f) * v10_a0 - M0 + (1# + f) * (rt / rc) * (T10_T0 / v10_a0) *
(1# - P0_P10) * (1# / gamac)) '(41)
ff_mf = (a0 / gc) * (v19_a0 - M0 + (T19_T0 / v19_a0) * (1# - P0_P19) / gamac)
'(42)
F_mo = (fc_mc + alpha * ff_mf) / (1# + alpha)
'(43)
s = f / ((1# + alpha) * F_mo)
'(44)
10
End Sub
51
B - FORTRAN 77 code
Three separate files are needed to execute this code, namely itb.f, comitb.i, and
input. All the equations used in this code are summarized in the section 4 - ‘Summary of
equations’.
(A) Main program: itb.f
itb.f is the main program for this application. It comprises of a main driver and
nine subroutines. Each subroutine has its own specific function and is described in detail
below.
1) Subroutine START
START is the first subroutine called by main driver itb. It ensures that the ‘input’
file exists, and then the program will carry on. Or else, the program will terminate.
2) Subroutine RINPUT
Once the file input is provided at the same directory as itb.f is located, RINPUT will
then be called and read in the data file.
3) Subroutine CONSTANT
All the constants will be initialized in this subroutine. This subroutine is called only
once before performing necessary computation.
52
4) Subroutine SELECT
SELECT allows user to specify which plot they desire to get. Up to this point, there
are only four options to choose, which include:
Option 1:
(a). Specific Thrust vs Mach Number (ST_M0.dat)
(b). TSFC vs Mach Number (TSFC_M0.dat)
Option 2:
(a). Specific Thrust vs Compressor Pressure Ratio (ST_PIc.dat)
(b). TSFC vs Compressor Pressure Ratio (TSFC_PIc.dat)
(c). Fuel-air Ratio vs Compressor Pressure Ratio (f_PIc.dat)
Option 3:
(a). Specific Thrust vs Fan Pressure Ratio (ST_PIf.dat)
(b). TSFC vs Fan Pressure Ratio (TSFC_PIf.dat)
Option 4:
(a). Specific Thrust vs Bypass Ratio (ST_Alpha.dat)
(b). TSFC vs Bypass Ratio (TSFC_Alpha.dat)
The selected plots will be plotted and stored in the same directory where the program
is executed.
5) Subroutine MACH
MACH is called to plot engine performance parameters (for instance, specific thrust
or thrust specific fuel consumption) vs flight mach number.
53
6) Subroutine COMPR
COMPR is called to plot engine performance parameters vs compressor pressure
ratio.
7) Subroutine FANPR
FANPR is called to plot engine performance parameters vs fan pressure ratio.
8) Subroutine BYPASS
BYPASS is called to plot engine performance parameters vs bypass ratio.
9) Subroutine EQUATION
EQUATION is called to perform all necessary computations. It includes all
equations here.
(B) Variable initialization: comitb.i
All variables will be declared and initialized before running main program and all
subroutines. Variables are grouped into five common blocks, i.e. inputs, outputs,
equations, constants, and chardat.
54
(C) Data file: input
Since two types of unit system will be used for computation, namely SI and
English unit, user needs to specify the input parameter ‘unitsys’ to be either ‘0.0’
(English unit) or ‘1.0’ (SI unit).
Another important input parameter is ‘itbsw’. When ‘itbsw’ is set to be
‘1.0’, ITB will be turned on and vice versa (i.e. ‘itbsw’ is set to be ‘0.0’).
Table shown below is the brief descriptions of input variables in ‘input’ file:
Input Variables
program
Unit
literature
English
SI
unitsys
-
-
-
itbsw
-
-
-
T0
T0
R
K
gamac
γc
-
-
cpc
cpc
Btu
lbm  R
kJ
kg  K
gamab
γb
-
-
cpb
cpb
Btu
lbm  R
kJ
kg  K
gamat
γt
-
-
cpt
cpt
Btu
lbm  R
kJ
kg  K
hprb
hPR-b
Btu
lbm
kJ
kg
hpritb
hPR-itb
Btu
lbm
kJ
kg
55
pidmax
πd max
-
-
pib
πb
-
-
piitb
πitb
-
-
pin
πn
-
-
pifn
πfn
-
-
ehpc
eHPC
-
-
elpc
eLPC
-
-
ef
ef
-
-
ehpt
eHPT
-
-
elpt
eLPT
-
-
effb
ηb
-
-
effitb
ηitb
-
effmhpt
ηhpt
-
effmlpt
ηlpt
-
p0op10
P0
P10
-
p0op19
P0
P19
-
Tt4
Tt4
R
K
Tt6
Tt6
R
K
Table B.1 – Description of input variables in ‘input’ file in Fortran77 code (both SI
and English units)
56
Main program: itb.f
*deck itb
program itb
c
c +++
c
c===========================================================
c
c
ITB is the main driver.
c
c===========================================================
c
include 'comitb.i'
c
c//////////////////////////////\\\\\\\\\\\\\\\\\\\\\\\\\\\\\
c
c +++
call start
c +++
call rinput
c +++
call constant
c
call select
c +++
if (plot.eq.1) call mach
c
if (plot.eq.2) call compr
c
if (plot.eq.3) call fanpr
c
if (plot.eq.4) call bypass
c +++
end
c
*deck bypass
subroutine bypass
c
c===========================================================
c
c
BYPASS determines the range for bypass ratio for
c
plotting.
c
c
BYPASS is called by: itb
c
c===========================================================
c
include 'comitb.i'
c
c//////////////////////////////\\\\\\\\\\\\\\\\\\\\\\\\\\\\\
c
write(3,*) 'Subroutine BYPASS'
c
open(unit=18,file='ST_Alpha.dat')
57
open(unit=19,file='TSFC_Alpha.dat')
c
WRITE(18,*) 'Title="','Specific Thrust VS Alpha"'
if (unitsys.eq.0.0) then
WRITE(18,*) 'Variables = "`a","Sp. thrust [lbf/(lbm/sec)]"'
else
WRITE(18,*) 'Variables = "`a","Specific thrust [N/(kg/s)]"'
endif
c
WRITE(19,*) 'Title="','TSFC VS Alpha"'
if (unitsys.eq.0.0) then
WRITE(19,*) 'Variables = "`a","TSFC [(lbm/hr)/lbf]"'
else
WRITE(19,*) 'Variables = "`a","TSFC [mg/(N-sec)]"'
endif
c
if (npif.gt.0) then
do 90 i=1,npif
pif=pi_f(i)
write(*,*) 'pif(',i,')=',pif
c
if (itbsw.eq.0.) then
write(18,314)'Zone
write(19,314)'Zone
else
write(18,314)'Zone
write(19,314)'Zone
endif
T="`p_f = ',pif,'(no itb)"'
T="`p_f = ',pif,'(no itb)"'
T="`p_f = ',pif,'(itb)"'
T="`p_f = ',pif,'(itb)"'
c
do 100 alpha = ialp,falp,dalp
c
alpp1 = alpha+1.0
ralpp1 = 1.0/alpp1
c
call equation
if (error.eq.1.0) then
write(*,*) 'error'
go to 90
endif
write(18,313) alpha,st
write(19,313) alpha,tsfc
100
continue
90 continue
endif
c
close(18)
close(19)
return
313 format(f10.5,2x,f13.8)
314 format(a15,f5.2,a9)
end
c
*deck compr
subroutine compr
c
c===========================================================
c
58
c
COMPR determines the range for compressor pressure
c
ratio for plotting.
c
c
COMPR is called by: itb
c
c===========================================================
c
include 'comitb.i'
c
c//////////////////////////////\\\\\\\\\\\\\\\\\\\\\\\\\\\\\
c
write(3,*) 'Subroutine COMPR'
c
open(unit=15,file='ST_PIc.dat')
open(unit=16,file='TSFC_PIc.dat')
open(unit=17,file='f_PIc.dat')
c
WRITE(15,*) 'Title="','Specific Thrust VS Pi Comp"'
if (unitsys.eq.0.0) then
WRITE(15,*)'Variables ="`p_c","Sp.thrust [lbf/(lbm/sec)]"'
else
WRITE(15,*)'Variables ="`p_c","Sp.thrust [N/(kg/s)]"'
endif
c
WRITE(16,*) 'Title="','TSFC VS Pi Comp"'
if (unitsys.eq.0.0) then
WRITE(16,*)'Variables = "`p_c","TSFC [(lbm/hr)/lbf]"'
else
WRITE(16,*)'Variables = "`p_c","TSFC [mg/(N-sec)]"'
endif
c
WRITE(17,*) 'Title="','f VS Pi Comp"'
WRITE(17,*) 'Variables = "`p_c","f"'
c
ipic = scalec*pilpc*pilpc
k=1
do 60 pic = ipic,fpic,dpic
term = pic/scalec
tpilpc(k) = sqrt(term)
tpihpc(k) = pic/tpilpc(k)
k=k+1
60 continue
write(3,*) pilpc,pihpc,pic
write(3,*) ipic,fpic,dpic
c
if (nalpha.gt.0) then
do 70 i=1,nalpha
alpha=alp(i)
write(*,*) 'alpha(',i,')=',alpha
if (itbsw.eq.0.) then
write(15,12)'Zone T="`a =',alpha,'(no itb)"'
write(16,12)'Zone T="`a =',alpha,'(no itb)"'
write(17,12)'Zone T="`a =',alpha,'(no itb)"'
else
write(15,12)'Zone T="`a =',alpha,'(itb)"'
write(16,12)'Zone T="`a =',alpha,'(itb)"'
write(17,12)'Zone T="`a =',alpha,'(itb)"'
59
endif
c
alpp1 = alpha+1.0
ralpp1 = 1.0/alpp1
write(3,*) 'alpp1=',alpp1
write(3,*) 'ralpp1=',ralpp1
c
c
c
j=1
write(3,*) pilpc,pihpc,pic
write(3,*) ipic,fpic,dpic
do 80 pic = ipic,fpic,dpic
pilpc = tpilpc(j)
pihpc = tpihpc(j)
write(3,*) pilpc,pihpc,pic
c
c
80
70
call equation
if (error.eq.1.0) then
write(*,*) 'error'
go to 70
endif
write(15,11) pic,st
write(16,11) pic,tsfc
write(17,11) pic,f
count=count+1
j=j+1
continue
continue
endif
c
close (15)
close (16)
close (17)
return
11 format(f10.5,2x,f13.9)
12 format(a13,f5.2,a9)
end
c
*deck constant
subroutine constant
c
c===========================================================
c
c
EQUATION performs all necessary computations.
c
c
EQUATION is called by: mach,compr,fanpr,bypass
c
c===========================================================
c
include 'comitb.i'
c
c//////////////////////////////\\\\\\\\\\\\\\\\\\\\\\\\\\\\\
c
write(3,*)
write(3,*) '*******Check constant begins!!******'
c
gc=32.174
if (unitsys.eq.1.0) gc = 1.0
60
c
ecvrn = 778.14
if (unitsys.eq.1.0)
ecvrn = 1000.0
c
rgc = 1.0/gc
write(3,*) 'gc=',gc
write(3,*) 'rgc=',rgc
c
rgamac = 1.0/gamac
rgamat = 1.0/gamat
rgamab = 1.0/gamab
write(3,*) 'rgamac=',rgamac
write(3,*) 'rgamat=',rgamat
write(3,*) 'rgamab=',rgamab
c
gcm1ogc = (gamac-1.0)*rgamac
gtm1ogt = (gamat-1.0)*rgamat
gbm1ogb = (gamab-1.0)*rgamab
write(3,*) 'gcm1ogc=',gcm1ogc
write(3,*) 'gtm1ogt=',gtm1ogt
write(3,*) 'gbm1ogb=',gbm1ogb
c
rgcm1ogc = 1.0/gcm1ogc
rgtm1ogt = 1.0/gtm1ogt
rgtm1 = 1.0/(gamat-1.0)
rgcm1 = 1.0/(gamac-1.0)
write(3,*) 'rgcm1ogc=',rgcm1ogc
write(3,*) 'rgtm1ogt=',rgtm1ogt
write(3,*) 'rgcm1=',rgcm1
write(3,*) 'rgtm1=',rgtm1
c
Tt4oT0 = Tt4/T0
Tt6oT0 = Tt6/T0
write(3,*) 'Tt4oT0=',Tt4oT0
write(3,*) 'Tt6oT0=',Tt6oT0
c
cpbocpc = cpb/cpc
cptocpc = cpt/cpc
cpcocpb = 1.0/cpbocpc
write(3,*) 'cpbocpc=',cpbocpc
write(3,*) 'cptocpc=',cptocpc
write(3,*) 'cpcocpb=',cpcocpb
c
rehpc = 1.0/ehpc
relpc = 1.0/elpc
write(3,*) 'rehpc=',rehpc
write(3,*) 'relpc=',relpc
c
rehpt = 1.0/ehpt
relpt = 1.0/elpt
write(3,*) 'rehpt=',rehpt
write(3,*) 'relpt=',relpt
c
taud = 1.0
c
write(3,*) '******constant check ENDs!!******'
write(3,*)
61
c
return
end
c
*deck equation
subroutine equation
c
c===========================================================
c
c
EQUATION performs all necessary computations.
c
c
EQUATION is called by: itb
c
c===========================================================
c
include 'comitb.i'
INTEGER eqn
c
c//////////////////////////////\\\\\\\\\\\\\\\\\\\\\\\\\\\\\
c
error=0.
eqn = 0
write(3,*) '-----------------------------'
write(3,*) 'Subroutine EQUATION'
write(3,*) '-----------------------------'
c
c --- equation 1,2,3
c
rc = gcm1ogc*cpc*ecvrn
rb = gbm1ogb*cpb*ecvrn
rt = gtm1ogt*cpt*ecvrn
write(3,*) 'Rc=',rc
write(3,*) 'Rt=',rt
write(3,*) 'Rb=',rb
c
rtorc = rt/rc
write(3,*) 'rtorc=',rtorc
c
c --- equation 4 & 5
c
term = gamac*rc*gc*T0
if (term.lt.0) then
eqn = 4
write(3,201) eqn
endif
c
a0 = sqrt(term)
v0 = a0*M0
write(3,*) 'a0=',a0
write(3,*) 'v0=',v0
c
c --- equation 6,7,8
c
taur = 1.0+(gamac-1.0)/2*M0*M0
pir = taur**rgcm1ogc
effr = 1.
if (M0.gt.5.0) then
62
effr = 800/(M0**4+935.0)
else if (M0.gt.1.0) then
effr = 1.0-0.075*(M0-1)**1.35
endif
c
write(3,*) 'taur=',taur
write(3,*) 'pir=',pir
write(3,*) 'effr=',effr
c
c --- equation 9,10,11
c
pid = pidmax*effr
taulb = cpbocpc*Tt4oT0
taulitb = cptocpc*Tt6oT0
write(3,*) 'pid=',pid
write(3,*) 'taulb=',taulb
write(3,*) 'taulitb=',taulitb
c
c
c --- equation 12 & 13
c
tauhpc = pihpc**(gcm1ogc*rehpc)
taulpc = pilpc**(gcm1ogc*relpc)
write(3,*) 'tauhpc=',tauhpc
write(3,*) 'taulpc=',taulpc
c
c --- equation 14,15,16
c
if (ef.lt.0) then
eqn = 14
write(3,201) eqn
endif
c
tauf = pif**(gcm1ogc/ef)
tauc = tauhpc*taulpc
c
term = taur*tauc*taud
if (term.lt.0) then
eqn = 16
write(3,201) eqn
endif
c
taub = Tt4oT0/(term)
c
write(3,*) 'tauf=',tauf
write(3,*) 'tauc=',tauc
write(3,*) 'taub=',taub
c
c --- equation 17,18,19
c
if (tauhpc.eq.1.0) then
eqn = 17
write(3,201) eqn
go to 299
endif
c
effhpc = (tauhpc**ehpc-1.0)/(tauhpc-1.0)
63
write(3,*) 'effhpc=',effhpc
c
if (taulpc.eq.1.0) then
eqn = 18
write(3,201) eqn
go to 299
endif
c
efflpc = (taulpc**elpc-1.0)/(taulpc-1.0)
write(3,*) 'efflpc=',efflpc
c
if (tauf.eq.1.0) then
eqn = 19
write(3,201) eqn
go to 299
endif
c
efff = (tauf**ef-1.0)/(tauf-1.0)
write(3,*) 'efff=',efff
c
c --- equation 20
c
num = tauc*taur-taulb
denom = taulb-(effb*hprb)/(cpc*T0)
write(3,*) 'num=',num
write(3,*) 'denom=',denom
c
if (denom.eq.0) then
eqn = 20
write(3,201) eqn
go to 299
endif
c
fb = num/denom
write(3,*) 'fb=',fb
c
c --- equation 21
c
denom = (1.0+fb)*cpbocpc*tauhpc*taub*effmhpt
write(3,*) 'denom=',denom
c
if (denom.eq.0) then
eqn = 21
write(3,201) eqn
go to 299
endif
c
tauhpt = 1.0+(1.0-tauhpc)/denom
write(3,*) 'tauhpt=',tauhpt
c
c --- equation 22 & 23
c
if (itbsw.eq.1.0) then
denom1 = cpcocpb*taulitb
denom2 = (effitb*hpritb)/(cpb*T0)
denom = denom1-denom2
num = taur*taud*tauc*taub*tauhpt-cpcocpb*taulitb
64
write(3,*)
write(3,*)
write(3,*)
write(3,*)
'denom1=',denom1
'denom2=',denom2
'denom=',denom
'num=',num
c
if (denom.eq.0) then
eqn = 22
write(3,201) eqn
go to 299
endif
fitb = num/denom*(1.0+fb)
else
fitb = 0.0
endif
c
f = fb+fitb
write(3,*) 'fitb=',fitb
write(3,*) 'f=',f
c
c --- equation 24 & 25
c
if (itbsw.eq.1.0) then
num=taur*tauc*taub*tauhpt
write(3,*) 'num=',num
if (num.eq.0) then
eqn = 24
write(3,201) eqn
go to 299
endif
tauitb = Tt6oT0/num
else
tauitb = 1.0
endif
c
Tt6oTt2 = tauitb*taulpc*tauhpc*taub*tauhpt
write(3,*) 'tauitb=',tauitb
write(3,*) 'Tt6oTt2=',Tt6oTt2
c
c --- equation 26,27,28,29,30
c
fp1 = f+1.0
num = 1.0-taulpc+alpha*(1.0-tauf)
denom = fp1*cptocpc*Tt6oTt2*effmlpt
write(3,*) 'num=',num
write(3,*) 'denom=',denom
c
c
if (denom.eq.0) then
eqn = 26
write(3,201) eqn
go to 299
endif
c
taulpt = 1.0+num/denom
write(3,*) 'taulpt=',taulpt
c
pihpt = tauhpt**(rgtm1ogt*rehpt)
65
pilpt = taulpt**(rgtm1ogt*relpt)
write(3,*) 'pihpt=',pihpt
write(3,*) 'pilpt=',pilpt
c
denom = 1.0-tauhpt**rehpt
write(3,*) 'denom=',denom
if (denom.eq.0) then
eqn = 29
write(3,201) eqn
go to 299
endif
c
effhpt = (1.0-tauhpt)/denom
write(3,*) 'effhpt=',effhpt
c
denom = 1.0-taulpt**relpt
write(3,*) 'denom=',denom
if (denom.eq.0) then
eqn = 30
write(3,201) eqn
go to 299
endif
c
efflpt = (1.0-taulpt)/denom
write(3,*) 'efflpt=',efflpt
c
c --- eqaution 31,32,33,34,35
c
pt10op10 = p0op10*pir*pid*pilpc*pihpc*pib
pt10op10 = pt10op10*pihpt*piitb*pilpt*pin
write(3,*) 'pt10op10=',pt10op10
c
Tt10oT0 = taur*tauc*taub*tauhpt*taulpt*tauitb
denom = pt10op10**gtm1ogt
write(3,*) 'Tt10oT0=',Tt10oT0
write(3,*) 'denom=',denom
if (denom.eq.0) then
eqn = 33
write(3,201) eqn
go to 299
endif
c
T10oT0 = Tt10oT0/denom
write(3,*) 'T10oT0=',T10oT0
c
term = denom
if (term.lt.1.0) then
eqn = 34
write(3,200) eqn
go to 299
endif
c
M10 = sqrt(2.0*(term-1.0)/(gamat-1.0))
c
term = rtorc*T10oT0*gamat/gamac
write(3,*) 'term=',term
c
66
if (term.lt.0.0) then
eqn = 35
write(3,200) eqn
go to 299
endif
c
v10oa0 = M10*sqrt(term)
write(3,*) 'M10=',M10
write(3,*) 'v10oa0=',v10oa0
c
c --- equation 36,37,38,39,40
c
pt19op19 = p0op19*pir*pid*pif*pifn
c
term = pt19op19**gcm1ogc
write(3,*) 'pt19op19=',pt19op19
write(3,*) 'term=',term
if (term.lt.1.0) then
eqn = 37
write(3,200) eqn
go to 299
endif
c
M19 = sqrt(2.0*(term-1.0)/(gamac-1.0))
write(3,*) 'M19=',M19
c
Tt19oT0 = taur*tauf
c
denom = term
T19oT0 = Tt19oT0/denom
write(3,*) 'Tt19oT0=',Tt19oT0
write(3,*) 'T19oT0=',T19oT0
c
if (T19oT0.lt.0) then
eqn = 40
write(3,200) eqn
go to 299
endif
c
v19oa0 = sqrt(T19oT0)*M19
write(3,*) 'v19oa0=',v19oa0
c
c --- equation 41 & 42
c
term = fp1*rtorc*T10oT0*(1.0-p0op10)*rgamac/v10oa0
write(3,*) 'term=',term
write(3,*) 'a0=',a0
write(3,*) 'rgc=',rgc
write(3,*) 'fp1=',fp1
write(3,*) 'v10oa0=',v10oa0
write(3,*) 'M0=',M0
fcomc = a0*rgc*(fp1*v10oa0-M0+term)
if (fcomc.lt.0) then
eqn = 41
write(3,202) eqn
go to 299
endif
67
c
write(3,*) 'term=',term
write(3,*) 'fcomc=',fcomc
c
term = T19oT0*(1.0-p0op19)*rgamac/v19oa0
ffomf = a0*rgc*(v19oa0-M0+term)
write(3,*) 'term=',term
write(3,*) 'ffomf=',ffomf
c
c --- equation 43 & 44
c
st = (fcomc+ffomf*alpha)*ralpp1
c
tsfc = ((1.0-unitsys)*3600+unitsys*1e6)*(f*ralpp1/st)
write(3,*) 'st=',st
write(3,*) 'tsfc=',tsfc
write(3,*) '------------------------------'
c --299 if (eqn.gt.0) error=1.0
return
c
200 format(' Error: Square root of a negative number! Check
& equation',i3)
201 format(' Error: Division by zero !! Check equation', i3)
202 format(' Error: Negative Fc/mcdot !! Check equation',i3)
end
c
*deck fanpr
subroutine fanpr
c
c===========================================================
c
c
FANPR determine the range of Fan pressure ratio for
c
plotting.
c
c
FANPR is called by: itb
c
c===========================================================
c
include 'comitb.i'
c
c//////////////////////////////\\\\\\\\\\\\\\\\\\\\\\\\\\\\\
c
write(3,*) 'Subroutine FANPR'
c
open(unit=13,file='ST_PIf.dat')
open(unit=14,file='TSFC_PIf.dat')
c
WRITE(13,*) 'Title="','Specific Thrust VS Pi Fan"'
if (unitsys.eq.0.0) then
WRITE(13,*)'Variables = "`p_f","Sp. thrust [lbf/(lbm/sec)]"'
else
WRITE(13,*)'Variables = "`p_f","Sp. thrust [N/(kg/s)]"'
endif
c
WRITE(14,*) 'Title="','TSFC VS Pi Fan"'
if (unitsys.eq.0.0) then
68
WRITE(14,*)'Variables = "`p_f","TSFC [(lbm/hr)/lbf]"'
else
WRITE(14,*)'Variables = "`p_f","TSFC [(mg/(N-sec)]"'
endif
c
if (nalpha.gt.0) then
do 40 i=1,nalpha
alpha=alp(i)
write(*,*) 'alpha(',i,')=',alpha
c
if (itbsw.eq.0.) then
write(13,12)'Zone
write(14,12)'Zone
else
write(13,12)'Zone
write(14,12)'Zone
endif
T="`a = ',alpha,'(no itb)"'
T="`a = ',alpha,'(no itb)"'
T="`a = ',alpha,'(itb)"'
T="`a = ',alpha,'(itb)"'
c
alpp1 = alpha+1.0
ralpp1 = 1.0/alpp1
write(3,*) 'alpp1=',alpp1
write(3,*) 'ralpp1=',ralpp1
c
c
c
do 50 pif = ipif,fpif,dpif
call equation
if (error.eq.1.0) then
write(*,*) 'error'
go to 40
endif
write(13,11) pif,st
write(14,11) pif,tsfc
count=count+1
50
continue
40 continue
endif
c
close (13)
close (14)
return
11 format(f10.5,2x,f13.9)
12 format(a13,f5.2,a9)
end
c
*deck mach
subroutine mach
c
c===========================================================
c
c
MACH determine the range of Mach number for plotting.
c
c
MACH is called by: itb
c
c===========================================================
c
include 'comitb.i'
c
c//////////////////////////////\\\\\\\\\\\\\\\\\\\\\\\\\\\\\
69
c
write(3,*) 'Subroutine MACH'
c
open(unit=11,file='ST_M0.dat')
open(unit=12,file='TSFC_M0.dat')
c
WRITE(11,*) 'Title="','Specific Thrust VS Mach #"'
if (unitsys.eq.0.0) then
WRITE(11,*)'Variables = "M_0","Sp. thrust [lbf/(lbm/sec)]"'
else
WRITE(11,*)'Variables = "M_0","Sp. thrust [N/(kg/s)]"'
endif
c
WRITE(12,*) 'Title="','TSFC VS Mach #"'
if (unitsys.eq.0.0) then
WRITE(12,*)'Variables = "M_0","TSFC [(lbm/hr)/lbf]"'
else
WRITE(12,*)'Variables = "M_0","TSFC [mg/(N-sec)]"'
endif
c
c
if (nalpha.gt.0) then
do 20 i=1,nalpha
alpha=alp(i)
write(*,*) 'alpha(',i,')=',alpha
count=0
if (itbsw.eq.0.) then
write(11,12)'Zone T="`a = ',alpha,'(no itb)"'
write(12,12)'Zone T="`a = ',alpha,'(no itb)"'
else
write(11,12)'Zone T="`a = ',alpha,'(itb)"'
write(12,12)'Zone T="`a = ',alpha,'(itb)"'
endif
c
alpp1 = alpha+1.0
ralpp1 = 1.0/alpp1
write(3,*) 'alpp1=',alpp1
write(3,*) 'ralpp1=',ralpp1
c
do 10 M0 = iM0,fM0,dM0
call equation
if (error.eq.1.0) then
write(*,*) '!!error!!'
go to 20
endif
write(11,11) M0,st
write(12,11) M0,tsfc
10
continue
20 continue
endif
c
close(11)
close(12)
return
11 format(f10.5,2x,f13.7)
12 format(a13,f5.2,a9)
end
c
70
*deck rinput
subroutine rinput
c
c===========================================================
c
c
RINPUT reads the 'input' data file.
c
c
RINPUT is called by: itb
c
c===========================================================
c
include 'comitb.i'
character *10 id(4)
c
c//////////////////////////////\\\\\\\\\\\\\\\\\\\\\\\\\\\\\
c
read (1,310) id(1),unitsys
write(3,310) ' unitsys',unitsys
c
read (1,310) id(1),itbsw
write(3,310) ' itbsw ',itbsw
c
read (1,310) id(1),T0
write(3,310) ' T0
',T0
c
read (1,310) id(1),gamac,id(2),cpc
write(3,310) ' gamac ',gamac,' cpc
',cpc
c
read (1,310) id(1),gamab,id(2),cpb
write(3,310) ' gamab ',gamab,' cpb
',cpb
c
read (1,310) id(1),gamat,id(2),cpt
if (itbsw.eq.0.0) then
cpt = cpb
gamat = gamab
endif
write(3,310) ' gamat ',gamat,' cpt
',cpt
c
read (1,310) id(1),hprb,id(2),hpritb
write(3,310) ' hprb
',hprb, ' hpritb ',hpritb
c
read (1,310) id(1),pidmax,id(2),pib,id(3),piitb
if (itbsw.eq.0.0) piitb = 1.0
write(3,310) ' pidmax ',pidmax,' pib
',pib,
&
' piitb ',piitb
c
read (1,310) id(1),pin,id(2),pifn
write(3,310) ' pin
',pin,' pifn
',pifn
c
read (1,310) id(1),ehpc,id(2),elpc,id(3),ef
write(3,310) ' ehpc
',ehpc,' elpc
',elpc,
&
' ef
',ef
c
read (1,310) id(1),ehpt,id(2),elpt
write(3,310) ' ehpt
',ehpt,' elpt
',elpt
c
read (1,310) id(1),effb,id(2),effitb
71
write(3,310) ' effb
',effb,' effitb ',effitb
c
read (1,310) id(1),effmhpt,id(2),effmlpt
write(3,310) ' effmhpt',effmhpt,' effmlpt',effmlpt
c
read (1,310) id(1),p0op10,id(2),p0op19
write(3,310) ' p0op10 ',p0op10,' p0op19 ',p0op19
c
read (1,310) id(1),Tt4,id(2),Tt6
write(3,310) ' Tt4
',Tt4,' Tt6
',Tt6
c
return
310 format(a8,f14.8)
311 format(a8,i5)
end
c
*deck select
subroutine select
c===========================================================
c
c
SELECT allows user to specify the desired plots.
c
c
SELECT is called by: itb
c
c===========================================================
c
include 'comitb.i'
CHARACTER *2 try
c
c///////////////////////////////\\\\\\\\\\\\\\\\\\\\\\\\\\\\
c
1
write(*,*)
write(*,*) 'Please choose a plot:'
write(*,*) '--------------------'
write(*,*) '(1)'
write(*,*) '
a. Specific Thrust vs Mach Number'
write(*,*) '
b. TSFC vs Mach Number'
write(*,*) '(2)'
write(*,*) '
a. Specific Thrust vs Compressor Pres.Ratio'
write(*,*) '
b. TSFC vs Compressor Pres.Ratio'
write(*,*) '
c. Fuel-air Ratio vs Compressor Pres.Ratio'
write(*,*) '(3)'
write(*,*) '
a. Specific Thrust vs Fan Pres.Ratio'
write(*,*) '
b. TSFC vs Fan Pres.Ratio'
write(*,*) '(4)'
write(*,*) '
a. Specific Thrust vs Bypass Ratio'
write(*,*) '
b. TSFC vs Bypass Ratio'
write(*,*) '--------------------'
write(*,*) '(1~4)?'
read (*,*) plot
c
if (plot.lt.1.or.plot.gt.4) then
write(*,*) '!!Invalid selction number!!'
write(*,*) ' Try again (y/n)?'
read (*,*) try
if (try.eq.'y'.or.try.eq.'Y') go to 1
endif
72
c
c +++ Plot 1
c
if (plot.eq.1) then
write(*,*) 'Initial M0 (iM0):'
read (*,*) iM0
2
write(*,*) 'Final M0 (fM0):'
read (*,*) fM0
c
if (fM0.le.iM0) then
write(*,*) ' >>Error: iM0 >= fM0 !!'
go to 2
endif
c
write(*,*) 'Delta M0 (dM0):'
read (*,*) dM0
write(*,*) 'HPC Pressure Ratio (pihpc):'
read (*,*) pihpc
write(*,*) 'LPC Pressure Ratio (pilpc):'
read (*,*) pilpc
write(*,*) 'Fan Pressure Ratio (pif):'
read (*,*) pif
endif
c
c +++ Plot 2
c
if (plot.eq.2) then
write(*,*) 'LPC Pressure Ratio (pilpc):'
read (*,*) pilpc
write(*,*) 'Constant between LPC & HPC (scalec):'
write(*,*) ' i.e. HPC = scalec*LPC'
read (*,*) scalec
c
pihpc = scalec*pilpc
ipic = scalec*pilpc*pilpc
write(*,'(a6,f6.2)') ' HPC =',pihpc
write(*,'(a21,f6.2)') ' Initial pic (ipic) =',ipic
3
write(*,*) 'Final pic (fpic):'
read (*,*) fpic
c
if (fpic.le.ipic) then
write(*,*) ' >>Error: ipic >= fpic'
go to 3
endif
c
write(*,*) 'Delta pic (dpic):'
read (*,*) dpic
write(*,*) 'Fan Pressure Ratio (pif):'
read (*,*) pif
write(*,*) 'Mach Number (M0):'
read (*,*) M0
endif
c
c +++ Plot 3
c
if (plot.eq.3) then
4
write(*,*) 'Initial pif (ipif):'
73
read (*,*) ipif
c
if (ipif.le.1.0) then
write(*,*)'>>Error: "ipif" has to be greater than 1.0'
go to 4
endif
c
5
write(*,*) 'Final pif (fpif):'
read (*,*) fpif
c
if (fpif.le.ipif) then
write(*,*) ' >>Error: ipif >= fpif'
go to 5
endif
c
write(*,*)
read (*,*)
write(*,*)
read (*,*)
write(*,*)
read (*,*)
write(*,*)
read (*,*)
endif
'Delta pif (dpif):'
dpif
'HPC Pressure Ratio (pihpc):'
pihpc
'LPC Pressure Ratio (pilpc):'
pilpc
'Mach number (M0):'
M0
c
c +++ Plot 4
c
if (plot.eq.4) then
write(*,*) 'Initial alpha (ialp):'
read (*,*) ialp
6
write(*,*) 'Final alpha (falp):'
read (*,*) falp
c
if (falp.le.ialp) then
write(*,*) ' >>Error: ialp >= falp'
go to 6
endif
c
write(*,*) 'Delta alpha (dalp):'
read (*,*) dalp
write(*,*) 'HPC Pressure Ratio (pihpc):'
read (*,*) pihpc
write(*,*) 'LPC Pressure Ratio (pilpc):'
read (*,*) pilpc
write(*,*) 'Mach number (M0):'
read (*,*) M0
write(*,*)
write(*,*) 'Plot at different fan pres. ratio (pif)'
write(*,*) '---------------------------------------'
write(*,*) 'Number of pif (npif):'
read (*,*) npif
write(*,*) 'Please input',npif,' pif(s):'
do 7 i=1,npif
write(*,*) 'pif',i,' ->'
read (*,*) pi_f(i)
7 continue
endif
74
c
8
if (plot.le.3) then
write(*,*)
write(*,*) 'Plot at different bypass ratio (alpha)'
write(*,*) '--------------------------------------'
write(*,*) 'Number of alpha (nalpha):'
read (*,*) nalpha
write(*,*) 'Please input',nalpha,' alpha(s):'
do 8 i=1,nalpha
write(*,*) 'alpha',i,' ->'
read (*,*) alp(i)
continue
endif
c
return
end
c
*deck start
subroutine start
c===========================================================
c
c
START performs initialization for 'itb' run.
c
c
START is the first subroutine called by the driver.
c
c
START is called by: itb
c
c===========================================================
c
include 'comitb.i'
logical present
c
c///////////////////////////////\\\\\\\\\\\\\\\\\\\\\\\\\\\\
c
open(unit=3,file='check')
c +++
c +++ ensure that 'input' file exists
c +++
inquire(file='input',exist=present)
if(.not.present) then
write(*,300)
write(3,300)
call exit(0)
endif
c
open(unit=1,file='input')
read (1,301) name
write(3,301) name
300 format(' data file input is missing: run aborted')
301 format(a80)
return
end
75
Variable initialization: comitb.i
*deck comitb
c
c
implicit double precision (a-h,o-z)
parameter (na=10,ncomp=1000)
c
na = maximum number of different alpha values
c
REAL M0,iM0,M10,M19,num,ipic,ialp,ipif,itbsw
CHARACTER *80 name
c
common /inputs/ unitsys,itbsw,T0,gamac,cpc,gamab,cpb,
1 gamat,cpt,hprb,hpritb,pidmax,pib,piitb,pin,pifn,ehpc,
2 elpc,ef,ehpt,elpt,effb,effitb,effmhpt,effmlpt,p0op10,
3 p0op19,Tt4,Tt6,M0,iM0,dM0,fM0,pihpc,pilpc,pic,ipic,
4 dpic,fpic,tpilpc(ncomp),tpihpc(ncomp),scalec,pif,ipif,
5 dpif,fpif,npif,pi_f(na),ialp,dalp,falp,nalpha,alpha,
6 alp(na),taud,plot
c
common /outputs/ f,st,tsfc
c
common /equations/ rc,rb,rt,a0,v0,taur,pir,effr,pid,taulb,
1 taulitb,tauhpc,taulpc,tauf,tauc,taub,effhpc,efflpc,efff,
2 fb,tauhpt,fitb,tauitb,Tt6oTt2,taulpt,pihpt,pilpt,effhpt,
3 efflpt,pt10op10,Tt10oT0,t10oT0,M10,v10oa0,pt19op19,M19,
4 Tt19oT0,T19oT10,v19oa0,fcomc,ffomf
c
common /constants/ gc,rgc,ecvrn,gcm1ogc,gbm1ogb,gtm1ogt,
1 rgcm1ogc,denom,fp1,rgtm1ogt,rehpt,relpt,num,pt10rgt,
2 rgtm1,term,rgcm1,pt19rgc,rgamac,alpp1,ralpp1,rgamat,
3 rgamab,Tt4oT0,Tt6oT0,cpbocpc,cptocpc,cpcocpb,rehpc,
4 relpc,denom1,denom2,rtorc,error
c
common /chardat/ name
c
76
Input data file: input
/062302/ ITB
unitsys 0.0
itbsw
1.0
T0
390.0
gamac
1.39999
cpc
0.239
gamab
cpb
0.277
gamat
cpt
hprb
1.27284
1.27882
0.274
18400.0
hpritb 18400.0
pidmax 0.99
pib
0.96
piitb
0.96
pin
0.99
pifn
1.3
ehpc
elpc
ef
ehpt
0.9066
0.9036
0.8961
0.9029
elpt
0.9174
effb
0.999
effitb 0.999
effmhpt 0.92
effmlpt 0.93
p0op10 0.9
p0op19 0.9
Tt4
3214.07
Tt6
2814.92
77
References
1. Mattingly, J. D., Elements of Gas Turbine Propulsion, McGraw-Hill series in
mechanical engineering, McGraw Hill, Inc. Singapore 1996.
2. Model Specification for Engines, Aircraft, Turbojet, Military Specification MIL-E5008B, Department of Defense. January 1959
3. F. Liu, W.A. Sirignano, “Turbojet and Turbofan Engine Performance Increases
Through Turbine Burners,” Journal of Propulsion and Power, Vol. 17, No. 3, May-June
2001, pp 695-705.
78
Download