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 mITB 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 PRb b mc mb m4 C pb T t 4 15 (3.15) Multiplying the above equation with c r b hPRb 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 PRb 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 mHPT 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 PRb 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