Propulsion system
A turbofan model is provided in TASOPT.jl
Turbofan model
TASOPT.engine.tfcalc!
— Functiontfcalc(pari,parg,para,pare, ip, icall,icool,initeng)
Calls function tfsize or tfoper for one operating point.
🔃 Inputs and Outputs
Input:
icall
: 0 call on-design sizing routine tfsize 1 call off-design analysis routine tfoper, specified Tt4 2 call off-design analysis routine tfoper, specified Feicool
: 0 use zero cooling mass flow ratio regardless 1 use specified cooling flow ratios epsrow(.), calculate Tmrow(.) 2 use specified metal temperatures Tmrow(.) , calculate epsrow(.)initeng
: 0 initialize variables for iteration in TFOPER 1 use current variables as initial guesses in TFOPER
TASOPT.engine.tfsize!
— Functiontfsize!(gee, M0, T0, p0, a0, M2, M25,
Feng, Phiinl, Kinl, iBLIc,
BPR, pif, pilc, pihc,
pid, pib, pifn, pitn,
Ttf, ifuel, etab,
epf0, eplc0, ephc0, epht0, eplt0,
pifK, epfK,
mofft, Pofft,
Tt9, pt9, Tt4,
epsl, epsh,
icool,
Mtexit, dTstrk, StA, efilm, tfilm,
M4a, ruc,
ncrowx, ncrow,
epsrow, Tmrow,
Δh_PreC, Δh_InterC, Δh_Regen, Δh_TurbC,
Δp_PreC, Δp_InterC, Δp_Regen)
Turbofan performance and sizing routine.
Calculation procedure follows that of Kerrebrock, but the usual gas property formulas are replaced by function calls, which can therefore implement more general gas models. In addition, a turbine cooling model is added.
The gas routines reside in the following source files: gascalc.f Routines for various processes (compressor, turbine, combustor, etc) gasfun.f Routines for computing cp[T], h[t], sigma[T], R, called by the routines in gascalc.f
🔃 Inputs and Outputs
Inputs:
gee
: gravity accelerationM0
: freestream MachT0
: freestream temperature [K]p0
: freestream pressure [Pa]M2
: fan-face Mach numberM25
: HPC-face Mach numberFeng
: required net thrust (PKinl+PKout-Phi_jet)/u0 = sum( mdot u)Phiinl
: inlet ingested dissipationiBLIc
: 0=core in clear flow, 1=core sees PhiinlBPR
: bypass ratio = mdotfan/mdotcorepif
: fan pressure ratio ( = pt7 /pt2)pilc
: LP comp pressure ratio ( = pt25/pt2)pihc
: HP comp pressure ratio ( = pt3 /pt25)pid
: diffuser pressure ratio ( = pt2 /pt0)pib
: burner pressure ratio ( = pt4 /pt3)pifn
: fan nozzle pressure ratio ( = pt7/pt2.1)pitn
: turbine nozzle pressure ratio ( = pt5/pt4.9)Ttf
: fuel temperature entering combustorifuel
: fuel index, see function gasfun (in gasfun.f)hvap
: fuel enthalpy of vaporization (J/kg)etab
: combustor efficiency (fraction of fuel burned)epf0
: fan max polytropic efficiencyeplc0
: LPC max polytropic efficiencyephc0
: HPC max polytropic efficiencyepht0
: HPT max polytropic efficiencyeplt0
: LPT max polytropic efficiencypifK
: fan efficiency FPR offset: epolf = epf0 + epfK*(pif-pifK)epfK
: fan efficiency pif derivativemofft
: mass flow offtake at LPC discharge station 2.5Pofft
: low spool power offtakeTt9
: offtake air discharge total temperaturept9
: offtake air discharge total pressureepsl
: low spool power loss fractionepsh
: high spool power loss fraction`icool turbine cooling flag 0 = no cooling, ignore all cooling parameters below 1 = usual cooling, using passed-in fcool 2 = usual cooling, but set (and return) fcool from Tmetal
Mtexit
: turbine blade-row exit Mach, for setting temperature dropsdTstrk
: hot-streak temperature delta {K}, used only if icool=2StA
: area-weighted Stanton number , used only if icool=2M4a
: effective Mach at cooling-flow outlet (start of mixing)ruc
: cooling-flow outlet velocity ratio, u/uencrowx
: dimension of epsrow arrayncrow
: number of blade rows requiring coolingepsrow(.)
: input specified cooling-flow bypass ratio if icool=1 output resulting cooling-flow bypass ratio if icool=2Tmrow(.)
: input specified metal temperature [K] if icool=2 output resulting metal temperature [K] if icool=1Outputs:
epsrow(.)
: see aboveTmrow(.)
: see aboveTSFC
: thrust specific fuel consumption = mdot_fuel g / F [1/s]Fsp
: specific thrust = F / (mdot u0) = F / ((1+BPR) mdot_core u0)hfuel
: fuel heating value [J / kg K]ff
: fuel mass flow fraction = mdotfuel / mdotcoremcore
: core mass flow = mdot_core [kg/s]A2
: fan-face area [m^2]A25
: HPC-face area [m^2]A5
: core nozzle area [m^2]A7
: fan nozzle area [m^2]A6
: core plume area [m^2]A8
: fan plume area [m^2]Tt?
: total temperatureht?
: total complete enthalpy (includes heat of formation)pt?
: total pressurecpt?
: specific heat at stagnation temperature (= dh/dT)Rt?
: gas constant at stagnation conditionsT?
: static temperatureu?
: velocityepf
: fan polytropic efficiencyeplc
: LPC polytropic efficiencyephc
: HPC polytropic efficiencyepht
: HPT polytropic efficiencyeplt
: LPT polytropic efficiencyetaf
: fan overall efficiencyetalc
: LPC overall efficiencyetahc
: HPC overall efficiencyetaht
: HPT overall efficiencyetalt
: LPT overall efficiencyLconv
: T if convergence was successful, F otherwise
The "?" symbol denotes the station index: 0 freestream 18 fan face outside of casing BLs 19 fan face over LPC portion 2 fan face over fan portion 21 fan exit 25 LPC exit, HPC inlet 3 compressor exit 4 combustor exit before cooling air addition 41 turbine inlet after cooling air addition 45 HPT exit, LPT inlet 49 LPT exit 5 core nozzle 6 core flow downstream 7 fan nozzle 8 fan flow downstream
TASOPT.engine.tfweight
— Function tfweight(iengwgt, Gearf, OPR, BPR, mdotc, dfan, rSnace,
dlcomp, neng, feadd, fpylon, HXs, HX_add_mass_frac)
Engine weight estimation function using Giulia Pantalone, Drela, or Fitzgerald model.
🔃 Inputs and Outputs
Input:
iengwgt
: Engine model index, Drela=0, Fitzgerald=1, and Pantalone>=3,OPR
: Overall pressure ratio.BPR
: By-pass ratio.mdotc
: Engine core mass flow rate.dfan
: Fan diameter.rSnace
:dlcomp
:neng
: Number of engines.feadd
: Fuel system weight ratio.fpylon
: Pylon weight fraction.HXs
: vector with heat exchanger performance dataHX_add_mass_frac
: added mass fraction to heat exchangers
Output:
Weng
: Total engine weight.Wnac
: Nacelle weight.Webare
: Bare engine weight.Snace1
: Nacelle area.
Turbofan Maps
TASOPT.engine.Ncmap
— MethodNcmap(pratio, mb, piD, mbD, NbD, Cmap)
Calculates compressor or fan corrected speed as a function of pressure ratio and corrected mass flow
🔃 Inputs and Outputs
Inputs:
pratio
: pressure ratiomb
: corrected mass flowpiD
: design pressure ratiombD
: design corrected mass flowNbD
: design corrected speedCmap(.)
: map constants
Outputs:
Nb
: wheel speedNb_?
: derivatives
TASOPT.engine.ecmap
— Methodecmap(pratio, mb, piD, mbD, Cmap, effo, piK, effK)
Calculates compressor or fan efficiency as a function of pressure ratio and corrected mass flow
🔃 Inputs and Outputs
Inputs:
pratio
: pressure ratiomb
: corrected mass flowpiD
: design pressure ratiombD
: design corrected mass flowCmap(.)
: map constantseffo
: maximum efficiencypiK
: pi-dependence offset eff = effo + effK*(pi-piK)effK
: pi-dependence slope
Outputs:
eff
: efficiencyeff_?
: derivatives
TASOPT.engine.Ncmap1
— MethodNcmap1(pratio, m, piD, mbD, NbD, ABCDm, iabcd, Tr, pr)
Calculates compressor or fan efficiency as a function of pressure ratio and corrected mass flow
🔃 Inputs and Outputs
Inputs:
pratio
: pressure ratiomb
: corrected mass flowpiD
: design pressure ratiombD
: design corrected mass flowNbD
: design corrected speedABCDm
: map constantsiabcd
: map exponentsTr
: T/Trefpr
: p/pref
Outputs:
N
: wheel speedN_?
: derivatives
TASOPT.engine.ecmap1
— Methodecmap1(pratio, m, piD, mbD, ABCDm, iabcd, effo, Tr, pr)
Calculates compressor or fan efficiency as a function of pressure ratio and mass flow
🔃 Inputs and Outputs
Inputs:
pratio
: pressure ratiomb
: corrected mass flowpiD
: design pressure ratiombD
: design corrected mass flowABCDm
: map constantsiabcd
: map exponentseffo
: maximum efficiencyTr
: T/Trefpr
: p/pref
Outputs:
eff
: efficiencyeff_?
: derivatives
TASOPT.engine.etmap
— Methodetmap(dh, mb, Nb, piD, mbD, NbD, ept0, Tmap, Tt, cpt, Rt)
Calculates turbine efficiency as a function of work and corrected mass flow
🔃 Inputs and Outputs
Inputs:
dh
: enthalpy changemb
: corrected mass flowNb
: corrected speedpiD
: design pressure ratiombD
: design corrected mass flowNbD
: design corrected speedept0
: turbine polytropic efficiency estimateTmap(.)
: map constants
Outputs:
eff
: efficiencyeff_?
: derivatives
TASOPT.engine.Pimap
— MethodPimap(mb, Nb, piD, mbD, NbD, Cmap)
Calculates compressor or fan pressure ratio as a function of pressure ratio and corrected mass flow
🔃 Inputs and Outputs
Inputs:
mb
: corrected mass flowNb
: corrected speedpiD
: design pressure ratiombD
: design corrected mass flowNbD
: design corrected speedCmap(.)
: map constants
Outputs:
pratio
: pressure ratiopi_?
: derivatives
TASOPT.engine.tfoper!
— Functionfunction tfoper!(gee, M0, T0, p0, a0, Tref, pref, Phiinl, Kinl, iBLIc, pid, pib, pifn, pitn, Gearf, pifD, pilcD, pihcD, pihtD, piltD, mbfD, mblcD, mbhcD, mbhtD, mbltD, NbfD, NblcD, NbhcD, NbhtD, NbltD, A2, A25, A5, A7, iTFspec, Ttf, ifuel, etab, epf0, eplc0, ephc0, epht0, eplt0, pifK, epfK, mofft, Pofft, Tt9, pt9, epsl, epsh, icool, Mtexit, dTstrk, StA, efilm, tfilm, M4a, ruc, ncrowx, ncrow, epsrow, Tmrow, Feng, M2, pif, pilc, pihc, mbf, mblc, mbhc, Tt4, pt5, mcore, M25)
Turbofan operation routine
Calculation procedure follows that of Kerrebrock,
but the usual gas property formulas are replaced
by function calls, which can therefore implement
more general gas models.
In addition, a turbine cooling model is added.
The gas routines reside in the following source files:
gascalc.f Routines for various processes
(compressor, turbine, combustor, etc)
gasfun.f Routines for computing cp[T], h[t], sigma[T], R,
called by the routines in gascalc.f
🔃 Inputs and Outputs
Inputs:
gee
: gravity accelerationM0
: freestream MachT0
: freestream temperature [K]p0
: freestream pressure [Pa]Tref
: reference temperature for corrected mass flow and speedpref
: reference pressure for corrected mass flowPhiinl
: inlet ingested dissipation Phi_inliBLIc
: 0=core in clear flow, 1=core sees Phiinlpid
: diffuser pressure ratio ( = pt2/pt0)pib
: burner pressure ratio ( = pt4/pt3)pifn
: fan nozzle pressure ratio ( = pt7/pt6.9)pitn
: turbine nozzle pressure ratio ( = pt5/pt4.9)Gearf
: fan gear ratio ( = Nl/Nf )pifD
: design fan pressure ratio ( = pt21/pt2 )pilcD
: design LPC pressure ratio ( = pt25/pt19)pihcD
: design HPC pressure ratio ( = pt3 /pt25)pihtD
: design HPT pressure ratio ( = pt45/pt41)piltD
: design LPT pressure ratio ( = pt49/pt45)mbfD
: design corrected fan mass flow ( = mf*sqrt(Tt2 /Tref)/(pt2 /pref) )mblcD
: design corrected LPC mass flow ( = mc*sqrt(Tt19/Tref)/(pt19/pref) )mbhcD
: design corrected HLC mass flow ( = mc*sqrt(Tt25/Tref)/(pt25/pref) )mbhtD
: design corrected HPT mass flow ( = mt*sqrt(Tt41/Tref)/(pt41/pref) )mbltD
: design corrected LPT mass flow ( = mt*sqrt(Tt45/Tref)/(pt45/pref) )NbfD
: design corrected fan speed ( = Nf/sqrt(Tt2 /Tref) )NblcD
: design corrected LPC speed ( = Nl/sqrt(Tt19/Tref) )NbhcD
: design corrected HPC speed ( = Nh/sqrt(Tt25/Tref) )NbhtD
: design corrected HPT speed ( = Nh/sqrt(Tt41/Tref) )NbltD
: design corrected LPT speed ( = Nl/sqrt(Tt45/Tref) )A2
: fan-face area [m^2] mf = mcBPR, mt = mc(1+ff)A25
: HPC-face area [m^2]A5
: core nozzle area [m^2]A7
: fan nozzle area [m^2]iTFspec
: = 1 Tt4 is specified = 2 Feng is specifiedTt4
: turbine-inlet total temperature [K]Ttf
: fuel temperature entering combustorifuel
: fuel index, see function gasfun (in gasfun.f)hvap
: fuel enthalpy of vaporization (J/kg)etab
: combustor efficiency (fraction of fuel burned)epf0
: max fan polytropic efficiencyeplc0
: LPC max polytropic efficiencyephc0
: HPC max polytropic efficiencyepht0
: HPT max polytropic efficiencyeplt0
: LPT max polytropic efficiencypifK
: fan efficiency FPR offset: epolf = epf0 + epfK*(pif-pifK)epfK
: fan efficiency pif derivativemofft
: mass flow offtake at LPC discharge station 2.5Pofft
: low spool power offtakeTt9
: offtake air discharge total temperaturept9
: offtake air discharge total pressureepsl
: low spool power loss fractionepsh
: high spool power loss fractionicool
: turbine cooling flag 0 = no cooling, ignore all cooling parameters below 1 = usual cooling, using passed-in fc 2 = usual cooling, but set (and return) fc from TmetalMtexit
: turbine blade-row exit Mach, for setting temperature dropsTmetal
: specified metal temperature [K], used only if icool=2dTstrk
: hot-streak temperature delta {K}, used only if icool=2StA
: area-weighted Stanton number , used only if icool=2M4a
: effective Mach at cooling-flow outlet (start of mixing)ruc
: cooling-flow outlet velocity ratio, u/uencrowx
: dimension of epsrow arrayncrow
: number of blade rows requiring coolingepsrow(.)
: input specified cooling-flow bypass ratio if icool=1 output resulting cooling-flow bypass ratio if icool=2Tmrow(.)
: input specified metal temperature [K] if icool=2 output resulting metal temperature [K] if icool=1Output:
epsrow(.)
: see aboveTmrow(.)
: see aboveTSFC
: thrust specific fuel consumption = mdot_fuel g / F [1/s]Fsp
: specific thrust = F / (mdot u0) = F / ((1+BPR) mdot_core u0)hfuel
: fuel heating value [J / kg K]ff
: fuel mass flow fraction = mdotfuel / mdotcoreFeng
: net effective thrust = (PKinl+PKout-Phi_jet)/u0 = sum( mdot u)mcore
: core mass flow = mdot_core [kg/s]BPR
: bypass ratio = mdotfan/mdotcoreTt?
: total temperatureht?
: total complete enthalpy (includes heat of formation)pt?
: total pressurecpt?
: specific heat at stagnation temperature (= dh/dT)Rt?
: gas constant at stagnation conditionsT?
: static temperatureu?
: velocityetaf
: fan overall efficiencyetac
: compressor overall efficiencyetatf
: fan-turbine overall efficiencyetatc
: comp-turbine overall efficiencyLconv
: T if convergence was successful, F otherwise
The "?" symbol denotes the station index: 0 freestream 18 fan face outside of casing BLs 19 fan face over LPC portion 2 fan face over fan portion 21 fan exit, precooler inlet 19c precooler outlet, LPC inlet 25 LPC exit, intercooler inlet 25c intercooler exit, HPC inlet 3 compressor exit 4 combustor exit before cooling air addition 41 turbine inlet after cooling air addition 45 HPT exit, LPT inlet 49 LPT exit, regenerative cooler inlet 49c regenerative cooler outlet 5 core nozzle 6 core flow downstream 7 fan nozzle 8 fan flow downstream
Turbofan Cooling
TASOPT.engine.mcool
— Methodmcool(ncrowx, Tmrow, Tt3, Tt4, dTstreak, Trrat, efilm, tfilm, StA)
Calculates cooling mass flow requirement.
🔃 Inputs and Outputs
Inputs:
ncrowx
: dimension of Tmrow(.),epsrow(.) arrays (max number of blade rows)Tmrow(.)
: design metal temperature for each blade rowTt3
: cooling flow temperatureTt4
: hot gas temperature from burnerdTstreak
: hot-streak temperature increase over Tt4, for first blade rowTrrat
: static temperature ratio across each blade row, T4.1 / T4efilm
: cooling efficiency = (Tco-Tci)/(Tmetal-Tci)tfilm
: film effectiveness = (Tgas-Tfaw)/(Tgas-Tco) Tco = temperature of cooling air exiting blade Tci = temperature of cooling air entering blade Tfaw = film adiabatic wall temperature (for insulated-wall case) StA`: area-weighted external Stanton number = St (Asurf/Aflow) cpgas/cpcool
Output:
ncrow
: number of blade rows which need coolingepsrow(.)
: cooling mass flow ratio for each blade row, mcrow/m_air
TASOPT.engine.Tmcalc
— MethodTmcalc(ncrowx, ncrow, Tt3, Tt4, dTstreak, Trrat, efilm, tfilm, StA, epsrow)
Calculates metal temperature for blade row
🔃 Inputs and Outputs
Inputs:
ncrowx
: dimension of Tmrow(.),epsrow(.) arrays (max number of blade rows)ncrow
: number of blade rows which are cooledepsrow(.)
: cooling mass flow ratio for each blade row, mcrow/m_airTt3
: cooling flow temperatureTt4
: hot gas temperature from burnerdTstreak
: hot-streak temperature increase over Tt4, for first blade rowTrrat
: static temperature ratio across each blade row, T4.1 / T4efilm
: cooling efficiency = (Tco-Tci)/(Tmetal-Tci)tfilm
: film effectiveness = (Tgas-Tfaw)/(Tgas-Tco) Tco = temperature of cooling air exiting blade Tci = temperature of cooling air entering blade Tfaw = film adiabatic wall temperature (for insulated-wall case)StA
: area-weighted external Stanton number = St (Asurf/Aflow) cpgas/cpcoolOutput:Tmrow(.)
: design metal temperature for each blade row