Sei sulla pagina 1di 111

UNIVERSITÀ DEGLI STUDI DI PADOVA

FACOLTÀ DI INGEGNERIA

DIPARTIMENTO DI INGEGNERIA MECCANICA

Corso di laurea triennale in Ingegneria Aerospaziale

IMPLEMENTAZIONE DI UN PROGRAMMA
DI CALCOLO PER L’ACCOPPIAMENTO
(“MATCHING”) TRA I COMPONENTI DI UN
TURBOFAN TRIALBERO

Tesi di laurea

Relatore: Ch.mo Prof. ERNESTO BENINI


R

Laureando: GIOVANNI MEDICI

Anno Accademico 2005-2006


Sommario

II • Matching tra componenti di un turbofan


Sommario

Sommario

N
el presente elaborato si fornisce una descrizione dettagliata delle tecniche adottate per implemen-
tare un algoritmo di calcolo che permetta uno studio delle condizioni di progetto e fuori progetto
relative ad un motore turbofan trialbero, il tutto partendo da un numero esiguo di informazioni.
La piattaforma di calcolo utilizzata è il pacchetto Matlab 7 versione completa.
L’implementazione permette di analizzare, con soddisfacente dettaglio, le caratteristiche di un generico
propulsore in fase di progetto senza passare allo studio fluidodinamico e alla progettazione delle palette dei
componenti. Si tratta quindi di uno strumento per economizzare il tempo e le risorse in fase di analisi.
Nell’ottimizzazione delle condizioni di progetto il programma provvede a calcolare, partendo dalle condi-
zioni di contorno, tutte le informazioni relative alla macchina, stadio per stadio, in una tipologia di approccio
nota come black box; per fare ciò utilizza le leggi classiche, tenendo conto però della variabilità di parametri
come k e cp in funzione della temperatura.
Passando alle condizioni fuori progetto il programma di calcolo opera un adattamento delle mappe di fan,
compressori e turbine utilizzando dei procedimenti riconosciuti in letteratura; successivamente si compie una
ricerca delle linee operative del propulsore sulle stesse mappe adattate.

Matching tra componenti di un turbofan • III


Indice

IV • Matching tra componenti di un turbofan


Indice

Indice

Introduzione ...................................................................................................................... 1
Legenda ............................................................................................................................. 5
Descrizione del ciclo termodinamico ............................................................................ 9
Presa dinamica ............................................................................................................ 11
Fan ............................................................................................................................... 12
C
Compressori ................................................................................................................. 14
Camera di combustione ............................................................................................... 15
C
Turbine ......................................................................................................................... 17
Ugello di scarico ......................................................................................................... 19
Calcolo delle grandezze prestazionali ......................................................................... 20
Comportamento di un turbofan fuori progetto ............................................................. 23
Compressore fuori progetto ......................................................................................... 25
Turbina fuori progetto ................................................................................................. 27
Comportamento di due turbine in serie ....................................................................... 28
Metodi per la parametrizzazione delle mappe.............................................................. 31
Parametrizzazione compressori................................................................................... 33
Parametrizzazione di turbine ed ugello ....................................................................... 37
Ottimizzazione e matching fuori progetto .................................................................... 41
Ottimizzazione scelte di progetto ................................................................................. 42
Algoritmo di matching ................................................................................................. 46
Scelte di programmazione ............................................................................................... 55
Acquisizione dei grafici ............................................................................................... 56
Appendice A...................................................................................................................... 63
Conclusioni ....................................................................................................................... 101
Bibliografia ........................................................................................................................ 103

Matching tra componenti di un turbofan • V


Introduzione

VI • Matching tra componenti di un turbofan


Introduzione

Introduzione

Q
uesto studio di tesi ha come fine ultimo quello di poter tracciare delle mappe con delle linee opera-
tive attendibili per ogni singolo componente di un turbofan trialbero.
Il suddetto propulsore ha come caratteristiche un’elevata elasticità di fronte a tutte le condizioni
di progetto. Si tratta inoltre della scelta adottata dai costruttori nelle più recenti applicazioni, basti pensare al
Trent 900 (propulsore Rolls-Royce che sarà montato sull’ A-380); per questo motivo si è deciso di analizzare
questa tipologia di propulsore.
Per contro questa elasticità cela una maggior difficoltà costruttiva, che si traduce anche in un’analisi più
difficoltosa. La presenza di tre alberi indipendenti infatti impone un maggior numero di condizioni (rispetto
ad esempio ad una scelta bialbero), ciò comporta la necessità di far ricorso ad un gran numero di iterazioni,
il tutto non certo a beneficio della velocità di elaborazione. Infatti pur essendo gli alberi meccanicamente
indipendenti si trovano aerodinamicamente accoppiati, quindi, date le condizioni al contorno, esiste solo un
rapporto di dosatura ed una terna di velocità degli alberi che mantenga fede alle leggi di conservazione della
massa e presti attenzione alle condizioni geometriche.
Nella prima parte dell’elaborato (Capitolo 1) si offre al lettore una descrizione dettagliata del propulsore e
si espongono le leggi utilizzate nel calcolo delle condizioni di progetto. La scelta di operare in regime di k e
cp variabili in funzione della temperatura ha di fatto eliminato la linearità nella ricerca dei valori di progetto,
imponendo in diversi casi l’uso di iterazioni e interpolazioni semplici.
Successivamente (Capitolo 2) si trova l’analisi del comportamento di un turbofan in condizioni fuori
progetto. In questa parte si rende conto della scelta di studiare solo propulsori che presentino il soffocamento

Matching tra componenti di un turbofan • 1


Introduzione

all’ugello (come si vedrà più dettagliatamente questa ipotesi permette uno studio più snello dell’andamento
ai transitori, inoltre si tratta di una condizione valida nella quasi totalità delle condizioni operative del propul-
sore).
Quindi si passa alla esposizione dei metodi di scaling delle mappe di fan, compressori e turbine (Capitolo
3). Per i componenti più delicati, fan e compressori, si è adottato il metodo esposto da Kurzke [5]. Si tratta
di una tecnica innovativa che tiene conto sia delle portate di soffocamento che della tendenza, al crescere del
rapporto di compressione, di un appiattimento delle curve. Per quanto riguarda le mappe delle turbine si è
scelto di effettuare uno scaling che tenesse conto delle portate di soffocamento nelle condizioni di progetto, e
scalasse le mappe affinché fosse verificata la condizione di accoppiamento.
Nel capitolo successivo (Capitolo 4) si espone l’algoritmo per il calcolo. Questa implementazione pur
essendo ricavata da modelli più semplici esposti in letteratura [1], è stata elaborata dallo scrivente. Si tratta
di una procedura piuttosto complessa nella quale si ricerca per via iterativa il punto operativo su ogni singola
linea di velocità adattata.
Una parte consistente di lavoro è stata svolta al fine di permettere una ripetibilità dell’esperienza e allo
stesso tempo di offrire un programma che fosse il più versatile possibile. In questo capitolo (Capitolo 5),
si scende nel dettaglio in modo da chiarire tutte le scelte e le tecniche adottate per ottenere dei risultati che
fossero attendibili. Si è prestata particolare cura e rigore nel riportare le diverse mappe (e grafici) ottenute da
letteratura (si tratta quindi di grafici stampati su carta [1] [2] [5] ).
L’elaborato si chiude con le conclusioni dell’esperienza (Capitolo 6). In appendice è possibile trovare
inoltre i tabulati di tutti i programmi che stanno alla base di tutta l’analisi qui esposta.

2 • Matching tra componenti di un turbofan


Introduzione

Matching tra componenti di un turbofan • 3


Legenda

4 • Matching tra componenti di un turbofan


Legenda

Legenda

D
i seguito si fornisce una breve legenda che rende conto di tutti i simboli e pedici che si incontre-
ranno all’interno dell’elaborato. Alcuni indici possono variare a seconda si stia parlando del flusso
caldo (gas-generator) o del flusso bypassato (flusso fan). Qui sotto vi è una rappresentazione a
blocchi del turbofan elaborato, con indicata la numerazione delle stazioni.
Nella pagina seguente sono presenti due colonne distinte: a sinistra si trovano i termini delle formule,
mentre a destra sono presenti tutti gli indici. Nella maggior parte dei casi in questo elaborato si tratta in termini
di temperature, pressioni e densità assolute, ossia considerando il carico cinetico. Per indicare queste quanti-
tà si è deciso di mantenere l’indicazione con apice 0. Una quantità che fosse sprovvista di questo apice è da
considerarsi statica.

�������� ����� �������� ��� ����� ����� ����� ���� ������ ����������� ������� ���� ������� ����� ������� ����� ������

����

��

��
������

� � � � � � � � � �� � ���

Matching tra componenti di un turbofan • 5


Legenda

Termini: Pedici:

T = Temperatura [K] ref = di riferimento


p = pressione [Pa] st = stechiometrico
ρ = densità [kg/m3] amb , 0 = ambiente
π = rapporto di compressione v = volo
φ = rapporto tra dosatura e dosatura stechio- 2 = presa dinamica

metrica d = diffusore (presa dinamica)


ṁf
f= = rapporto di dosatura is = isoentropico
ṁa
fp−c = fattore di perdita del combustore if = ingresso fan (2)
Hu = potere calorifico [kJ/kg] 2 = ingresso fan
B = rapporto di bypass ef = uscita fan (3)
η = rendimento 3 = uscita fan
h = lavoro [J] f an = fan
Rs = spinta specifica [kNs/kg] cf = compressione fan
R = spinta [kN] uf = ugello fan

T SF C = consumo specifico carburante [kg/kNs] 4 = uscita compressore media pressione


c = velocità [m/s] c = compressore media pressione
c� = compressore alta pressione
ta = turbina di alta pressione (7)
tm = turbina di media pressione (8)
tb = turbina di bassa pressione (9)
5 = compressore di alta pressione
6 = camera di combustione
7 = turbina di alta pressione
8 = turbina di media pressione
9 = turbina di bassa pressione

u = ugello

6 • Matching tra componenti di un turbofan


Legenda

Matching tra componenti di un turbofan • 7


Ciclo termodinamico

8 • Matching tra componenti di un turbofan


Ciclo termodinamico

1 Descrizione del ciclo termodinamico

��

L’
algoritmo di calcolo ha in ingresso la possibilità di inserire la quota a cui si trova il propulsore.
Questo permette di ottenere le caratteristiche ambientali di temperatura, pressione e densità.
Il programma sfrutta una tabella di calcolo che ha per riferimento alcuni valori medi, modific-
abili; in questo modo è possibile intervenire ulteriormente sulle condizioni di contorno. In figura ( fig 1.1) sono
riportati i ratei di variazione rispetto ai valori di riferimento:
�������������������

���

���

���

���
��������������������

���

���

���

FIGURA 1.1 • Il gr afico a sinistr a


��� �������������� r appresenta la variabilità di pres-
������� sione temper atur a e densità al variare
��� dell’altitudine (in ascissa).Gli anda-
�����������������
menti sono stati ottenuti da dati in
� tabella [2].
� � �� �� �� �� ��
�������������

Tref = 288.2 [K]


ρref = 1.225 [kg/m3 ]
pref = 10130 [Pa]

Calcolati i dati al contorno il programma comincia la vera e propria analisi del turbofan; lo studio avviene
supponendo i valori dei calori specifici e di conseguenza dell’esponente isoentropico k (in letteratura anglo-
sassone noto come γ ) variabili in funzione della temperatura (fig. 1.2 cit. Cumpsty). Entrambi i grafici sono
stati elaborati con la tecnica meglio descritta nel capitolo 5. Si tratta di famiglie di curve, che rappresentano la
dipendenza dalla temperatura al variare del rapporto di equivalenza.
f ṁf /ṁa
φ= =
fst (ṁf /ṁa )st

Matching tra componenti di un turbofan • 9


Ciclo termodinamico

�������������
���
���������
����

���

����

��� ���������������
��

����

���

����

��� � ����������������������������

����


��� ��� ��� ���� ���� ���� ���� ���� ����
���������������

������������
���

����

����

����
� ��������������
����
�������

���

����
�����������������������������
����
FIGURA 1.2 • I gr afici rendono
���� conto della variabilità dell’esponente
isoentropico e del calore specifico a
���� ��������� pressione costante
c con la temper atur a.
Nel caso di prodotti di combustione ed
��� aria pur a.
��� ��� ��� ���� ���� ���� ���� ���� ����
���������������

Con φ=0 si rientra nel caso di aria pura e per φ = 1 invece si analizza una miscela di combustibile-
aria in rapporto stechiometrico di combustione.

La velocità relativa rispetto al velivolo è la velocità di volo:



ca = M av k0 RTa

10 • Matching tra componenti di un turbofan


Ciclo termodinamico

Presa dinamica

La temperatura totale del fluido all’ingresso della presa dinamica si conserva perché quello all’interno del
diffusore è un moto adiabatico senza scambio di lavoro con l’esterno:

c2a
Ta0 = Ta + = T20
2cp0

Non si tratta però di un moto isoentropico: le perdite legate all’attrito tra l’aria e le pareti del diffusore
inducono un aumento dell’entropia e una diminuzione della pressione totale. I fenomeni dissipativi inevitabili
vengono quantificati tramite il rendimento isoentropico del diffusore:
0
T2is − Ta
ηd = = 0.85
T20 − Ta

La pressione totale a valle della presa dinamica è:

� �T0 �� k k−1
2
2
p02 = pa 1 + ηd 2 − 1
Ta

Matching tra componenti di un turbofan • 11


Ciclo termodinamico

Fan

Consideriamo la parte “fredda” della portata di massa complessiva del propellente, cioè quella che investe
unicamente il fan.

Le condizioni all’ingresso del fan sono: Tif0 = T20 , p0if = p02 .


La pressione totale all’uscita del fan la si calcola mediante il rapporto di compressione che nel nostro caso
è pari a 2,3. Quindi la pressione risulta:

p03 = p02 πcf


.
In figura (fig. 1.3) è riportato l’algoritmo di iterazione che in maniera lineare ricerca l’intervallo corretto
(il programma ha impostato il limite massimo a 10 iterazioni, ma si è verificato che spesso sono sufficienti
meno di 5 cicli).

������� ��� ���


� �� �������
������� ������� ����� ������� ��� ���
� � �����������
� � �

�� �� �� ��� � ���� � ��� � �
� � � ���
� � � � ���� �� ����
� � ���
� ��



�� ��������������� � ���� �
������ ����������

FIGURA 1.3 • Gr afico esplicativo del


procedimento di iter azione per il cal-
�� � ��� colo della temper atur a consider ando
la variabilità dell’esponente isoentro-
pico e del calore specifico a pressione
costante

12 • Matching tra componenti di un turbofan


Ciclo termodinamico

Di seguito è presente la formula generale per il calcolo della temperatura totale di un fan:
� 1 � k3k−1 ��
T30 = T20 1 + πcf 3
ηf

Con ηf rendimento isoentropico del fan che vale: 0,8.


La velocità dell’aria allo scarico del fan è:

� � p � k3k−1 �
a 3
cef = 2ηu f cp3 T30 1−
p03

Dove ηuf = 0, 8 , è rendimento dell’ugello del fan.

Matching tra componenti di un turbofan • 13


Ciclo termodinamico

Compressori

La restante parte “calda” della portata di massa complessiva del propellente investe il core engine e incon-
tra il compressore di bassa pressione. La trasformazione adiabatica non reversibile comporta un innalzamento
della pressione totale, definita dal rapporto di compressione πc=2,65.

p04 = p03 πc

Anche nel caso del compressore i fenomeni dissipativi sono quantificabili mediante il rendimento isoen-
tropico, che mette in relazione la trasformazione reale con una ideale realizzata senza irreversibilità:
0
T4is − T30
ηc = = 0.8
T40 − T30

La temperatura totale dell’aria all’uscita del compressore di bassa pressione è calcolata anche in questo
caso per mezzo di una iterazione che renda conto della variabilità dei calori specifici:
� 1 � k4k−1 ��
T40 = T30 1 + πc 4
ηc

Le stesse relazioni valgono per la trasformazione realizzata dal compressore di alta pressione πc’=2,35:

p05 = p04 πc

0
T5is − T40
ηc� = = 0.8
T5 − T40
0

� 1 � � k5k−1 ��
T50 = T40 1 + πc 5
ηc

Il rapporto di compressione dei compressori è relativamente basso per rispettare la limitazione sulla tem-
� �
peratura di fine compressione T50 ≤ 650 [K] posta in fase di progetto. (1)

14 • Matching tra componenti di un turbofan


Ciclo termodinamico

Camera di combustione

Una volta compressa l’aria fluisce nel combustore all’interno del quale si miscela col combustibile real-
izzando la combustione: il combustibile si ossida grazie all’ossigeno trasportato dall’aria (il comburente) e i
reagenti si trasformano in prodotti liberando calore (reazione esotermica). Poiché i gas combusti hanno com-
posizione diversa da quella dell’aria pura, i valori dei calori specifici (e del loro rapporto k) da utilizzare per
la miscela di gas che esce dal combustore cambiano.

Il processo di combustione è soggetto a perdite di carico dovute al deflusso con attrito lungo le pareti
del combustore e a irreversibilità che caratterizzano la reazione chimica stessa (mancata completezza della
combustione con generazione di incombusti). Questi due fenomeni provocano la diminuzione della pressione
totale, espressa da un parametro caratteristico di ciascun combustore detto fattore di perdita di pressione totale
fp (solitamente 0.94 ≤ fp ≤ 0.98 ).Nel nostro caso fp = 0.96

La pressione totale del flusso all’uscita del combustore risulta: p06 = p05 πc� .

La temperatura massima di ciclo è un parametro di progetto poiché è soggetta a vincoli tecnologici: la


corrente calda in uscita dal combustore deve avere una temperatura tale da non danneggiare le schiera di pale
della turbina di alta pressione posizionata a valle del combustore stesso. Il limite massimo della T6 è quindi
0

determinato dai materiali con cui sono fabbricati i componenti della turbina e in questo caso si ha:

0
T6M AX = 1388[K]

Matching tra componenti di un turbofan • 15


Ciclo termodinamico

Fissato il valore della T60 è possibile ricavare il rapporto di dosatura dall’equazione del primo principio.
� �
ṁa + ṁf cp6 T60 = ṁa cp5 T50 + ṁf Hu

cp5 T50 − cp6 T60 ṁf


f= =
cp6 T60 − Hu ṁa

Hu é il potere calorifico inferiore del combustibile, cioè l’energia termica rilasciata dal combustibile in
condizioni di combustione completa e adiabatica. Nel caso del cherosene si ha:

Hu = 45000 [kJ/kg]

16 • Matching tra componenti di un turbofan


Ciclo termodinamico

Turbine

I processi di espansione in turbina rispettano il bilancio per il quale la potenza complessivamente prodotta
eguaglia la potenza assorbita dai compressori e dal fan:

� � � � � � � �
ṁa + ṁf cp6,9 T60 − T90 = ṁa cp5,3 T50 − T30 + ṁaf an cp3 T30 − T20 Hu

Si introduce una variabile di progetto detta rapporto di by-pass, cioè il rapporto tra la portata del flusso
freddo e quella del flusso caldo:

ṁaf an
B=
ṁa

Il rapporto di by-pass è stato inserito esternamente in modo tale da ottimizzare il rendimento del ciclo e la
spinta: si è andati per iterazioni prima di ottenere il valore di by-pass opportuno. Il valore del rapporto di by-
pass di un turbofan dipende dal tipo di velivolo; valori caratteristici per propulsori civili variano da 3 a 6.
Utilizzando la definizione di B l’equazione del bilancio delle potenze può essere riscritta come:
� � � � � � � �
1 + f cp6,9 T60 − T90 = T50 − T20 cp5,2 + Bcp3,2 T30 − T20

La temperatura totale all’uscita della turbina pressione, è calcolata anche in questo caso prima per la tur-
bina di alta, poi per quella di media e infine per quella di bassa. Come per il fan e per i compressori, per rendere
conto della variabilità dei calori specifici, si è effettuato in ciclo iterativo per il calcolo della temperatura cor-
retta, qui è riportato solo il valore finale:
� �
T50 − T40 cp5
T70 = T60 − � �
1 + f cp7

Applicando lo stesso bilancio tra potenza prodotta dalla turbina di bassa pressione e potenza assorbita
dal compressore di bassa pressione si ottiene la temperatura totale del flusso all’uscita della turbina di media
pressione:

� �
T40 − T30 cp4
T80 = T70 − � �
1 + f cp8

Matching tra componenti di un turbofan • 17


Ciclo termodinamico

Con lo stesso procedimento si calcola la temperatura totale all’uscita della turbina di media pressione:
� �
T30 − T20 cp3
T90 = T80 − � �
1 + f cp9

Anche la trasformazione di espansione in turbina è caratterizzata da irreversibilità per cui si introducono


i rendimenti isoentropici delle tre turbine:

T 60 − T70
turbina di bassa pressione: ηtb = 0 = 0.88 ;
T60 − T7is

T70 − T80
turbina di media pressione: ηtm = 0 = 0.88
;
T70 − T8is

turbina di alta pressione: ηta =


T80 − T90
0 = 0.88
;
T80 − T9is

Ora è possibile calcolare la pressione totale alla fine di ognuna delle tre espansioni:

� 1 � T 0 �� k7 −1
k7

p07 = p06 1 − 1 − 70
ηta T6

� 1 � T 0 �� k8 −1
k8

p08 = p07 1 − 1 − 80
ηtm T7

� 1 � T 0 �� k9 −1
k9

p09 = p08 1 − 1 − 90
ηtb T8

18 • Matching tra componenti di un turbofan


Ciclo termodinamico

Ugello di scarico

A valle turbina di alta pressione c’è l’ugello di scarico, per ipotesi adattato: il deflusso è subsonico e la sua
pressione nella sezione di uscita eguaglia quella atmosferica.
Le condizioni nella sezione di ingresso sono: = T90 , p0iu = p09
.
0
Tiu

Nell’espansione la temperatura totale si conserva (moto adiabatico senza scambio di lavoro con l’esterno),
la pressione totale diminuisce e la velocità del deflusso aumenta.
Il rendimento isoentropico dell’ugello ne quantifica le perdite:
T90 − T10
ηu = = 0.98
T90 − T10is

L’equazione del primo principio della termodinamica tra le sezioni di ingresso e uscita dell’ugello è:
ce 2
h10 − h010 + =0
2

ce 2
= cp10 T10
0
− cp10 T10
2

Dove ce è la velocità di scarico del propellente dal propulsore e T10 esprimibile in funzione del rendi-
mento isoentropico dell’ugello:

� �
T10 = T90 − ηu T90 − T10is

L’espressione della velocità di scarico risulta:



� � p � k10 −1 �
a k10
ce = 2ηu cp10 T10
0 1−
p010

Dove p10 = pa perché l’ugello convergente scarica a pressione atmosferica.

Matching tra componenti di un turbofan • 19


Ciclo termodinamico

Calcolo delle grandezze prestazionali

La spinta specifica Rs rapporto tra la spinta prodotta e la portata di massa del fluido operativo che at-
traversa il propulsore:
� �
R 1+f
B
Rs = = ce + cef − ca
ṁaf + ṁa 1+B 1+B

Il consumo specifico TSFC (Thrust Specific Fuel Consumption) è:


f 1 f
T SF C = � �=� � � �
1+B R s 1 + f ce + Bcef − 1 + B

Il rendimento termico ηT è il rapporto tra la potenza del getto (con cui si accelera il propellente) e la po-
tenza resa disponibile dalla combustione:

� �
2
ca 2 cef 2 ca 2
(1 + f ) ce2 − 2 +B 2 − 2
ηT =
f Hu

Il rendimento propulsivo ηP è il rapporto tra la potenza propulsiva, che rappresenta l’effetto utile del pro-
cesso propulsivo, e la potenza del getto:
� �
(1 + f )ce + Bcef − (1 + B)ca ca
ηP = 2 2
� 2
2

c
(1 + f ) ce2 − ca2 + B ef2 − ca2

Il rendimento complessivo η0 , prodotto dei due rendimenti appena descritti, misura l’efficienza con cui
l’energia termica liberata durante la combustione viene convertita in potenza propulsiva: η0 = ηP ηT
Si riporta di seguito la tabella riassuntiva delle prestazioni ottenute:

����������� ������
������ ��������� � � � � �������� �����������
������� ��������� ������ ���������� �����������
���������� ������� � � � � �����������
���������� ����������� � � � �����������
���������� ����������� � � � � ����������
�������� �� ������� ����������� ��� ���
�������� �� ������������ ������ � � � � ��������
� �� � ������
������� ������ ����� � � ��
� �� � ������
������� ������ ������ � � ���
� � � ������
������� �� ������������ � � �����������
������ ��� � ���������� � � � ���� �� ��� ��� �����������

20 • Matching tra componenti di un turbofan�


Ciclo termodinamico

Matching tra componenti di un turbofan • 21


Comportamento di un turbofan fuori progetto

22 • Matching tra componenti di un turbofan


Comportamento di un turbofan fuori progetto

2 Comportamento di un turbofan fuori progetto

N
el capitolo precedente si è descritto il comportamento del propulsore nelle condizioni di progetto,
ovvero si sono analizzate le prestazioni nelle migliori ipotesi operative di macchina.
Tipicamente un propulsore viene progettato per massimizzare la spinta nella massima condizione
operativa (in genere il decollo o in caso di ri-attacco dovuto ad un mancato atterraggio), ma è altrettanto
importante minimizzare il consumo specifico di carburante quando le manette sono nella posizione di crociera
(intorno all’ 80%). Infatti i motori, soprattutto nel caso di grandi aeromobili, si trovano per la maggior parte del
tempo operativo in crociera. Per quanto riguarda gli aeromobili di media taglia (voli nazionali o continentali)
non si può sottovalutare l’aspetto del funzionamento a terra, che come spiegheremo in seguito, nasconde
diverse peculiarità.

Il presente elaborato si pone l’obiettivo di identificare attraverso uno studio prettamente computazionale
una linea operativa all’equilibrio (equilibrium running line).
Una linea operativa congiunge tutte le possibili posizioni che una determinata macchina del propulsore
può assumere, rispettando le condizioni di bilancio di massa e di lavoro tra componente e componente e tra
macchine calettate sul medesimo albero. Studiare una linea operativa all’equilibrio significa considerare le
variazioni di potenza e massa del combustibile iniettato come se avvenissero in un tempo molto lungo o,
più precisamente, come se avvenissero in un tempo sufficientemente lungo per permettere al propulsore di
adattarsi.
Ogni componente di un generatore di gas è accompagnato dalla curva caratteristica di macchina

Matching tra componenti di un turbofan • 23


Comportamento di un turbofan fuori progetto

(component characteristic map, o più semplicemente map); in genere infatti ogni componente viene testato su
di un banco prova e se ne studiano le caratteristiche al variare di velocità di funzionamento e di rapporto di
compressione.
Quindi la mappa di una macchina è un grafico che permette di apprezzare le prestazioni dell’oggetto in
esame (fan, compressore, turbina, ugello). Questa mappa è funzione di un gran numero di variabili: esterne,
al contorno (quindi deducibili), ma anche interne.
Ogni algoritmo per l’ottimizzazione presente in letteratura ([4],[6],[7],[9]), prevede la conoscenza delle
mappe di tutti gli elementi del propulsore.
Per poter analizzare il turbofan quindi era necessario poter ottenere le mappe per ogni singolo componente.
Trovare di volta in volta una mappa che si adattasse perfettamente alle caratteristiche ipotizzate non era
né semplice né utile; infatti, ammesso che l’utente riuscisse a trovare una mappa compatibile, inserirla
nell’implementazione non è cosa immediata, quindi si sarebbe perso di vista l’obiettivo di questo elaborato,
ossia fornire uno strumento sufficientemente veloce ed attendibile per predire le condizioni di funzionamento
del propulsore.
Per questo motivo è stata svolta una ricerca che permettesse di stabilire se vi fosse un modo per ovviare
a questo problema.
In rete esistono diversi programmi con interfaccia grafica che permettono di analizzare turbine a gas
(GasTurb™ , GSP). All’interno di queste applicazioni esistono delle routines che scalano delle mappe generiche
in funzione dei dati immessi. Tra le diverse procedure per scalare le mappe (map scaling) è stata scelta quella
ad opera di J. Kurzke e C. Riegler [5].
Senza entrare troppo nel dettaglio (i vari scaling methods verranno analizzati a fondo nel prossimo
capitolo), questa metodologia di scala è apparsa la più solida e attendibile.

24 • Matching tra componenti di un turbofan


Comportamento di un turbofan fuori progetto

Compressore fuori progetto

Di seguito viene fornita in esempio una mappa per un compressore.

�������������������������

���������
��������

���
��������

��������


��������
����������������

���

���

�����������
���
FIGURA 2.1 • Gr afico di un generico
���������� �������� compressore.In ascissa si trova la por-
tata di massa mentre in ordinata il r ap-
��� ��������� por to di compressione.Si distinguono
per l’andamento asintotico le linee di
velocità.Le figure concentriche sono in-
��������� vece linee di isorendimento. La mappa
�������� ��������� è di un compressore con r appor to di
compressione di 2.4.

� ��� ��� ��� ��� � ���
��������������������

Nella mappa del compressore in ascissa si trova la portata di massa corretta all’ingresso della macchina
mentre in ordinata il rapporto di compressione. Si possono notare la linea di pompaggio, margine superiore che
collega tutti i punti delle varie linee di velocità corrette, e la linea dell’ottimo (reference line), che congiunge
i punti con il più alto rendimento di tutte le linee. Le linee concentriche di forma circolare sono le linee di
isorendimento; per comodità sono state tracciate delle linee di rendimento riferite ad ogni linea di velocità
(fig. 2.2).

Matching tra componenti di un turbofan • 25


Comportamento di un turbofan fuori progetto

�������������������������

Equazioni ��������� Rendimenti


��� ���
��������
���������
� �
���������
���������������

���������
��� ���

���
������������
��� ���

��
��� ���
�����������
�����������
FIGURA 2.2 • Si tr atta del
��� ����������� ��� medesimo gr afico di pagina
precedente con l’eccezione
����������� delle linee di rendimento
���������� ����������� che sono state ricalcolate e
� � poste sulla destr a.
� ��� ��� ��� ��� � ��� � ��� �
�������������������� �

La linea di pompaggio è un limite di macchina. Si tratta della soglia oltre la quale il compressore stalla e
fondamentalmente smette di funzionare, la corrente risale il compressore al posto che passarvi attraverso (da
questo fenomeno si intuisce il nome pompaggio). Nei propulsori reali esistono diversi dispositivi per evitare
questo fenomeno. Sui turbofan moderni è installata una valvola antipompaggio (handling bleed valves), che
scongiura il fenomeno (abbattendo però il rendimento del compressore). Come rimedio si sono sviluppate
anche palette degli statori del compressore a calettamento variabile (inlet guide vanes, o più comunemente
IGV).

26 • Matching tra componenti di un turbofan


Comportamento di un turbofan fuori progetto

Turbina fuori progetto

Nella fig. 2.3 si trova la mappa di una turbina. Questo componente è più semplice e si nota come tutte le
linee di velocità tendano ad un valore asintotico. Questo valore asintotico è detto portata di soffocamento (si
tratta del limite oltre il quale la turbina non riesce più ad ingerire una portata crescente d’aria). Quando una
turbina raggiunge questo valore limite di portata si dice soffocata (choked). Si può notare come aumentando
il rapporto di compressione della turbina, superato il valore critico del soffocamento, la portata di massa
rimanga costante.

����������������������

� ��� � ��� � ��� � ��� �

���
��

���

���


��������������������

���

���

���
FIGURA 2.3 • Gr afico di una gener-
ica turbina.Nella par te inferiore sono
presenti le linee alle diver se velocità
��� oper ative (60% 80% 100%) in ascissa
vi è il r appor to di compressione, in or-
dinata la por tata di massa e, sopr a, il
rendimento.

� ��� � ��� � ��� � ��� �

Come verrà spiegato in seguito questa condizione di soffocamento nelle turbine è da ricercare in fase di
progetto. Per ora è sufficiente spiegare che i turbofan civili a flussi separati si trovano, nella quasi totalità delle
condizioni operative, con le turbine soffocate. Solo a terra col propulsore al minimo (idle) può avvenire il non-
soffocamento delle turbine (unchoked).

Matching tra componenti di un turbofan • 27


Comportamento di un turbofan fuori progetto

Comportamento di due turbine in serie


Per meglio comprendere le assunzioni effettuate in questo elaborato, si analizzerà ora il comportamento
di due turbine in serie.
Si trovano in questa condizione la turbina di alta pressione e quella di media, quella di media pressione
e quella di bassa. Un ugello convergente a geometria fissa inoltre ha una linea operativa qualitativamente
analoga ad una turbina, è quindi possibile assumere come simile ai precedenti anche il comportamento della
turbina di bassa e dell’ugello del flusso caldo.
In figura (fig. 2.4) è presentato il comportamento delle tre turbine e dell’ugello del flusso caldo in serie.

�ESP delle tre turbine e dell’ugello


���� ����

���� ����

���� ����


� ��� ����
� �� ����


���� ����

���� ����

���� ���� FIGURA 2.4 • Gr afico


di tre turbine e dell’ugello
del flusso caldo. In ascissa
r appor ti di espansione, in
ordinata por tata di massa
� � cor retta.
� � � � �� � � � �� � � � �� � � � �
�������������� ������������������ ������������������ ��������������

Ipotizziamo si stia trattando della turbina di alta accoppiata a quella di media. Si identificano subito le
due linee della portata di massa con valori asintotici (paralleli all’asse delle ascisse). Nel caso della turbina

p07 mh T60
di alta si ha in ascissa p06
e in ordinata . Nel medesimo grafico (quello di sinistra) appare evidente
p06
anche una seconda curva, con una tendenza non più parallela all’asse delle ascisse, ma tendente ad una retta
dall’inclinazione inferiore a 45°. Questa curva descrive la capacità della turbina di media pressione (ossia

mh T70
quella a valle della turbina di alta) di ingerire una portata .
� p07
mh T60 0
Una volta identificato sulla curva un particolare valore di p70 , tracciando una verticale si
p06 p6

28 • Matching tra componenti di un turbofan


Comportamento di un turbofan fuori progetto


mh T70
identifica anche un valore�
sulla curva , ora tracciando una parallela alle ascisse si identifica
p07
T70
un punto sulla curva mh del grafico di destra. Quindi appare chiaro come in regime di non
p07 p07
soffocamento (regione delle curve in cui l’andamento non è asintotico), dato un valore di siano
0
p8 p09 pa p06
determinati in cascata i valori successivi di p07 , p08 , p09 .
Si era però spiegato come in genere i progettisti ricercassero il soffocamento dell’ugello
per prevenire effetti nefasti. Eventuali perturbazioni di pressione potrebbero risalire la corrente
provocando perdita di efficienza ed una serie di ulteriori problemi al ciclo termodinamico.
La regione del soffocamento è quella asintotica rispetto all’asse x; si nota che per un valore del
p08
soffocamento della turbina di media pressione si possono avere diversi valori di che partono
p07
p07
sempre dal medesimo valore di .
p06

Matching tra componenti di un turbofan • 29


Metodi per la parametrizzazione delle mappe

30 • Matching tra componenti di un turbofan


Metodi per la parametrizzazione delle mappe

3 Metodi per la parametrizzazione delle mappe

N
ei capitoli precedenti si è discusso sulla necessità, per effettuare un’analisi preliminare di un
propulsore, di essere in possesso di curve caratteristiche dei diversi organi della macchina. In
alternativa si è citata la possibilità di modificare (scalare) delle mappe generiche affinché le stesse
incontrassero corrispondenza con il comportamento reale dell’apparato.
In questo elaborato il fan, i compressori le turbine ed in una certa forma l’ugello sono stati affiancati da mappe
di funzionamento con diverse linee operative a seconda che variasse [con linee operative diverse legate alla
variazione della] la velocità di rotazione dell’albero.
Il funzionamento degli altri elementi, presa dinamica e camera di combustione, è stato considerato lineare.

Questa assunzione è una semplificazione confortata da una discreta attendibilità.


La camera di combustione è stata supposta affetta di un fattore di perdita di pressione fp−c . Quindi per
ogni pressione di ingresso p05 si ha una pressione in uscita:

p06 = p05 fp−c

L’andamento della presa dinamica invece è stato supposto isotermo, la variazione della pressione invece
è legata al rendimento del diffusore e alla pressione ambiente con:

Matching tra componenti di un turbofan • 31


Metodi per la parametrizzazione delle mappe

T20 k2
p02 = pa [1 + ηd ( − 1)] k2 −1
Ta

Nel capitolo 2.3 si è portato l’esempio di come l’ugello del flusso caldo avesse l’andamento analogo a
quello di una turbina, quindi nello studio di turbine e ugello si è optato per il medesimo sistema di scaling.
Il sistema di scaling delle turbine è piuttosto primitivo, questo perché è provato [1] che come tipologia di
macchina la turbina è più semplice ed incontra con maggior difficoltà situazioni critiche (lo stallo per questo
componente è un avvenimento raro).
Più elaborato invece è il sistema di scaling per le mappe dei compressori e del fan, questi organi infatti
sono estremamente più delicati e presentano in genere linee operative che si trovano vicine alla linea di
pompaggio, ed in certi casi possono addirittura oltrepassarla.

32 • Matching tra componenti di un turbofan


Metodi per la parametrizzazione delle mappe

Parametrizzazione compressori

In letteratura sono presenti molte tipologie di procedure per lo scaling delle mappe dei compressori. La
pubblicazione “A new compressor map scaling procedure for preliminare conceptional design of gas turbines”
ad opera di J. Kurzke e C. Riegler (entrambi esperti di chiara fama, ricercatori presso l’ Engine Performance
Department MTU) si è rivelata estremamente attendibile e con un grado di accuratezza elevato.
In breve l’articolo citato descrive come sia possibile ottenere una mappa adattata partendo da un numero
estremamente contenuto di informazioni: il rapporto di compressione, il lavoro isoentropico in condizioni di
progetto e la variazione della portata di massa al 50%.

�������������������������

���������
��������

���
��������

��������


��������
����������������

���

���

�����������
���
FIGURA 3.1 • Gr afico di un generico
���������� �������� compressore.In ascissa si trova la por-
tata di massa mentre in ordinata il r ap-
��� ��������� por to di compressione.Si distinguono
per l’andamento asintotico le linee di
velocità.Le figure concentriche sono in-
��������� vece linee di isorendimento. La mappa
�������� ��������� è di un compressore con r appor to di
compressione di 2.6.

� ��� ��� ��� ��� � ���
��������������������

Si tratta di un’indagine statistica all’interno della fornita biblioteca del MTU; tale ricerca è stata effettuata
considerando diverse mappe (oltre 50) di compressori assiali e radiali dalle caratteristiche molto diverse
(coprono l’intervallo di rapporto di compressione 1 – 25). Tutte le mappe sono state riportate in coordinate
adimensionali confrontabili; in ascissa la massa corretta relativa (0–1), in ordinata il rapporto di compressione
relativo:
π−1
πref − 1

Matching tra componenti di un turbofan • 33


Metodi per la parametrizzazione delle mappe

Per fornire un esempio, in figura 3.1 è riportata una mappa di un compressore assiale con rapporto di
compressione 2.6, nella quale sono ben presenti sia i valori adimensionali in coordinate sia i rendimenti, le
linee di riferimento e la linea di pompaggio.
Una volta fatto ciò i ricercatori hanno iniziato un’ulteriore analisi che fornisse dei punti di descrizione
della mappa (map descriptors) facili da identificare ed univoci. Hanno scartato dei descriptors come il margine
di pompaggio, efficienze ed altri criteri di perdita, in quanto privi di una tendenza chiara e riconducibile
all’andamento di qualche funzione.
Si sono concentrati quindi sullo studio del punto di riferimento (reference point, ossia del punto di progetto).I
due ricercatori hanno osservato che congiungendo i punti di massimo rendimento sulle diverse linee di velocità
si otteneva una curva (chiamata reference line). Ora l’andamento di questa linea se plottato in coordinate
adimensionali, ricorda molto quello di una circonferenza che attraversi i due punti nelle coordinate [0;0] e
[1;1], e con il centro sulla retta che congiunge i punti [0;1] e [1;0]. Quindi per descrivere questa circonferenza
è sufficiente un valore, in quanto famiglia di circonferenze passanti per due medesimi punti. E’ stato scelto
per descriverlo il valore del rapporto di compressione adimensionale relativo al 50% della portata di massa


���
�����
������
����
�����
� ���
���
�����
����
������������������������

FIGURA 3.2 • Il gr afico ripor ta


l’andamento quasi circolare della
linea di riferimento in un gr afico
adimensionalizzato.E’ presente
inoltre l’andamento della veloc-
ità rispetto alla massa relativa
� cor retta, con il car atteristico svi-
luppo lineare.
� ��� ������������������������� �

adimensionale. In figura (fig. 3.2) sono ben presenti l’andamento originale quasi circolare (linea tratteggiata
sottile), l’andamento circolare (linea marcata continua).
Si può notare inoltre come l’andamento del flusso relativo sulla velocità abbia un andamento quasi lineare

34 • Matching tra componenti di un turbofan


Metodi per la parametrizzazione delle mappe

nella parte di interesse del grafico. Anche per descrivere questo andamento si è scelto di considerare il valore
rispetto alla massa corretta adimensionale col valore del 50 %.
Per definire però una mappa di un compressore non è sufficiente aver descritta la linea di riferimento,
infatti la differenza tra portata massica al soffocamento e al pompaggio alla velocità dell’ 80% determina la
forma (una tendenza più o meno marcata ad appiattirsi) delle linee di velocità. I due ingegneri del MTU hanno
quindi deciso di considerare anche questo parametro.
Oltre a ciò è stato deciso di considerare anche l’andamento delle linee di isolavoro, e di calcolare la
differenza tra il lavoro al punto di riferimento e al 50% della portata di massa.
Una volta raccolti i 4 termini atti a descrivere le mappe, i ricercatori ne hanno studiato l’andamento sulle
57 curve caratteristiche a disposizione. Effettuata l’analisi degli andamenti è stato possibile per loro stabilire
alcune leggi che fossero un buon compromesso:
� �
πrel = 0.1961 + 0.08 ln (πref )
50%ṁ

� ṁ �
c −0.2223
= 1.1037πref
Nc 50%ṁc

� �
ṁc,range = 0.1751 exp −0.1042(πref )
80%Nc

(H/Nc2 )
Non è stato riscontrato un andamento definito per il parametro .
(H/Nc2 )ref

Quindi il parametro rimane invariato. La prima legge definisce completamente la circonferenza citata
precedentemente; è ora possibile intervenire con la legge
(ṁc,range )80%Nc ,new � �
ṁc,new = ṁc,max − ṁc,max − ṁc,orig
(ṁc,range )80%Nc ,orig

La legge sopraesposta definisce la nuova posizione del valore di pompaggio, mantenendo inalterato il
valore del soffocamento.
Ciò mantiene valida la legge ṁc,max = f (Nc ) . Questa legge va applicata ad ogni linea di velocità.
Nel passaggio successivo si utilizza il lavoro isoentropico per stabilire valori per le linee di velocità
congruenti con i nuovi rapporti di compressione. Dapprima si stabilisce il valore di ƒ.
His,ref,new
fH,is = = f (πorig , πref )
His,ref,orig

Dopodichè si applica la seguente legge per ricalcolare per tutte le linee di velocità i nuovi valori.

Matching tra componenti di un turbofan • 35


Metodi per la parametrizzazione delle mappe


� His,new
Nc,new =�
�� � � �
His
fH,is N2
orig

Con questo passaggio si conclude la procedura per lo scaling delle mappe del compressore. Il tutto è stato
implementato nel programma “scala_mappa.m” (vd. Appendice). Nell’implementazione del programma non si
è scordato di valutare anche la variazione dei rendimenti (che seguono le ipotesi di progetto).
Per meglio comprendere l’effetto del metodo di scala sulla mappa di un compressore, la figura seguente
rappresenta rispettivamente la mappa caratteristica di un compressore assiale con rapporto di compressione
relativamente basso (1.1) ed una con rapporto di compressione più esasperato (24).

������������������������

Equazioni ��������� Rendimenti


��� ���
��������
���������
� �
���������
���������

���������
��� ���

������������
���

���
��� ���
���

��
��� ���
�����������
�����������
��� ����������� ���
�����������
���������� �����������
� �
� ��� ��� ��� ��� � ��� � ��� �
�������������������� �

�����������������������

Equazioni ��������� Rendimenti


��� ���
��������
���������
� �
���������
���������

���������

��� ���
FIGURA 3.3 • I gr afici r ap-
presentano il metodo di scaling
���

���

��� ��� ad oper a di J. Kurzke e C. Rie-


���

gler. Si è par titi da una mappa


��

di un generico compressore
������������ con r appor to di compressione
��� ��� di 2.6. Modificandola si sono
���������������������� ottenute le mappe per r ap-
por ti di compressione di 1.1
��� ����������� ��� (in alto) e 24 (in basso). Da
notare il compor tamento pres-
����������� sochè di soffocamento imme-
���������� ����������� diato nel caso in basso.
� �
� ��� ��� ��� ��� � ��� � ��� �
�������������������� �

36 • Matching tra componenti di un turbofan


Metodi per la parametrizzazione delle mappe

Parametrizzazione di turbine ed ugello

Come già accennato il procedimento per lo scaling delle mappe delle turbine è un po’ meno elaborato,
questa scelta deriva da una versatilità maggiore del componente.
Una volta raccolte le informazioni relative ad una mappa di una turbina [1] si è provveduto ad identificarne
il punto di progetto.
In figura si può notare la mappa recuperata da [1].

����������������������

� ��� � ��� � ��� � ��� �

���

���

���


��������������������

���

���
FIGURA 3.4 • Gr afico di una
generica turbina. In alto si pos-
��� sono notare i rendimenti per le
linee di velocità di 40% 60% 80%
100%. Nel Gr afico in basso invece
��� sono ripor tate le linee di velocità
40% 80% 100% della massa cor-
retta.In ascissa si trova il r appor-
to di espansione.

� ��� � ��� � ��� � ��� �

Anche in questo caso si è poi passati ad una fase di adimensionalizzazione dei valori in ascissa ed ordinata.
In questo modo si è potuto ottenere la mappa di una turbina generica.
Una volta calcolati i valori di progetto del ciclo termodinamico, con le leggi descritte nel capitolo 1, si è
provveduto modificare la mappa.
Dapprima si è effettuato un adattamento dei valori dell’ordinata in modo tale che la portata di soffocamento
sulla mappa fosse proprio quella trovata per le condizioni di progetto. Si è passati poi con la procedura già
descritta nel capitolo 2.3 all’analisi di due turbine in serie. In questo modo è stato possibile determinare la
curva con andamento asintotico (inclinato di circa 45° fig. 3.4). Qui sotto è riportata l’espressione che descrive
l’andamento della curva.
� � �
m T7 0 0 0
m T 6 p6 � � p0 � 1−k
k6
6 �

= 1 − ηta 1 − 6
p07 p06 p07 p07

Matching tra componenti di un turbofan • 37


Metodi per la parametrizzazione delle mappe

E’ stato quindi possibile attraverso un procedimento iterativo determinare il fattore di scala corretto anche
per le ascisse (rapporto di espansione).
In conclusione con questo sistema è stato possibile ottenere le 3 turbine e l’ugello con curve caratteristiche
che, al 100% presentassero un soffocamento e valori di espansione e portata di massa corretta congruenti.

�ESP delle tre turbine e dell’ugello


���� ����

���� ����

���� ����


�� ��������

� ��� ����

���� ����


���� ����
FIGURA 3.5 • Gr afico comples-
sivo del compor tamento di turbina
siv
di alta pressione, media pressio-
���� ���� ne, bassa pressione e ugello del
flusso caldo,
caldo in condizione di sof-
focamento. LeL linee che divergono
dalla par allela all’asse x sono le
massime por tate di massa ingeri-
� � bili dalla turbina successiva.
� � � � �� � � � �� � � � �� � � � �
�������������� ������������������ ������������������ ��������������

38 • Matching tra componenti di un turbofan


Metodi per la parametrizzazione delle mappe

Matching tra componenti di un turbofan • 39


Ottimizzazione e matching fuori progetto

40 • Matching tra componenti di un turbofan


Ottimizzazione e matching fuori progetto

4 Ottimizzazione e matching fuori progetto

U
na volta ottenute le mappe da applicare ai nostri componenti generici (si tratta infatti di pre-design),
si è finalmente in grado di verificarne le interazioni.
Come già accennato, pur non essendoci nessun vincolo meccanico tra i tre alberi (bassa pressione,
media pressione ed alta pressione), esistono diverse condizioni che devono essere rispettate affinché il
propulsore descriva una posizione di funzionamento realistica. Queste condizioni determinano dei vincoli per
cui esiste sul fan una sola linea operativa. Obiettivo dell’algoritmo esposto nel proseguio del capitolo è proprio
individuarla.

Prima però di cominciare con l’analisi è necessario assicurarsi di aver scelto un buon compromesso nella
costruzione del propulsore. Infatti si è di fronte ad un programma piuttosto versatile in grado di calcolare
il ciclo termodinamico di un qualsiasi turbofan trialbero; questa caratteristica non risparmia all’utente di
implementare dei propulsori dalle prestazioni non verosimili perchè costruiti secondo criteri non logici.
Per venire incontro all’utente è stata sviluppata una funzione del programma che permette una scelta
consapevole delle caratteristiche iniziali del propulsore.

Matching tra componenti di un turbofan • 41


Ottimizzazione e matching fuori progetto

Ottimizzazione scelte di progetto

Trattandosi di un elaborato basato sul concetto di pre-design è stata sviluppata una funzione nel programma
che permette di stabilire quale sia il miglior compromesso in un campo ampio di possibilità. Si è peraltro
verificato come alcune scelte progettuali effettuate nello sviluppo del programma abbiano portato a ricalcare
già adottate nella costruzione di diversi propulsori reali.
In genere un vincolo costruttivo è determinato dalla TIT (Turbine Inlet Temperature) ossia dalla temperatura
in ingresso della turbina. Un valore basso della TIT determina un abbassamento del valore massimo della
combustione (la camera di combustione è situata immediatamente prima della turbina di alta pressione).
Questo abbassamento è responsabile di un abbattimento delle prestazioni propulsive del motore. Esiste però in
genere un’ulteriore limitazione: la temperatura in uscita dal compressore.
Questi due limiti determinano di fatto il gradiente termico ad opera della camera di combustione.
In una prima parte del programma di ottimizzazione viene plottata la variazione di temperatura al crescere
del rapporto di compressione totale:

��������������
���

���

���
������������������������

���

���

���

��� FIGURA 4.1 • Il gr afico


ripor ta l’andamento della
temper atur a all’uscita del
compressore al crescere
del r appor to di compres-
sione totale.
���
� �� �� �� �� �� �� �� �� ��
��������������

42 • Matching tra componenti di un turbofan


Ottimizzazione e matching fuori progetto

Una volta letto dal file “contorno.txt” il limite imposto dal costruttore il programma calcola
automaticamente il rapporto di compressione massimo ammissibile.
Per ottenere:
πtot = πf an πcip πchi

Il valore dei tre termini ha un certo intervallo di variabilità.


Se si trattasse di un turbojet la tipologia di ripartizione del rapporto di compressione non porterebbe a
snaturare il risultato del ciclo termodinamico.
Trattandosi di un turbofan invece il rapporto di compressione del fan gioca un ruolo fondamentale.
Come esempio si osservi la figura (fig. 4.2). Si tratta di un grafico nel quale è mantenuto costante il rapporto
di compressione totale, ma viene fatto variare il rapporto di compressione del fan. L’effetto su rendimento
totale e spinta specifica di questa variazione è evidente.
������������������������������������
����

����

����

����
�����

���

����

FIGURA 4.2 • Il gr afico r appre-


���� senta l’andamento di spinta specifica
e rendimento complessivo al variare
del r appor to di compressione del fan,
mantenendo costante il r appor to di
compressione totale.
����
� ��� ��� ��� ��� ��� ��� ��� ��� ��� �
������������������������������������

Sempre trattandosi di un turbofan esiste un ulteriore parametro fondamentale, probabilmente il più


importante: il rapporto di bypass.
Questo rapporto considera il rapporto tra la portata di massa che attraversa il fan (aria fredda) e la portata
di massa che finisce nella turbina a gas (aria calda). I propulsori per apparecchi militari in genere si attestano
su valori bassi di questo parametro (anche 1), ed in genere si utilizza il miscelamento di aria calda ed aria
fredda. Eventualmente si utilizza anche la post-combustione prima dell’ugello. Per impieghi civili invece

Matching tra componenti di un turbofan • 43


Ottimizzazione e matching fuori progetto

in genere si opta per rapporti di bypass più elevati. E’ inoltre uso mantenere separati i due flussi. Nel corso
degli anni ci si è spinti a rapporti di bypass sempre più esasperati in quanto garantiscono un minor consumo
specifico e un maggior rendimento. Il limite aerodinamico che blocca l’aumento di questo parametro è la
velocità all’estremità delle palette del fan. Infatti, per ragioni di perturbazioni di pressione ed onde d’urto, ci si
spinge al limite a velocità transoniche. Da sottolineare inoltre l’inquinamento acustico provocato già a velocità
transoniche.
Il programma di ottimizzazione quindi calcola il ciclo termodinamico in condizioni di progetto per ogni
tipologia di rapporto di compressione del fan (fig. 4.2). Dell’equazione ottenuta sceglie il massimo dopodichè
modifica il valore del bypass.
In questo modo è stato ottenuto il grafico (fig,. 4.3), che rappresenta il miglior compromesso nella scelta
del rapporto di compressione del fan al variare del rapporto di bypass.

������������������������������������
���

���

���
����


���

FIGURA 4.3 • Il gr afico ri-


por ta l’andamento al variare
del r appor to di bypass del mi-
��� glior compromesso nella scelta
del r appor to di compressione
del fan. E’ sempre da intend-
er si r appor to di compressione
totale costante.
���
� ��� � ��� � ��� � ��� �
��������� ��
� �

L’andamento in figura però può essere di difficile interpretazione. Per questo motivo il programma stampa a
video un ulteriore grafico (fig. 4.4) nel quale sono presenti i valori di spinta specifica e rendimento complessivo
al variare del rapporto di bypass.

44 • Matching tra componenti di un turbofan


Ottimizzazione e matching fuori progetto

Al progettista sta la scelta del valore più adatto alla tipologia di propulsore.

����������������������������������������

��

���

����

� ��

���

����

FIGURA 4.4 • Questo gr afi-


co r appresenta l’andamento al
variare del r appor to di bypass
��� del miglior compromesso nella
scelta della spinta specifica e
del rendimento complessivo.
E’ sempre da intender si r ap-
por to di compressione totale
costante.
����
� ��� � ��� � ��� � ��� �
�������������

Matching tra componenti di un turbofan • 45


Ottimizzazione e matching fuori progetto

Algoritmo di matching

L’algoritmo si sviluppa sulla base degli esempi riportati in letteratura [1]. Si vuole sottolineare però che
l’implementazione dello stesso per il caso di turbofan trialbero è opera dello scrivente. In un primo tempo si
era pensato di adottare l’ipotesi del soffocamento delle turbine come imposizione. Questa condizione però,
seppur verificata nella maggior parte dei propulsori reali, una volta implementata all’interno di una piattaforma
di simulazione matematica ha prodotto risultati fuorvianti.

Si è deciso quindi di impostare il problema in via più libera (che si traduce in un aggravio del numero delle
operazioni da compiere da parte dell’algoritmo), in particolare sono stati inseriti un gran numero di iterazioni
che hanno permesso di ottenere risultati accurati.
L’algoritmo si basa sul calcolo iterativo delle condizioni di ogni macchina come se fosse libera da ogni
altro componente. In un secondo tempo vengono presentate le condizioni di vincolo che determinano se i punti
scelti sulle mappe dei vari componenti siano congruenti o meno.
In particolare tra un componente e quello successivo deve essere rispettata la conservazione della massa
(bilancio di massa), non possono esistere pozzi o sorgenti di massa. Deve essere poi rispettata l’uguaglianza
dei lavori dei componenti calettati sul medesimo albero (fan turbina di bassa pressione, compressore di media
e turbina di media, compressore di alta e turbina di alta). Si tratta anche in questo caso di una semplificazione,
infatti, nello studio dei transitori di un propulsore (rapida variazione della manetta), le variazioni di velocità
dei componenti sono tali per cui localmente le due leggi precedenti non vengono rispettate (se un albero
accelera è perché la differenza di lavoro turbina compressore è diversa da zero - maggiore- ). Allo stesso
modo all’accelerare del compressore la massa che lo interessa sarà maggiore di quella della turbina, che non

46 • Matching tra componenti di un turbofan


Ottimizzazione e matching fuori progetto

ha ancora avuto modo di adattarsi.


In questo elaborato però è fatta valere la condizione per cui le variazioni di velocità degli organi del
propulsore avvengano in un tempo più lungo rispetto alla capacità degli stessi di adattarvisi.
Il termine ultimo di verifica, per accertare l’attendibilità dei punti iterati è il confronto tra l’area originale
dell’ugello del flusso caldo nel ciclo in condizioni di progetto e la stessa area ricalcolata.
Per questo motivo l’algoritmo comincia calcolando proprio quel termine:
ṁ + ṁf
Aorig = � � �
� � � k2 � � k9k+1

�2cp9 T 0 pamb 9 pamb 9
9 p0 9 p09

Fatto ciò comincia l’algoritmo vero e proprio. Per determinare le condizioni ambientali e le variazioni ad
opera della presa dinamica si adottano le usuali:
� k0 − 1 � k k−1
0
0
p0amb = pamb 1 + M a2
2

� �T0 �� k k−1
2
2
p02 = pa 1 + ηd 2 − 1
Ta
p03
Si sceglie una linea di velocità del fan e di essa si seleziona un punto. Risultano quindi determinati e
� p02
m T20 . Con essi è pure determinato il rendimento del fan.
p02

Il valore della massa del fan è però determinato a meno della portata d’aria calda, per correggere ciò si
usa la seguente:
� �
m T20 m T20 � �
0 = 0 1+B
p2 p2

A questo punto viene avviata una iterazione. Di fatto si tratta di un procedimento molto simile a quello
spiegato nel primo capitolo. Anche in questo caso, l’iterazione è necessaria se si vuole determinare il gradiente
termico tra ingresso e uscita del fan considerando l’esponente isoentropico variabile in funzione della
temperatura.
Solo per questa prima iterazione sarà esposto il procedimento iterativo sottoforma di grafico, per le
successive si indicherà la presenza di un’iterazione solo nel testo senza fare ricorso ad un aiuto grafico.
Una volta determinato il rapporto di compressione del fan si può ricavare dalla mappa anche il valore del
rendimento.

ηf an ricavato da grafico

Matching tra componenti di un turbofan • 47


Ottimizzazione e matching fuori progetto

������� ����� ��� ������� ����� ���


������� ������� �����
����� ������� �� �����������

�� ��������� ���������� � ���� �

������ ����������

FIGURA 4.5 • Questo


�� � ��� schema a blocchi r appre-
senta le oper azioni effet-
tuate come iter azioni nel
tuat
calcolo della differenza di
temper atur
atu a tr a ingresso e
uscita del fan.

Dapprima viene calcolato il valore dell’esponente isoentropico all’ingresso del fan.


L’iterazione viene effettuata per stabilirne il valore corretto nell’intervallo di temperatura di ingresso,
uscita fan.
k2 = f (T20 )

�� � k2k−1 �
2
T0 p03
∆T23
0
= 2 −1
ηf an p02

∆T23
0
k2 = f (T20 + )
2

Ora è possibile stabilire il valore della temperatura in uscita del fan:


T30 ∆T23
0
+ T20
=
T20 T20

T30 0
T30 = T
T20 2

Inoltre risulta determinata la portata di massa in uscita al fan, da intendersi divisa per il rapporto di
bypass:
� � �
m T30 m T20 p02 T30
=
p03 p02 p03 T20

48 • Matching tra componenti di un turbofan


Ottimizzazione e matching fuori progetto

Ora si avvia una ulteriore iterazione. In questo caso, preso come punto di riferimento la portata di massa
corretta in entrata al compressore di media pressione, si ricerca sulla mappa tra tutti i valori di rapporto di
compressione dalla linea di pompaggio a zero. E’ possibile modificare lo step tra un’intervallo e l’altro.
0
Selezionato un valore di p40 , risultano determinati univocamente i valori di portata di massa e rendimento
p3
del compressore.
Quando la portata di massa uguaglia il valore trovato in precedenza l’iterazione termina.
Ora viene avviata una ulteriore iterazione per ricercare il valore dell’esponente isoentropico all’interno del
compressore di media pressione.
k3 = f (T30 )

�� � k3k−1 �
3
T0 p04
∆T34
0
= 3 −1
ηcip p03

∆T34
0
k3 = f (T30 + )
2

E’ quindi possibile determinare il valore della temperatura in uscita al compressore di media pressione:
T40 ∆T34
0
+ T30
0 = 0
T3 T3

T40 0
T40 = T
T30 3

La portata di massa corretta sarà quindi:


� � �
m T40 m T30 p03 T40
=
p04 p03 p04 T30

A questo punto come si può immaginare si avvia una procedura simile a quella adottata per fan e
compressore di media: ci stiamo quindi avvicinando al terzo ciclo iterativo concatenato.Si ricerca quindi un
valore congruo perchè il compressore di alta pressione soddisfi la condizione di portata di massa che si presenta
al suo ingresso.
0
Selezionato un valore di p50 , risultano determinati univocamente i valori di portata di massa e rendimento
p4
del compressore.
Quando la portata di massa uguaglia il valore trovato in precedenza l’iterazione termina.
p05 p04 p03 0
p05 = p
p04 p03 p02 2

Anche per determinare il valore dell’esponente isoentropico per la variazione della temperatura all’interno
del compressore di alta pressione è necessario ricorrere ad un’iterazione.

Matching tra componenti di un turbofan • 49


Ottimizzazione e matching fuori progetto

k4 = f (T40 )

�� � k4k−1 �
4
T0 p05
∆T45
0
= 4 −1
ηchp p04

∆T45
0
k4 = f (T40 + )
2

E’ quindi possibile determinare il valore della temperatura all’uscita del compressore di alta pressione:
T50 ∆T45
0
+ T40
0 = 0
T4 T4

T50 0
T50 = T
T40 4

Inoltre si riesce a dedurre la pressione all’uscita della camera di combustione; il suo valore infatti è
vincolato a quello della pressione in uscita del compressore di alta pressione.

p06 = p05 fp−c

Per determinare il valore della temperatura in uscita dalla camera di combustione è necessario iterare
0
un valore di espansione in turbina di alta pressione. Quindi scelto un valore di p60 , risultano univocamente
p7
determinati il rendimento della turbina e la portata di massa in ingresso.

m T60 , ηta .
p06

Essendo noto il valore della portata di massa si può calcolare il salto tra la temperatura in ingresso del
compressore e quella in ingresso della turbina.
� � �
m T60 m T40 p04 p05 T60
=
p06 p04 p05 p06 T40

Ora è possibile calcolare il salto termico nella turbina di alta pressione. Questo permette di ricalcolare il
valore del salto termico tra temperatura di ingresso del compressore di alta e quello dell’ingresso della turbina
di alta. Nel caso i due valori siano uguali l’iterazione si ferma.
� � � 1−k 6 �

∆T670 k6
p06
= ηta 1 −
T60 p07

∆T670
∆T450
T40 cp4 ṁa
=
T60 T40 T60 cp6 ṁa + ṁf

50 • Matching tra componenti di un turbofan


Ottimizzazione e matching fuori progetto

� � � �
T60 T60
= ?
T40 T40
πesp bilancio lavoro

Una volta verificata l’uguaglianza sopra esposta si possono determinare i valori di temperatura all’uscita
della camera di combustione (TIT) e temperatura all’uscita della turbina di alta pressione, oltre alla pressione
in uscita della turbina.
T60 0
T60 = T
T40 4

T70 = T60 − ∆T67


0

p07 0
p07 = p
p06 6

Si passa ora all’iterazione per la ricerca del rapporto di espansione corretto nella turbina di media pressione,
il procedimento è analogo a quello illustrato nella pagina precedente, cambiano solo gli indici.
0
Scelto un valore di p70 , risultano univocamente determinati il rendimento della turbina e la portata di
p8
massa in ingresso.

m T70 , ηtm .
p07

Essendo noto il valore della portata di massa si può calcolare il salto tra la temperatura in ingresso del
compressore e quella in ingresso della turbina.
� � �
m T70 m T60 p06 � � p0 � 1−k
k6
6 �

0 = 0 0 1 − ηta 1 − 06
p7 p 6 p7 p7

Ora è possibile calcolare il salto termico nella turbina di media pressione. Questo permette di ricalcolare
il valore del salto termico tra temperatura di ingresso del compressore di media e quello dell’ingresso della
turbina di media. Nel caso i due valori siano uguali l’iterazione si ferma.
� � � 1−k 7 �

∆T780 k7
p07
= ηtm 1 −
T70 p08

∆T780
∆T340
T30 cp3 ṁa
=
T70 T30 T70 cp7 ṁa + ṁf

� � � �
T70 T70
= ?
T30 T30
πesp bilancio lavoro

Una volta verificata l’uguaglianza si possono determinare i valori di temperatura all’uscita della turbina di
media pressione oltre alla pressione in uscita dalla medesima turbina.

Matching tra componenti di un turbofan • 51


Ottimizzazione e matching fuori progetto

T80 = T70 − ∆T78


0

p08 0
p08 = p
p07 7

Si passa ora al procedimento di iterazione per la turbina di bassa pressione, anche in questo caso la
procedura è la stessa, con l’unica eccezione che nel calcolo della portata di massa attraverso il bilancio del
lavoro è necessario considerare l’apporto della massa d’aria fredda del fan.
p08
Scelto un valore di , risultano univocamente determinati il rendimento della turbina e la portata di
p09
massa in ingresso.

m T80 , ηtb .
p08

Essendo noto il valore della portata di massa si può calcolare il salto tra la temperatura in ingresso del fan
e quella in ingresso della turbina di bassa pressione.
� � �
m T80 m T20 p02 p03 p04 p05 p06 p07 T90 � �
= 1 + B
p08 p02 p03 p04 p05 p06 p07 p08 T20

Ora è possibile calcolare il salto termico nella turbina di bassa pressione. Questo permette di ricalcolare
il valore del salto termico tra temperatura di ingresso del fan e quello dell’ingresso della turbina di bassa. Nel
caso i due valori siano uguali l’iterazione si ferma.
� � � 1−k 8 �

∆T890 k8
p08
= ηtb 1 −
T80 p09

∆T890
∆T23
0
T20 cp2 ṁa
= (1 + B)
0
T8 T2 T8 cp8 ṁa + ṁf
0 0

� � � �
T80 T80
= ?
T20 T20
πesp bilancio lavoro

Una volta verificata l’uguaglianza si possono determinare i valori di temperatura all’uscita della turbina di
bassa pressione, oltre alla pressione in uscita dalla medesima turbina.
T90 = T80 − ∆T89
0

p09 0
p09 = p
p08 8

Si hanno nuovamente tutti gli elementi per calcolare l’area dell’ugello del flusso caldo, nel caso questa sia
uguale all’area trovata precedentemente, col calcolo delle prestazioni in condizioni di progetto, significa che
i punti determinati sui grafici delle macchine riportano un andamento realistico di funzionamento: è quindi

52 • Matching tra componenti di un turbofan


Ottimizzazione e matching fuori progetto

possibile tracciare un punto sul diagramma di macchina del fan. Ne segue la possibilità di tracciare i punti per
gli altri due compressori, ma per motivi di tempo si è ritenuto sufficiente considerare solo la ventola.
Con la formula per il calcolo dell’area si concludono tutte le iterazioni ancora mantenute aperte, in ogni
caso si prosegue con il punto successivo della linea...

cp9 = f (T90 )

k9 = f (T90 )

ṁ + ṁf .
Anew = � � �
� � � k2 � � k9k+1

�2cp9 T 0 pamb 9 pamb 9
9 p0 9 p09

Matching tra componenti di un turbofan • 53


Scelte di programmazione

54 • Matching tra componenti di un turbofan


Scelte di programmazione

5 Scelte di programmazione

N
ei capitoli precedenti si è fornita una dettagliata spiegazione della teoria che sta alla base dello
studio funzionamento di un turbofan trialbero.
Bisogna però ricordare che tutta l’analisi è stata effettuata adottando come piattaforma di calcolo
Matlab 7 ™. Nello studio dei risultati non è possibile scindere la teoria dallo strumento su cui essa è stata
applicata.
Nella mole di lavoro che ha accompagnato questo elaborato di tesi ha giocato un ruolo fondamentale il tentativo
di raggiungere un livello rigoroso nell’acquisizione delle risorse di calcolo.

Durante lo sviluppo di tutti i programmi necessari ad elaborare i dati (si rimanda all’appendice per una lista
parziale di essi), si è sempre cercato di porre l’attenzione sull’efficienza degli algoritmi utilizzati sia in termini
di risorse computazionali sia in termini di errori di calcolo. L’esperienza effettuata durante il corso di laurea
con i corsi di informatica e calcolo numerico, che si basavano su di una piattaforma non squisitamente diretta ad
un utilizzo matematico (linguaggio C), ha giovato soprattutto per aggirare e superare ostacoli legati all’algebra
del personal computer.
Come si è potuto apprezzare il programma di matching si rifà costantemente all’uso di grafici. Nella
prossima sezione verrà approfondito il metodo di acquisizione di tali informazioni.

Matching tra componenti di un turbofan • 55


Scelte di programmazione

Acquisizione dei grafici

In un primo tempo, nel tentativo di implementare la variabilità di calore specifico a pressione costante
e dell’esponente isoentropico in funzione della temperatura, si era pensato di acquisire i grafici presenti in
letteratura ([1], [2]) attraverso una scansione. Successivamente, utilizzando excel e la sua possibilità di gestire i
grafici, si sovrapponevano alla curva scansionata il maggior numero di punti possibile. Fatto questo si passava
a Matlab ed immesse le coordinate dei punti in due array si era in grado di dedurre i coefficienti delle equazioni
utilizzando un fitting.
Questo approccio, pur fornendo una discreta qualità delle informazioni, mancava completamente di
ripetibilità.
Per come è stato sviluppato il programma la versatilità e la possibilità di gestione anche da parte di utenza
non esperta erano obiettivi irrinunciabili.
Appariva piuttosto primitivo il sistema studiato con l’ausilio di excel, inoltre la scala delle immagini
doveva essere sempre ricontrollata. Di fronte ad immagini dalla qualità non eccellente (linee grosse, sporcizia
nella stampa probabilmente viziata dall’acquisizione delle stesse immagini stampate sui testi da altre fonti) la
possibilità d’errore nella scelta dei punti aumentava visibilmente.
Per questo motivo si è deciso di sviluppare un pacchetto nominato “imageread ”. Si tratta di un ambiente
sviluppato con Matlab in grado di leggere un file di immagine “.gif”. Esiste infatti una funzione di Matlab
che permette di salvare in una matrice tutte le informazioni relative ad una immagine, pixel per pixel.

FIGURA 5.1 • Per es-


por re meglio la car atter-
istica dei pixel l’imagine è
stata tr attata con ua gri-
glia bianca che li mettesse
in risalto.

56 • Matching tra componenti di un turbofan


Scelte di programmazione

Partendo da questa funzione base si è sviluppato poi un algoritmo che era in grado di ridurre la mole
dei dati immagazzinati, considerando di importanza per la matrice solamente i pixel che rispettassero la
condizione di essere di colore nero. In questo modo ad esempio una immagine di [400,400] pixel (fig. 5.1)
passava dall’occupare una matrice [400,400,3] (la terza dimensione dovuta alle informazioni di colore RGB
Red Green Blue) ad una matrice [n,2] con n numero di pixel neri dell’immagine, e le due colonne a riportare
le coordinate x e y all’interno della figura (fig. 5.2).

�������������������������
���

����

����

����
�����������������

����

����

����

����
FIGURA 5.2 • Questo è il secondo
step: si passa da una matrice conte-
���� nente le infor mazioni per tutti i pixel
dell’immagine ad una contenente esclu-
sivamente le coordinate dei pixel neri.

���� ���� ���� ���� ��� ���� ���� ����


��������������������

Appare evidente però che se l’immagine di partenza aveva uno spessore maggiore di un pixel (e questo
avviene sempre quando si tratta di immagini importate attraverso una scansione), si aveva l’andamento
seghettato in figura (fig. 5.2).A questo punto interviene una seconda parte del programma che esegue una
media dei pixel colonna per colonna ne riporta poi il valore mediato di coordinate. Così se una linea è spessa 6
viene riportato solo il 3 se invece è spessa 5 viene riportato il valore 2.5. Il risultato dell’operazione è esposto
in figura (fig. 5.3).

Matching tra componenti di un turbofan • 57


Scelte di programmazione

�������������������������

���

���

���
�����������������

���

���

��� FIGURA 5.3 • Sulla


sinistr a si nota il terzo
passaggio del progr am-
ma, viene effettuata una
��� media colonna per col-
onna tr a i punti deter mi-
nati precedentemente, si
��� ��� ��� ��� ��� ��� ��� ��� ��� passa da uno spessore
�������������������� medio di 5 pixel ad 1
pixel soltanto.

Ora quindi si hanno a disposizione due vettori di coordinate che descrivono in modo univoco una curva, è
possibile eseguire un fitting di tali array in modo tale che siano disponibili equazione caratteristica e coefficienti.
Il risultato di una generica linea di velocità del compressore acquisita e portata sottoforma di equazione è in
figura (fig. 5.4).

�������������������������

����

���

����

����
�����������������

����

����

���
FIGURA 5.4 • Quest
���� è il quar to ed ultimo
passaggio si tr atta del
������������ fitting dei punti prec-
edentemente individuati.
In questo modo si ot-
���� tiene un’equazione con
ben deter minati coef-
���� ficienti.
���� ���� ���� ���� ��� ���� ���� ���� ����
��������������������

58 • Matching tra componenti di un turbofan


Scelte di programmazione

Questo approccio è stato applicato anche nell’acquisizione delle informazioni relative alla mappa della
turbina, dei compressori, oltre che, come già accennato, al grafico della variabilità in funzione della temperatura
di calore specifico a pressione costante e dell’esponente isoentropico.
Nelle immagini successive sono posti a confronto i due grafici, l’originale scansionato e quello rielaborato
con “imageread ”.

����������������������

� ��� � ��� � ��� � ��� �

���
��

���

���


��������������������

���

���

���

���


� ��� � ��� � ��� � ��� �

FIGURA 5.5 • In figur a si


nota la differenza tr a il gr afico
della turbina originale scan-
sionato da [1], e la ver sione
rielabor ata al calcolatore.

Matching tra componenti di un turbofan • 59


Scelte di programmazione

�������������������������

���������
��������

���
��������

��������


��������
����������������

���

���

�����������
���

���������� ��������

��� ���������

���������
�������� ���������

� ��� ��� ��� ��� � ���
��������������������

FIGURA 5.6 • Come nella


figua precedente si nota la
differenza tr a il gr afico della
compressore (G.L. Co Conver se
1984) original
originale [5], e la
ver sione rrielabor ata al calco-
latore.

60 • Matching tra componenti di un turbofan


Scelte di programmazione

�������������
���
���������
����

���

����

��� ���������������
��
����

���

����

��� � ����������������������������

����


��� ��� ��� ���� ���� ���� ���� ���� ����
���������������

������������
���

����

����

����
� ��������������
����
�������

���

����
�����������������������������
����

����

���� ���������

���
��� ��� ��� ���� ���� ���� ���� ���� ����
���������������

FIGURA 5.7 • Anche in


questo caso si r affrontano i
due gr afici: il primo ottenuto
dalla analisi attr aver so “im-
ageread“ delle immagini del
secondo (gr afico contenuto
in [2]).

Matching tra componenti di un turbofan • 61


Appendice A

62 • Matching tra componenti di un turbofan


Appendice A

A Appendice A

ottimizzatore.m
Questo file raccoglie diverse funzioni, legge due files esterni: “risultato.txt”, e “contorno.txt”,
effettua il calcolo per tutto il ciclo termodinamico e stampa su “risultato.txt” i risultati; inoltre salva
all’interno della cartella “var” tutti i vettori di risultato in modo da renderli fruibili con più velocità in eventuali
operazioni successive. Esiste la possibilità di stampare i risultati su di un file “Cpinteractive.xls” che
effettua anche il dimensionamento dei componenti, inoltre è sempre possibile abilitare la stampa di tutte le
variabili di interesse all’interno del file “dati_accessori.txt”.
%Analizza il file ʻrisultato.txtʼ proveniente da anal- RISULTATO(1,:) = 0;
isi dellʼalgoritmo end
%genetico
nome_file= ʻrisultato.txtʼ;
[RISULTATO,NOME_R,nn]= risultato_open(nome_file); %Avvia lo studio del ciclo termodinamico

[VALORE,RISULTATO] = ciclo_termodin(VALORE,RISULTATO
%Legge il file ʻcontorno.txtʼ contenente le informazi- );
oni al contorno
%relative alle condizioni operative del turbofan
%Scrive i risultati sul file ʻrisultato.txtʼ in modo
nome_file= ʻcontorno.txtʼ; tale da poter essere
fprintf(1,ʼ%e\nʼ,RISULTATO(1,:)); %analizzato dallʼalgoritmo genetico.

if RISULTATO(1,:) > 0 risultato_write(NOME_R,RISULTATO,nn);


[VALORE,NOME,n]= contorno_open(nome_file); fprintf(1,ʼOK\nʼ);

risultato_open.m
Legge il contenuto del file “risultato.txt” ignorando qualsiasi riga cominci per “#”.

function [RISULTATO,NOME_R,n_ris] = risultato_ tline = fgetl(file_ris);


open(nome_file) matches = findstr(tline, ʻ#ʼ);
file_ris = fopen(nome_file, ʻrtʼ); num = length(matches);
y = 0; if num == 0
n_ris=1; risultato = sscanf(tline, ʻ%*s %*s %eʼ, [1,
inf]);
%Apre il file dei dati dei risultati, elimina tutte le nome_r = sscanf(tline,ʼ%s %*s %*gʼ, [1,inf]);
righe RISULTATO(n_ris,:)= risultato;
%che contengano come carattere # (in modo da offrire NOME_R(n_ris,:)= nome_r;
righe di commento) n_ris=n_ris+1;
%crea due array con i nomi e i valori delle variabile
contenute nel file. end
end
while feof(file_ris) == 0 fclose(file_ris);

Matching tra componenti di un turbofan • 63


Appendice A

risultato_write.m
Questo file stampa i risultati sul file “risultato.txt”.

function[] = risultato_write(NOME_R,RISULTATO,nn)
%Con questa funzione viene aperto il file ʻrisultato.
txtʼ in modalitaʼ while i < (nn)
%scrittura, avviene così lʼaggiornamento del file con fprintf(f_scrivi,ʼ%s = %.8e\nʼ,NOME_
i nuovi risultati R(i,:),RISULTATO(i,:));
i=i+1;
i=1; end
status = fclose(f_scrivi);
f_scrivi = fopen(ʻrisultato.txtʼ,ʼwʼ);
fprintf(f_scrivi,ʼ#DATI RISULTATO\nʼ);
fprintf(f_scrivi,ʼ#__________________________________
________\nʼ);
fprintf(f_scrivi,ʼ#\nʼ);
fprintf(f_scrivi,ʼ#Di seguito sono forniti dati di ri-
sultato\nʼ);
fprintf(f_scrivi,ʼ#\nʼ);

contorno_open.m
Questo file legge le informazioni contenute in “contorno.txt” ignorando tutte le righe che cominciano
per “# “.

function[VALORE,NOME,n] = contorno_open(nome_file) pamb = pressure_ratio(Alti);


SIZE = 100;
fid = fopen(nome_file, ʻrtʼ); Tamb = temperature_ratio(Alti);
y = 0; fprintf(1,ʼ%e\nʼ,Tamb);
n=1;
roam = ro_ratio(Alti);
%Apre il file dei dati al contorno, elimina tutte le
righe k=pure_air(Tamb);
%che contengano come carattere # (in modo da offrire
righe di commento) cp0=pure_air_cp(Tamb);
%crea due array con i nomi e i valori delle variabile
contenute nel file. camb = Mach*sqrt((k-1)*cp0*Tamb);

while feof(fid) == 0 Tam0=Tamb+power(camb,2)/(2*cp0);


tline = fgetl(fid);
matches = findstr(tline, ʻ#ʼ);
num = length(matches);
if num == 0 VALORE(16,:) = pamb;
valore = sscanf(tline, ʻ%*s %*s %eʼ, [1, inf]); VALORE(17,:) = Tamb;
nome = sscanf(tline,ʼ%s %*s %*gʼ, [1,inf]); VALORE(18,:) = camb;
VALORE(n,:)= valore; VALORE(19,:) = roam;
NOME(n,:)= nome; VALORE(20,:) = Tam0;
n=n+1; fprintf(1,ʼk= %e\nʼ,k);
end fprintf(1,ʼcp0= %e\nʼ,cp0);
end fprintf(1,ʼpamb= %e\nʼ,pamb);
fprintf(1,ʼTamb= %e\nʼ,Tamb);
fclose(fid); fprintf(1,ʼcamb= %e\nʼ,camb);
fprintf(1,ʼTam0= %e\nʼ,Tam0);
%Dati preliminari calcolo dei dati al contorno

Alti = VALORE(1,:);
Mach = VALORE(2,:);

64 • Matching tra componenti di un turbofan


Appendice A

ciclo_termodin.m
Questo file effettua il vero e proprio calcolo delle prestazioni del propulsore nelle condizioni di progetto.

function[VALORE,RISULTATO] = ciclo_termodin(VALORE,R %fprintf(1,ʼ%e\n%e\nʼ,n_it,k3);


ISULTATO) Tef=Tefi;
cefan = sqrt(2*nufa*cpef*Tef*(1-power((pamb/
npdi = VALORE(3,:); pef0),((k3-1)/k3))));
nfan = VALORE(4,:); %----------------------------------------------------
nufa = VALORE(5,:); %COMPRESSORE DI BASSA
ncob = VALORE(6,:); %----------------------------------------------------
ncoa = VALORE(7,:); p40= pef0*PCb;
fpco = VALORE(8,:);
Huch = VALORE(9,:); %Esegue un primo calcolo della T40, con k3 e media
T60m = VALORE(10,:); con la Tef in modo da calcolare il k4
ntua = VALORE(11,:); k4=k3;
ntum = VALORE(12,:);
ntub = VALORE(13,:); Tef4i= Tef*(1+(1/ncob)*(power(PCb,((k4-1)/k4))-1));
nuge = VALORE(14,:); for n_it = 1:1:10
T50m = VALORE(15,:); Tef40media=(Tef4i+Tef)/2;
pamb = VALORE(16,:); k4=pure_air(Tef40media);
Tamb = VALORE(17,:); cp4=pure_air_cp(Tef40media);
camb = VALORE(18,:); T40o = Tef*(1+(1/ncob)*(power(PCb,((k4-1)/k4))-
roam = VALORE(19,:); 1));
Tam0 = VALORE(20,:);
PCfa = RISULTATO(2,:); deltat=abs(T40o-Tef4i);
PCb = RISULTATO(3,:); if deltat<toll
PCa = RISULTATO(4,:); break;
B = RISULTATO(5,:); end
mah = RISULTATO(6,:); Tef4i=T40o;
%---------------------------------------------------- end
%ATMOSFERA T40=Tef4i;
%---------------------------------------------------- %----------------------------------------------------
T20 = Tam0; %COMPRESSORE DI ALTA
%---------------------------------------------------- %----------------------------------------------------
%PRESA DINAMICA p50= p40*PCa;
%----------------------------------------------------
k2=pure_air(T20); %Esegue un primo calcolo della T50, con k4 e media
cp2=pure_air_cp(T20); con la T40 in modo da calcolare il k5
p20= pamb*power((1+ npdi*(T20/Tamb-1)),(k2/(k2-1))); k5=k4;
%----------------------------------------------------
%FAN T50i= T40*(1+(1/ncoa)*(power(PCa,((k5-1)/k5))-1));
%---------------------------------------------------- for n_it = 1:1:10
pef0= PCfa*p20; T45media=(T50i+T40)/2;
%Esegue una convergenza per il calcolo della Tef, k5=pure_air(T45media);
utilizzando dapprima cp5=pure_air_cp(T45media);
%il k2 per ottenere il valore approssimato di Tef T50o = T40*(1+(1/ncoa)*(power(PCa,((k5-1)/k5))-
dopodichè itera. si è 1));
%utilizzato un valore per tolleranza (toll) per tron-
care lʼiterazione deltat=abs(T50o-T50i);
%in caso di convergenza if deltat<toll
toll=0.0001; break;
k3=k2; end
Tefi= T20*(1+(1/nfan)*(power(PCfa,((k3-1)/k3))-1)); T50i=T50o;
for n_it = 1:1:10 end
T2efmedia=(Tefi+T20)/2; T50=T50i;
k3=pure_air(T2efmedia);
cpef=pure_air_cp(T2efmedia); %----------------------------------------------------
Tefo = T20*(1+(1/nfan)*(power(PCfa,((k3-1)/k3))- %CAMERA DI COMBUSTIONE
1)); %----------------------------------------------------
p60=p50*fpco;
deltat=abs(Tefo-Tefi); %Ora viene fatta una media della portata di aria che
if deltat<toll passa nel
break; %compressore ma viene utilizzata per raffreddamento,
end circa il 78
Tefi=Tefo; %percento e la portata dʼaria che viene interessata
end da combustione a
%end %regime quasi stechiometrico (la portata dʼaria pri-

Matching tra componenti di un turbofan • 65


Appendice A

maria che collide cp9=cp8;


%contro lo swirler). T90i=T80-(cp3*(1+B)*(Tef-T20))/(cp9*(1+f));
for n_it = 1:1:10
%cp=(comb_prod_cp(T60m)*0.12+pure_air_cp(T60m)*0.78); T8090=(T80+T90i)/2;
cp6=comb_prod_cp((T50+T60m)/2); cp9=comb_prod_cp(T8090);
T90o=T80-(cp3*(1+B)*(Tef-T20))/(cp9*(1+f));
f= (cp6*T60m-pure_air_cp(T50)*T50)/(Huch-cp6*T60m); k9=comb_prod(T8090);
k6=comb_prod((T50+T60m)/2);
%---------------------------------------------------- deltat=abs(T90o-T90i);
%TURBINA DI ALTA PRESSIONE (muove il compressore di if deltat<toll
alta pressione) break;
%---------------------------------------------------- end
%cp5=pure_air_cp((T50+T40)/2); T90i=T90o;
end
T90=T90i;
%Prima approssimazione della T70 effettuata con cp5 p90=p80*power((1-(1/ntub)*(1-(T90/T80))),(k9/(k9-
corretto e cp7 1)));
%stimato. PTe3=p80/p90;
cp7=cp6; %cp9=(comb_prod_cp(T8090)*0.12+pure_air_
cp(T8090)*0.78);
T70i=T60m-(cp5*(T50-T40))/(cp7*(1+f)); %k9=(comb_prod(T8090)*0.12+pure_air(T8090)*0.78);
%----------------------------------------------------
for n_it = 1:1:10 %UGELLO DEL FLUSSO CALDO
T60m70=(T60m+T70i)/2; %----------------------------------------------------
cp7=comb_prod_cp(T60m70); T100=T90;
k7=comb_prod(T60m70); p100=p90;
T70o=T60m-(cp5*(T50-T40))/(cp7*(1+f));
deltat=abs(T70o-T70i); %k10=(comb_prod(T90)*0.12+pure_air(T90)*0.78);
if deltat<toll
break; k10=comb_prod(T90);
end
T70i=T70o; %cp10=(comb_prod_cp(T90)*0.12+pure_air_cp(T90)*0.78);
end cp10=comb_prod_cp(T90);
T70=T70i;
%k7=(comb_prod(T60m70)*0.12+pure_air(T60m70)*0.78); ce=sqrt(2*nuge*cp10*T100*(1-power((pamb/p100),((k10-
p70=p60*power((1-1/ntua*(1-T70/T60m)),(k7/(k7-1))); 1)/k10))));
PTe1=p60/p70; p10=pamb;
T10=T100-power(ce,2)/(2*cp10);
%---------------------------------------------------- %fprintf(1,ʼVarie Pressioni:\np20= %.12g\npef0=
%TURBINA DI MEDIA PRESSIONE (muove il compressore di %.12g\np40= %.12g\np50= %.12g\np60= %.12g\np70=
bassa pressione) %.12g\np80= %.12g\np90= %.12g\np100= %.12g\nʼ,p20,
%---------------------------------------------------- pef0,p40,p50,p60,p70,p80,p90,p100);
cp4=pure_air_cp((Tef+T40)/2); %Dati finali
Rs= ((1+f)/(1+B)*ce+B/(1+B)*cefan-camb)/1000;
cp8=cp7; R=Rs*(1+B)*mah;
TSFC=1000*f/((1+f)*ce+B*cefan-(1+B)*camb);
T80i=T70-(cp4*(T40-Tef))/(cp8*(1+f)); ntermico=((1+f)*power(ce,2)/2-power(camb,2)/
2+B*(power(cefan,2)/2-power(camb,2)/2))/(f*Huch);
for n_it = 1:1:10 npropulsivo=((1+f)*ce+B*cefan-(1+B)*camb)*camb/
T7080=(T80i+T70)/2; ((1+f)*power(ce,2)/2-power(camb,2)/
2+B*(power(cefan,2)/2-power(camb,2)/2));
cp8=comb_prod_cp(T7080); n0=ntermico*npropulsivo;
T80o=T70-(cp4*(T40-Tef))/(cp8*(1+f)); PCtot=PCa*PCb*PCfa;
mac=mah*B;
k8=comb_prod(T7080); maf=mah*f;
deltat=abs(T80o-T80i); Hfan=cp3*(Tef-T20);
if deltat<toll Hcpm=cp4*(T40-Tef);
break; Hcpa=cp5*(T50-T40);
end %Passaggio variabili
T80i=T80o; RISULTATO(2 ,:)=PCfa;
end RISULTATO(3 ,:)=PCb;
T80=T80i; RISULTATO(4 ,:)=PCa;
p80=p70*power((1-1/ntum*(1-T80/T70)),(k8/(k8-1))); RISULTATO(5 ,:)=B;
PTe2=p70/p80; RISULTATO(6 ,:)=mah;
%cp8=(comb_prod_cp(T7080)*0.12+pure_air_ RISULTATO(7 ,:)=mac;
cp(T7080)*0.78); RISULTATO(8 ,:)=maf;
%k8=(comb_prod(T7080)*0.12+pure_air(T7080)*0.78); RISULTATO(9 ,:)=PCtot;
%---------------------------------------------------- RISULTATO(10 ,:)=ntermico;
%TURBINA DI BASSA PRESSIONE (muove il fan) RISULTATO(11,:)=npropulsivo;
%---------------------------------------------------- RISULTATO(12,:)=n0;
cp3=pure_air_cp((T20+Tef)/2); RISULTATO(13,:)=Rs;

66 • Matching tra componenti di un turbofan


Appendice A

RISULTATO(14,:)=TSFC; fprintf(1,ʼk9= %e\nʼ,k9);


%Modifica il file ʻCpinteractive.xlsʼ fprintf(1,ʼk10= %e\nʼ,k10);
if RISULTATO(1,:)== -12 %Scrittura del file ʻdati_accessori.txtʼ si tratta di
d=[k2;k2;k3;k4;k5;k6;k7;k8;k9;k10]; un file di
s=xlswrite(ʻCpinteractive.xlsʼ, d, ʻOriginaleʼ, %controllo atto alla verifica dei conti effettuati nel
ʻK39ʼ); ciclo.puÚ essere
d=[cp2;cp2;cp3;cp4;cp5;cp6;cp7;cp8;cp9;cp10]; %eliminato tranquillamente.
t=xlswrite(ʻCpinteractive.xlsʼ, d, ʻOriginaleʼ, VALORE_A(1 ,:)=cp2;
ʻK50ʼ); VALORE_A(2 ,:)=cp3;
d=[PCfa]; VALORE_A(3 ,:)=cp4;
t=xlswrite(ʻCpinteractive.xlsʼ, d, ʻOriginaleʼ, VALORE_A(4 ,:)=cp5;
ʻF22ʼ); VALORE_A(5 ,:)=cp7;
d=[PCb]; VALORE_A(6 ,:)=cp8;
t=xlswrite(ʻCpinteractive.xlsʼ, d, ʻOriginaleʼ, VALORE_A(7 ,:)=cp9;
ʻF29ʼ); VALORE_A(8 ,:)=cp10;
d=[PCa]; VALORE_A(9 ,:)=k2;
t=xlswrite(ʻCpinteractive.xlsʼ, d, ʻOriginaleʼ, VALORE_A(10,:)=k3;
ʻF35ʼ); VALORE_A(11,:)=k4;
%Controllo a video dei risultati da questo punto in VALORE_A(12,:)=k5;
poi lʼalgoritmo puoʼ VALORE_A(13,:)=k6;
%essere troncato in fase di ottimizzazione informat- VALORE_A(14,:)=k7;
ica VALORE_A(15,:)=k8;
fprintf(1,ʼpamb= %e\nʼ,pamb); VALORE_A(16,:)=k9;
fprintf(1,ʼp20= %e\nʼ,p20); VALORE_A(17,:)=k10;
fprintf(1,ʼpef0= %e\nʼ,pef0); VALORE_A(18,:)=pamb;
fprintf(1,ʼp40= %e\nʼ,p40); VALORE_A(19,:)=p20;
fprintf(1,ʼp50= %e\nʼ,p50); VALORE_A(20,:)=pef0;
fprintf(1,ʼp60= %e\nʼ,p60); VALORE_A(21,:)=p40;
fprintf(1,ʼp70= %e\nʼ,p70); VALORE_A(22,:)=p50;
fprintf(1,ʼp80= %e\nʼ,p80); VALORE_A(23,:)=p60;
fprintf(1,ʼp90= %e\nʼ,p90); VALORE_A(24,:)=p70;
fprintf(1,ʼp100= %e\nʼ,p100); VALORE_A(25,:)=p80;
fprintf(1,ʼT20= %e\nʼ,T20); VALORE_A(26,:)=p90;
fprintf(1,ʼTef= %e\nʼ,Tef); VALORE_A(27,:)=p100;
fprintf(1,ʼT40= %e\nʼ,T40); VALORE_A(28,:)=p10;
fprintf(1,ʼT50= %e\nʼ,T50); VALORE_A(29,:)=T20;
fprintf(1,ʼT60= %e\nʼ,T60m); VALORE_A(30,:)=Tef;
fprintf(1,ʼT70= %e\nʼ,T70); VALORE_A(31,:)=T40;
fprintf(1,ʼT80= %e\nʼ,T80); VALORE_A(32,:)=T50;
fprintf(1,ʼT90= %e\nʼ,T90); VALORE_A(33,:)=T60m;
fprintf(1,ʼT100= %e\nʼ,T100); VALORE_A(34,:)=T70;
fprintf(1,ʼcefan= %e\nʼ,cefan); VALORE_A(35,:)=T80;
fprintf(1,ʼce= %e\nʼ,ce); VALORE_A(36,:)=T90;
fprintf(1,ʼntermico= %e\nʼ,ntermico); VALORE_A(37,:)=T100;
fprintf(1,ʼnprop= %e\nʼ,npropulsivo); VALORE_A(38,:)=cefan;
fprintf(1,ʼntot= %e\nʼ,n0); VALORE_A(39,:)=ce;
fprintf(1,ʼf= %e\nʼ,f); VALORE_A(40,:)=camb;
fprintf(1,ʼTSFC= %e\nʼ,TSFC); VALORE_A(41,:)=Rs;
fprintf(1,ʼcp2= %e\nʼ,cp2); VALORE_A(42,:)=R;
fprintf(1,ʼcpef= %e\nʼ,cpef); VALORE_A(43,:)=Tamb;
fprintf(1,ʼcp4= %e\nʼ,cp4); VALORE_A(44,:)=Hfan;
fprintf(1,ʼcp5= %e\nʼ,cp5); VALORE_A(45,:)=Hcpm;
fprintf(1,ʼcp6= %e\nʼ,cp6); VALORE_A(46,:)=Hcpa;
fprintf(1,ʼcp7= %e\nʼ,cp7); VALORE_A(47,:)=PTe1;
fprintf(1,ʼcp8= %e\nʼ,cp8); VALORE_A(48,:)=PTe2;
fprintf(1,ʼcp9= %e\nʼ,cp9); VALORE_A(49,:)=PTe3;
fprintf(1,ʼcp10= %e\nʼ,cp10); save(ʻvar/CICLO.matʼ,ʼVALORE_Aʼ,ʼRISULTATOʼ,ʼVALOREʼ,
fprintf(1,ʼk2= %e\nʼ,k2); ʼ-appendʼ);
fprintf(1,ʼk3= %e\nʼ,k3);
fprintf(1,ʼk4= %e\nʼ,k4); dati_accessori(VALORE_A);
fprintf(1,ʼk5= %e\nʼ,k5);
fprintf(1,ʼk6= %e\nʼ,k6); end
fprintf(1,ʼk7= %e\nʼ,k7);
fprintf(1,ʼk8= %e\nʼ,k8);

Matching tra componenti di un turbofan • 67


Appendice A

Temperature_ratio.m
Questo file è una funzione che legge in ingresso l’altitudine di volo e calcola il valore della temperatura
rispetto ad un valore di riferimento tabellato [2].

%In questa funzione è racchiusa la curva per la tem- else if Alti>=10.95 & Alti<19.95
perature ratio rispetto allʼaltitudine % p1 = 1.8267e-017;
%la curva è stata ottenuta dalla tabella sul testo di % p2 = 0.732;
sistemi propulsivi Tr=0*Alti+0.7519;
%la curva è stata divisa in tre tronconi, nei quali % Tr=0*p1*Alti+p2;
si nota unʼandamento else if Alti>=20
%lineare, per cui lʼoperatore prima di ritornare il
risultato effettua una p1 = 0.0034327;
%verifica. Si è ristretto il campo di applicabilit‡ da p2 = 0.68307;
0 a 30 km s.l.m.
Tr=p1*Alti+p2;
function[Tr] = temperature_ratio(Alti)
%Alti=21; end
end
if Alti<10.95 end
p1 = -0.022515;
p2 = 0.99992; Tref=288.2;
Tr=Tr*Tref;
Tr=p1*Alti+p2;

ro_ratio.m
Questo file è una funzione che legge in ingresso l’altitudine di volo e calcola il valore della densità dell’aria
rispetto ad un valore di riferimento tabellato [2].

%In questa funzione è racchiusa la curva per la den- p1 = -2.1114e-007;


sity ratio rispetto allʼaltitudine p2 = -2.0552e-005;
%la curva eʼ stata ottenuta dalla tabella sul testo p3 = 0.002781;
di sistemi propulsivi p4 = -0.091952;
%nel caso venga immessa unʼaltitudine superiore a 30 p5 = 0.99645;
km il software la pone
%uguale a 30 km. ro_r=p1*power(Alti,4)+p2*power(Alti,3)+p3*power(Alti,2
)+p4*Alti+p5;
function[ro_r] = ro_ratio(Alti)
if Alti>30 roref=1.225;
Alti=30; ro_r=ro_r*roref;
end

pressure_ratio.m
Questo file è una funzione che legge in ingresso l’altitudine di volo e calcola il valore della pressione
dell’aria rispetto ad un valore di riferimento tabellato [2].

%In questa funzione è racchiusa la curva per la pres- end


sure ratio rispetto allʼaltitudine p1 = 9.4821e-007;
%la curva eʼ stata ottenuta dalla tabella sul testo p2 = -0.00011775;
di sistemi propulsivi, p3 = 0.0055201;
%nel caso venga immessa unʼaltitudine superiore a 30 p4 = -0.1182;
km il software la pone p5 = 1.0001;
%uguale a 30 km. pr=p1*power(Alti,4)+p2*power(Alti,3)+p3*power(Alti,
function[pr] = pressure_ratio(Alti) 2)+p4*Alti+p5;
if Alti>30 pref=101300;
Alti=30; pr=pr*pref;

68 • Matching tra componenti di un turbofan


Appendice A

pure_air.m
Questo file, data una temperatura assoluta in ingresso, restituisce il valore dell’esponente isoentropico per
l’aria pura. I grafici sono stati ottenuti con la tecnica descritta in maniera approfondita nei capitoli precedenti.
Come immagine di base si è fatto riferimento a [2].
%In questa funzione è racchiusa la curva per
lʼesponente isoentropico per p1 = -2.0787e-014;
%la miscela aria pura p2 = 1.0789e-010;
%La curva è stata ottenuta per punti attraverso excel p3 = -1.7027e-007;
e successivamente p4 = 2.3062e-005;
%riportata in matlab attraverso una regressione cu- p5 = 1.3984;
bica k=p1*power(T,4)+p2*power(T,3)+p3*power(T,2)+p4*powe
r(T,1)+p5;
function[k] = pure_air(T)

pure_air_cp.m
Questo file, data una temperatura assoluta in ingresso, restituisce il valore del calore specifico a pressione
costante per l’aria pura. I grafici sono stati ottenuti con la tecnica descritta in maniera approfondita nei capitoli
precedenti. Come immagine di base si è fatto riferimento a [2].
%In questa funzione è racchiusa la curva per per il p1 = -2.3293e-011;
cp per p2 = 9.739e-009;
%la miscela aria pura p3 = 0.00029918;
%La curva è stata ottenuta per punti attraverso excel p4 = 0.97836;
e successivamente
%riportata in matlab attraverso una regressione cu- k=p1*power(T,3)+p2*power(T,2)+p3*T+p4;
bica %porta la variabile da kj/kg a j/kg.
function[k] = pure_air_cp(T) k=k*1000;

comb_prod.m
Questo file, data una temperatura assoluta in ingresso, restituisce il valore dell’esponente isoentropico per
i prodotti della combustione a rapporto stechiometrico. I grafici sono stati ottenuti con la tecnica descritta in
maniera approfondita nei capitoli precedenti. Come immagine di base si è fatto riferimento a [2].
%In questa funzione è racchiusa la curva per function[k] = comb_prod(T)
lʼesponente isoentropico per p1 = -8.7739e-015;
%la miscela prodotti della combustione stechiomet- p2 = 3.5369e-011;
rica. p3 = -1.1539e-008;
%La curva è stata ottenuta per punti attraverso excel p4 = -0.00012574;
e successivamente p5 = 1.4065;
%riportata in matlab attraverso una regressione cu- k=p1*power(T,4)+p2*power(T,3)+p3*power(T,2)+p4*T+p
bica 5;

Matching tra componenti di un turbofan • 69


Appendice A

comb_prod_cp.m
Questo file, data una temperatura assoluta in ingresso, restituisce il valore del calore specifico a pressione
costante per i prodotti della combustione a rapporto stechiometrico. I grafici sono stati ottenuti con la tecnica
descritta in maniera approfondita nei capitoli precedenti. Come immagine di base si è fatto riferimento a [2].
%In questa funzione è racchiusa la curva per il cp function[k] = comb_prod_cp(T)
per
%la miscela prodotti della combustione stechiomet- p1 = -3.1235e-011;
rica. p2 = 6.7201e-008;
%La curva è stata ottenuta per punti attraverso excel p3 = 0.0001406;
e successivamente p4 = 0.96346;
%riportata in matlab attraverso una regressione cu- k=p1*power(T,3)+p2*power(T,2)+p3*T+p4;
bica %porta la variabile da kj/kg a j/kg.
k=k*1000;

plotter_grafici.m
Questo file è stato utilizzato per ottenere i grafici precedentemente citati (calore specifico a pressione
costante, esponente isoentropico, pressure ratio...). Una volta portati in grafico i valori delle tabelle [2], è stato
effettuato un fitting.

T = [500 , 750 , 1000 , 1250 , 1500 , 1750 , 2000 ];


Ma_ratio = [1.00000,0.98870,0.97720,0.96560,0.95380,0
pureair=[1.38, 1.359 , 1.338 , 1.32 , 1.309 , 1.3 , .94200,0.92990,0.91780,0.90540,0.89290,0.88020,0.867
1.295]; 30,0.86710,0.86710,0.86710,0.86710,0.86710,0.86710,0
.86710,0.86710,0.86710,0.86900,0.87090,0.87290,0.874
90,0.87690,0.87880,0.88080,0.88270,0.88470,0.88660];
comair=[1.343 , 1.318 , 1.295 , 1.2785 , 1.2668 ,
1.258 , 1.251]; T_ratio = [1.00000,0.97740,0.95490,0.93240,0.90980,0
.88730,0.86480,0.84230,0.81980,0.79730,0.77480,0.752
30,0.75190,0.75190,0.75190,0.75190,0.75190,0.75190,0
pureair_cp=[1.047 , 1.095 , 1.14 , 1.182 , 1.2225 , .75190,0.75190,0.75190,0.75510,0.75850,0.76200,0.765
1.25 , 1.263]; 40,0.76890,0.77230,0.77580,0.77920,0.78260,0.78610];

T_ratio1 = [1.00000,0.97740,0.95490,0.93240,0.90980,
comair_cp=[1.13 , 1.2 , 1.2672 , 1.322 , 1.368 , 0.88730,0.86480,0.84230,0.81980,0.79730,0.77480,0.7
1.408 , 1.434]; 5230];

T_ratio2 = [0.75190,0.75190,0.75190,0.75190,0.75190,0
%plot(T,pureair) .75190,0.75190,0.75190,0.75190];
%plot(T,comair)
%plot(T,pureair_cp) T_ratio3 = [0.75510,0.75850,0.76200,0.76540,0.76890,0
%plot(T,comair_cp) .77230,0.77580,0.77920,0.78260,0.78610];

Altitude= [0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,1 Altitude1= [0,1,2,3,4,5,6,7,8,9,10,11];


7,18,19,20,21,22,23,24,25,26,27,28,29,30];
Altitude2= [12,13,14,15,16,17,18,19,20];
p_ratio = [1.00000,0.88700,0.78460,0.69200,0.60850,0
.53340,0.46600,0.40570,0.35190,0.30400,0.26150,0.224 Altitude3= [21,22,23,24,25,26,27,28,29,30];
00,0.19150,0.16360,0.13990,0.11950,0.10220,0.08734,0
.07466,0.06383,0.05457,0.04667,0.03995,0.03422,0.029 %plot(Altitude,p_ratio)
33,0.02516,0.02160,0.01855,0.01595,0.01372,0.01181];
%plot(Altitude,T_ratio)
ro_ratio = [1.00000,0.90750,0.82170,0.74230,0.66890,0
.60120,0.53890,0.48170,0.42920,0.38130,0.33760,0.297 %plot(Altitude,Ma_ratio)
80,0.25460,0.21760,0.18600,0.15900,0.13590,0.11620,0
.09930,0.08489,0.07258,0.06181,0.05266,0.04490,0.038 %plot(Altitude,ro_ratio)
32,0.03272,0.02797,0.02392,0.02047,0.01753,0.01503];

70 • Matching tra componenti di un turbofan


Appendice A

%plot(Altitude1,T_ratio1)
plot(pigreco,n80)
%plot(Altitude2,T_ratio2)
pigreco=[11,12,13,14,15,16,17,18,19,20,21];
%plot(Altitude3,T_ratio3) n60=[0.59,0.665,0.715,0.75,0.78,0.795,0.79,0.775,0.74
,0.675,0.595];
%PLOTTER GRAFICI DI MACCHINA (COMPRESSORE)
%plot(pigreco,n60)
pigreco= [1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,1
8,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35 pigreco=[7,8,9,10,11,12,13,14,15];
,36,37,38,39,40];
n100=[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0.55,0.585, n40=[0.465,0.56,0.63,0.68,0.713,0.717,0.702,0.655,0.
0.625,0.665,0.7,0.735,0.765,0.79,0.805,0.81,0.807 59];
,0.782,0.73,0.64,0,0,0,0,0,0,0,0,0];
n80= [0,0,0,0,0,0,0,0,0,0,0,0,0,0.6,0.66,0.71,0.75,0. %plot(pigreco,n40)
785,0.815,0.84,0.858,0.86,0.84,0.815,0.765,0.685,0.5
75,0,0,0,0,0,0,0,0,0,0,0,0,0]; pigreco=[3,4,5,6,7,8,9,10];
n60=[0,0,0,0,0,0,0,0,0,0,0.59,0.665,0.715,0.75,0.78 n20=[0.23,0.32,0.405,0.47,0.51,0.52,0.495,0.455]
,0.795,0.79,0.775,0.74,0.675,0.595,0,0,0,0,0,0,0,
0,0,0,0,0,0,0,0,0,0,0,0]; %plot(pigreco,n20)
n40=[0,0,0,0,0,0,0.465,0.56,0.63,0.68,0.713,0.717,0
.702,0.655,0.59,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 %PLOTTER GRAFICI ADIMENSIONALI MASS FLOW
,0,0,0,0,0,0,0,0];
n20=[0,0,0.23,0.32,0.405,0.47,0.51,0.52,0.495,0.455 pigreco= [18,19,20,21,22,23,24,25,26,27,28,29,30,31];
,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, m100=[1,1,1,1,1,1,1,1,1,1,1,1,1,1];
0,0,0,0,0,0];
%plot(m100,pigreco)
m100=[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1,1,1,1,1,1
,1,1,1,1,1,1,1,0,0,0,0,0,0,0,0,0]; pigreco= [14,15,16,17,18,19,20,21,22,23,24,25,26,27,
m80=[0,0,0,0,0,0,0,0,0,0,0,0,0,0.9368,0.9366,0.9364,0 28];
.9362,0.9357,0.9353,0.9348,0.9344,0.934,0.9335,0.929 m80=[0.9368,0.9366,0.9364,0.9362,0.9357,0.9353,0.93
5,0.9266,0.915,0.905,0.886,0,0,0,0,0,0,0,0,0,0,0,0]; 48,0.9344,0.934,0.9335,0.9295,0.9266,0.915,0.905,
m60=[0,0,0,0,0,0,0,0,0,0,0,0.7875,0.7875,0.7875,0.7 0.886];
875,0.7875,0.7875,0.7875,0.785,0.774,0.755,0.72,0
,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]; %plot(pigreco,m80)
m40=[0,0,0,0,0,0,0,0.6265,0.6265,0.62375,0.6185,0.6
13,0.605,0.592,0.5785,0.5575,0.525,0,0,0,0,0,0,0, pigreco=[12,13,14,15,16,17,18,19,20,21,22];
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]; m60=[0.7875,0.7875,0.7875,0.7875,0.7875,0.7875,0.7875
m20=[0,0,0,0.435,0.433,0.426,0.415,0.405,0.385,0.36 ,0.785,0.774,0.755,0.72];
45,0.326,0.274,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
0,0,0,0,0,0,0,0,0,0,0]; %plot(pigreco,m60)

%plot(n100,pigreco,n80,pigreco,n60,pigreco,n40,pigrec pigreco=[8,9,10,11,12,13,14,15,16,17];
o,n20,pigreco) m40=[0.6265,0.6265,0.62375,0.6185,0.613,0.605,0.592,0
%plot(m100,pigreco,m80,pigreco,m60,pigreco,m40,pigrec .5785,0.5575,0.525];
o,m20,pigreco)
%plot(pigreco,m40)
%xlabel(ʻrendimentiʼ)
%ylabel(ʻrapporto di compressioneʼ) pigreco=[4,5,6,7,8,9,10,11,12];
%title(ʻMacchina adimensionale: rendimentiʼ) m20=[0.435,0.433,0.426,0.415,0.405,0.385,0.3645,0.326
,0.274];
pigreco= [18,19,20,21,22,23,24,25,26,27,28,29,30,31];
%plot(pigreco,m20)
n100=[0.55,0.585,0.625,0.665,0.7,0.735,0.765,0.79,0.8
05,0.81,0.807,0.782,0.73,0.64]; %CALCOLO EQUAZIONE SURGE LINE

%plot(pigreco,n100) pigreco=[12,17,22,28,31];
pigreco= [14,15,16,17,18,19,20,21,22,23,24,25,26,27]; surge_line=[0.274,0.525,0.72,0.886,1];

n80=[0.6,0.66,0.71,0.75,0.785,0.815,0.84,0.858,0.86,0 %plot(surge_line,pigreco)
.84,0.815,0.765,0.685,0.575];

Matching tra componenti di un turbofan • 71


Appendice A

plot_ambiente.m
Questo file è stato creato per stampare a video il grafico 1 Capitolo 1.

x=0:0.1:30; title(axes1,ʼ\bf\fontsize{12}Condizioni ambienteʼ);


pres=pressure_ratio(x)/101300; xlabel(axes1,ʼAltitude [km]ʼ);
dens=ro_ratio(x)/1.225; ylabel(axes1,{ʻ\rho_r_a_t_i_o T_r_a_t_i_o p_r_a_t_i_
x1=0:0.1:10.9; oʼ});
Temp1=temperature_ratio(x1); hold(axes1,ʼallʼ);
x2=11:0.1:19.9; %% Create plot
Temp2=temperature_ratio(x2); plot1 = plot(x1,y1,ʼLineWidthʼ,2,ʼParentʼ,axes1,ʼDisp
x3=20:0.1:30; layNameʼ,ʼpressure ratioʼ);
Temp3=temperature_ratio(x3); %% Create plot
Temp=[Temp1,Temp2,Temp3]; plot2 = plot(x1,y2,ʼLineWidthʼ,2,ʼParentʼ,axes1,ʼDisp
%plot(x,pres,x,dens,x,Temp) layNameʼ,ʼ\rho ratioʼ);
x1=x; %% Create plot
y1=pres; plot3 = lot(x1,y3,ʼLineWidthʼ,2,ʼParentʼ,axes1,ʼDispl
y2=dens; ayNameʼ,ʼTemperature ratioʼ);
y3=Temp; %% Create legend
figure1 = figure; legend1 = legend(axes1,{ʻpressure ratioʼ,ʼ\rho
%% Create axes ratioʼ,ʼTemperature ratioʼ},ʼPositionʼ,[0.1486
axes1 = axes(ʻParentʼ,figure1); 0.1381 0.2245 0.1631]);
ylim(axes1,[0 1]);

plot_originale.m
Questo file è stato creato per stampare a video il grafico del compressore, inoltre effettua una verifica dei
dati iniziali della mappa in modo tale da poter confrontare le mappe.

%Questo è un file di controllo per verificare in ma- refy=0;


niera veloce che tutta REFy=0;
%la procedura di scala mappa per valori uguali a WWCN=0;
quelli di partenza produca
%una mappa identica allʼoriginale.
for i=1:1:9
Wcn(i)=Wcmax(i)-W80/W80old*(Wcmax(i)-
%His=91707.84002; Wcorig(i,2));
Ncnew(i)=sqrt(Nold(i)^2/fhis);
His=107131,8962; end

pi_ref=2.6; %ALL GRAPHIC MANAGER:


%In questa prima parte vengono riscalate tutte le
pi_old=2.6; curve di velocit‡ in base
%ai criteri precedentemente illustrati, vengono poi
Hisorig= 107131,8962; plottate con un basic
Wcax=[0.39604,0.66795,0.78346,0.78346,0.88292,0.96337 %fitting di grado 4
,1.0178,1.0367,1.1011]; %Coefficienti equazioni curve rendimenti
Wcorig=ref_points; (pigreco,rendimenti)
Nold=[0.359,0.528,0.661,0.791,0.88,0.952,1,1.028,1.1
44]; %-------------------------------------------------
% N= 0.359 Rendimento
pi_rel50=0.123559085+0.08*log(pi_ref); %-------------------------------------------------
r=1;
W_N50=1.1037*power(pi_ref,-0.2223); xin=0;
xout=0.084;
W80=0.1751*exp(-0.1042*pi_ref);
p1 = -1743.8;
W80old=0.1751*exp(-0.1042*pi_old); p2 = 96.375;
p3 = 10.591;
fhis=His/Hisorig; p4 = 0.32465;

wref=0; [X0,Y0]=plot_cubic(p1,p2,p3,p4,xin,xout);
refx=0;

72 • Matching tra componenti di un turbofan


Appendice A

%--------------------------------------------------
[refx(r) I]=max(Y0); % N= 0.952 Rendimento
refy(r)=X0(I); %--------------------------------------------------
r=r+1;
%-------------------------------------------------- xin=0.3735;
% N= 0.528 Rendimento xout=0.964;
%--------------------------------------------------
p1 = -0.83594;
xin=0; p2 = 0.39699;
xout=0.1965; p3 = 1.1172;
p4 = 0.28265;
p1 = -75.88;
p2 = -6.4141; [X5,Y5]=plot_cubic(p1,p2,p3,p4,xin,xout);
p3 = 8.1785; [refx(r) I]=max(Y5);
p4 = 0.14495; refy(r)=X5(I);
r=r+1;
[X1,Y1]=plot_cubic(p1,p2,p3,p4,xin,xout);
[refx(r) I]=max(Y1); %--------------------------------------------------
refy(r)=X1(I); % N= 1.0 Rendimento
r=r+1; %--------------------------------------------------
%--------------------------------------------------
% N= 0.661 Rendimento xin=0.4325;
%-------------------------------------------------- xout=1.09;

xin=0.0825; p1 = -1.1502;
xout=0.3445; p2 = 1.8001;
p3 = -0.22279;
p1 = -2.7567; p4 = 0.56923;
p2 = -10.274;
p3 = 6.3937; [X6,Y6]=plot_cubic(p1,p2,p3,p4,xin,xout);
p4 = 0.068776; [refx(r) I]=max(Y6);
refy(r)=X6(I);
[X2,Y2]=plot_cubic(p1,p2,p3,p4,xin,xout); r=r+1;
[refx(r) I]=max(Y2);
refy(r)=X2(I); %--------------------------------------------------
r=r+1; % N= 1.028 Rendimento
%--------------------------------------------------
%--------------------------------------------------
% N= 0.791 Rendimento xin=0.455;
%-------------------------------------------------- xout=1.138;

xin=0.18; p1 = -0.14934;
xout=0.565; p2 = -0.29621;
p3 = 1.2201;
p1 = -2.011; p4 = 0.21569;
p2 = -2.5448;
p3 = 3.5717; [X7,Y7]=plot_cubic(p1,p2,p3,p4,xin,xout);
p4 = 0.096164; [refx(r) I]=max(Y7);
refy(r)=X7(I);
[X3,Y3]=plot_cubic(p1,p2,p3,p4,xin,xout); r=r+1;
[refx(r) I]=max(Y3);
refy(r)=X3(I); %--------------------------------------------------
r=r+1; % N= 1.144 Rendimento
%--------------------------------------------------
%--------------------------------------------------
% N= 0.88 Rendimento xin=0.5445;
%-------------------------------------------------- xout=1.2765;
xin=0.279;
xout=0.77; p1 = 0.31691;
p2 = -1.296;
p1 = -1.4355; p3 = 1.961;
p2 = -0.18816; p4 = -0.07467;
p3 = 2.005;
p4 = 0.17934; [X8,Y8]=plot_cubic(p1,p2,p3,p4,xin,xout);
[refx(r) I]=max(Y8);
[X4,Y4]=plot_cubic(p1,p2,p3,p4,xin,xout); refy(r)=X8(I);
[refx(r) I]=max(Y4); r=r+1;
refy(r)=X4(I);
r=r+1; i=1;

%-----------------------------------------------

Matching tra componenti di un turbofan • 73


Appendice A

% Calcola la linea per N corretto= 0.359


%----------------------------------------------- p2=polyfit(x2,y2,4);
y2 = p2(1)*power(x2,4)+p2(2)*power(x2,3)
p1 = 96.22; +p2(3)*power(x2,2)+p2(4)*power(x2,1)+p2(5);
p2 = -150.66; [WMIN(i) I]=min(y2);
p3 = -0.47071; SY(i)=x2(I);
p4 = -0.68372; wref(i)=p2(1)*power(refy(i),4)+p2(2)*power(ref
p5 = 0.39604; y(i),3)+p2(3)*power(refy(i),2)+p2(4)*power(refy(i),1
)+p2(5);
x0 = 0:0.001:0.088;
y0 = p1*power(x0,4)+p2*power(x0,3) +p3*power(x0,2 i=i+1;
)+p4*power(x0,1)+p5; %-----------------------------------------------
WMAX(i)=max(y0); % Calcola la linea per N corretto= 0.791
%-----------------------------------------------
[WMIN(i) I]=min(y0);
p1 = -15.678;
% [y0]=scale_y(y0,WMAX(i),WMIN(i),Wcn(i)); p2 = 18.979;
p3 = -8.8428;
p0=polyfit(x0,y0,4); p4 = 1.8095;
y0 = p0(1)*power(x0,4)+p0(2)*power(x0,3) +p0(3 p5 = 0.64799;
)*power(x0,2)+p0(4)*power(x0,1)+p0(5);
[WMIN(i) I]=min(y0); x3 = 0.18:0.0005:0.5696;
SY(i)=x0(I); y3 = p1*power(x3,4)+p2*power(x3,3) +p3*power(x3,2
wref(i)=p0(1)*power(refy(i),4)+p0(2)*power(refy )+p4*power(x3,1)+p5;
(i),3) +p0(3)*power(refy(i),2)+p0(4)*power(refy(i),1 WMAX(i)=max(y3);
)+p0(5); [WMIN(i) I]=min(y3);

i=i+1; % [y3]=scale_y(y3,WMAX(i),WMIN(i),Wcn(i));
%----------------------------------------------- p3=polyfit(x3,y3,4);
% Calcola la linea per N corretto= 0.528 y3 = p3(1)*power(x3,4)+p3(2)*power(x3,3)
%----------------------------------------------- +p3(3)*power(x3,2)+p3(4)*power(x3,1)+p3(5);
[WMIN(i) I]=min(y3);
p1 = -123.44; SY(i)=x3(I);
p2 = 19.754; wref(i)=p3(1)*power(refy(i),4)+p3(2)*power(refy(
p3 = -1.8941; i),3) +p3(3)*power(refy(i),2)+p3(4)*power(refy(i),1)
p4 = -0.29469; +p3(5);
p5 = 0.56274;
i=i+1;
x1 = 0:0.001:0.2; %-----------------------------------------------
y1 = p1*power(x1,4)+p2*power(x1,3) +p3*power(x1,2 % Calcola la linea per N corretto= 0.88
)+p4*power(x1,1)+p5; %-----------------------------------------------
WMAX(i)=max(y1);
[WMIN(i) I]=min(y1); p1 = -3.8993
% [y1]=scale_y(y1,WMAX(i),WMIN(i),Wcn(i)); p2 = 5.9884
p3 = -3.4896
p1=polyfit(x1,y1,4); p4 = 0.91237
y1 = p1(1)*power(x1,4)+p1(2)*power(x1,3) p5 = 0.79282
+p1(3)*power(x1,2)+p1(4)*power(x1,1)+p1(5);
[WMIN(i) I]=min(y1); x4 = 0.279:0.001:0.777;
SY(i)=x1(I); y4 = p1*power(x4,4)+p2*power(x4,3) +p3*power(x4,2
wref(i)=p1(1)*power(refy(i),4)+p1(2)*power(re )+p4*power(x4,1)+p5;
fy(i),3) +p1(3)*power(refy(i),2)+p1(4)*power(refy(i) WMAX(i)=max(y4);
,1)+p1(5); [WMIN(i) I]=min(y4);
% [y4]=scale_y(y4,WMAX(i),WMIN(i),Wcn(i));
i=i+1;
%----------------------------------------------- p4=polyfit(x4,y4,4);
% Calcola la linea per N corretto= 0.661 y4 = p4(1)*power(x4,4)+p4(2)*power(x4,3)
%----------------------------------------------- +p4(3)*power(x4,2)+p4(4)*power(x4,1)+p4(5);

p1 = -45.816;
p2 = 30.17; [WMIN(i) I]=min(y4);
p3 = -8.7078; SY(i)=x4(I);
p4 = 0.97759; wref(i)=p4(1)*power(refy(i),4)+p4(2)*power(ref
p5 = 0.6315; y(i),3)+p4(3)*power(refy(i),2)+p4(4)*power(refy(i),1
)+p4(5);
x2 = 0.0825:0.0005:0.347;
y2 = p1*power(x2,4)+p2*power(x2,3) +p3*power(x2,2 i=i+1;
)+p4*power(x2,1)+p5; %----------------------------------------------
WMAX(i)=max(y2); % Calcola la linea per N corretto= 0.952
[WMIN(i) I]=min(y2); %----------------------------------------------
% [y2]=scale_y(y2,WMAX(i),WMIN(i),Wcn(i)); p1 = -1.6094;

74 • Matching tra componenti di un turbofan


Appendice A

p2 = 3.2769; [WMIN(i) I]=min(y7);


p3 = -2.4623; SY(i)=x7(I);
p4 = 0.80924; wref(i)=p7(1)*power(refy(i),4)+p7(2)*power(refy(i)
p5 = 0.86498; ,3) +p7(3)*power(refy(i),2)+p7(4)*power(refy(i),1)+
p7(5);
i=i+1;
x5 = 0.3735:0.0005:0.966;
y5 = p1*power(x5,4)+p2*power(x5,3) +p3*power(x5,2 %----------------------------------------------
)+p4*power(x5,1)+p5; % Calcola la linea per N corretto= 1.144
WMAX(i)=max(y5); %----------------------------------------------
[WMIN(i) I]=min(y5); p1 = -0.33415;
% [y5]=scale_y(y5,WMAX(i),WMIN(i),Wcn(i)); p2 = 1.1222;
p5=polyfit(x5,y5,4); p3 = -1.3862;
y5 = p5(1)*power(x5,4)+p5(2)*power(x5,3) p4 = 0.74589;
+p5(3)*power(x5,2)+p5(4)*power(x5,1)+p5(5); p5 = 0.95323;

[WMIN(i) I]=min(y5); x8 = 0.5445:0.001:1.282;


SY(i)=x5(I); y8 = p1*power(x8,4)+p2*power(x8,3) +p3*power(x8,2
wref(i)=p5(1)*power(refy(i),4)+p5(2)*power(ref )+p4*power(x8,1)+p5;
y(i),3)+p5(3)*power(refy(i),2)+p5(4)*power(refy(i),1
)+p5(5); WMAX(i)=max(y8);
[WMIN(i) I]=min(y8);
i=i+1;
SY(i)=x8(I);
%----------------------------------------------- WMAX(i)=max(y8);
% Calcola la linea per N corretto= 1.000 [WMIN(i) I]=min(y8);
%----------------------------------------------- SY(i)=x8(I);
p1 = -0.98344; %wref(i)=p8(1)*power(refy(i),10)+p8(2)*power(ref
p2 = 2.449; y(i),9) +p8(3)*power(refy(i),8)+p8(4)*power(refy(i),
p3 = -2.2557; 7)+p8(5)*power(refy(i),6)+p8(6)*power(refy(i),5)+p8(
p4 = 0.91026; 7)*power(refy(i),4)+p8(8)*power(refy(i),3)+p8(9)*pow
p5 = 0.88191; er(refy(i),2)+p8(10)*refy(i)+p8(11);
wref(i) = p1*power(refy(i),4)+p2*power(refy(i),3
x6 = 0.4325:0.001:1.096; ) +p3*power(refy(i),2)+p4*power(refy(i),1)+p5;
y6 = p1*power(x6,4)+p2*power(x6,3) +p3*power(x6,2
)+p4*power(x6,1)+p5; %----------------------------------------------
WMAX(i)=max(y6); %reference line
[WMIN(i) I]=min(y6); %---------------------------------------------
% [y6]=scale_y(y6,WMAX(i),WMIN(i),Wcn(i)); csi=0;
p6=polyfit(x6,y6,4); for i=1:1:7
y6 = p6(1)*power(x6,4)+p6(2)*power(x6,3) %WWCN(i)=Wcn(i);
+p6(3)*power(x6,2)+p6(4)*power(x6,1)+p6(5); if wref(i)<1.2 && wref(i)>0
csi=csi+1;
[WMIN(i) I]=min(y6); WWCN(csi)=wref(i);
SY(i)=x6(I); REFy(csi)=refy(i);
wref(i)=p6(1)*power(refy(i),4)+p6(2)*power(ref end
y(i),3)+p6(3)*power(refy(i),2)+p6(4)*power(refy(i),1 end
)+p6(5); p=polyfit(WWCN,REFy,4);
x9 = WWCN(1):0.001:WWCN(csi);
i=i+1; y9 = p(1)*power(x9,4)+p(2)*power(x9,3) +p(3)*powe
r(x9,2)+p(4)*power(x9,1)+p(5);
%---------------------------------------------- y9label= p(1)*power(0.6,4)+p(2)*power(0.6,3)
% Calcola la linea per N corretto= 1.028 +p(3)*power(0.6,2)+p(4)*power(0.6,1)+p(5);
%----------------------------------------------
p1 = -0.72297; %---------------------------------------------
p2 = 1.9222; %surge line
p3 = -1.8878; %---------------------------------------------
p4 = 0.81128; p=polyfit(WMIN,SY,4);
p5 = 0.90782;

x7 = 0.455:0.001:1.139;
y7 = p1*power(x7,4)+p2*power(x7,3) +p3*power(x7,2 x10 = WMIN(1):0.001:WMIN(9);
)+p4*power(x7,1)+p5;
WMAX(i)=max(y7); y10 = p(1)*power(x10,4)+p(2)*power(x10,3)+p(3)*po
[WMIN(i) I]=min(y7); wer(x10,2)+p(4)*power(x10,1)+p(5);
% [y7]=scale_y(y7,WMAX(i),WMIN(i),Wcn(i));
p7=polyfit(x7,y7,4); y10label=p(1)*power(0.7,4)+p(2)*power(0.7,3)+p(3)
y7 = p7(1)*power(x7,4)+p7(2)*power(x7,3) *power(0.7,2)+p(4)*power(0.7,1)+p(5)
+p7(3)*power(x7,2)+p7(4)*power(x7,1)+p7(5); %----------------------------------------------
%STAMPA IL GRAFICO
%--------------------------------------------------

Matching tra componenti di un turbofan • 75


Appendice A

------------- axes1)
%% Create figure i=i+1;
hold on text(WMAX(i),0.30,[ʻ \leftarrow N=ʼ,num2str(Ncne
figure1 = figure(ʻPaperPositionʼ,[0.6345 6.345 20.3 w(i),ʼ%.3fʼ)],ʼHorizontalAlignmentʼ,ʼleftʼ,ʼParentʼ
15.23],ʼPaperSizeʼ,[20.98 29.68]); ,axes1)

%% Create axes text(0.6,y9label,ʼ \leftarrow ref lineʼ,ʼHorizont


axes1 = axes(ʻPositionʼ,[0.13 0.11 0.587 0.815],ʼPare alAlignmentʼ,ʼleftʼ,ʼParentʼ,axes1)
ntʼ,figure1); i=i+1;
axis(axes1,[0 1.2 0 1.4]); text(WMAX(i),0.96,[ʻN=ʼ,num2str(Ncnew(i),ʼ%.3fʼ),
title(axes1,[ʻ\bf\fontsize{12}Mappa Compressore \pi ʼ\rightarrow ʻ],ʼHorizontalAlignmentʼ,ʼrightʼ,ʼPare
=ʼ,num2str(pi_ref)]); ntʼ,axes1)
xlabel(axes1,ʼrel. corr. mass flowʼ); i=i+1;
ylabel(axes1,ʼ(\pi _R_E_F-1)/(\pi-1)ʼ); text(WMAX(i),1.09,[ʻN=ʼ,num2str(Ncnew(i),ʼ%.3fʼ),
box(axes1,ʼonʼ); ʼ\rightarrow ʻ],ʼHorizontalAlignmentʼ,ʼrightʼ,ʼPare
hold(axes1,ʼallʼ); ntʼ,axes1)
%hold on i=i+1;
text(WMAX(i),1.17,[ʻN=ʼ,num2str(Ncnew(i),ʼ%.3fʼ),ʼ
PP=plot (y0,x0,y1,x1,y2,x2,y3,x3,y4,x4,y5,x5,y6,x6,y \downarrow ʻ],ʼHorizontalAlignmentʼ,ʼrightʼ,ʼParent
7,x7,y8,x8,x9,y9,x10,y10,ʼLineWidthʼ,2); ʼ,axes1)
i=i+1;
text(WMAX(i),1.28,[ʻN=ʼ,num2str(Ncnew(i),ʼ%.3fʼ),ʼ
text(0.1,1.3,ʼ\itEquazioniʼ,ʼHorizontalAlignmentʼ \rightarrow ʻ],ʼHorizontalAlignmentʼ,ʼrightʼ,ʼParen
,ʼleftʼ,ʼParentʼ,axes1) tʼ,axes1)

text(0.7,y10label,ʼsurge line\rightarrow ʻ,ʼHoriz


ontalAlignmentʼ,ʼrightʼ,ʼParentʼ,axes1) axes2 = axes(ʻPositionʼ,[0.7453 0.11 0.1597 0.815],ʼ
i=1; YAxisLocationʼ,ʼrightʼ,ʼParentʼ,figure1);
text(WMAX(i),0,[ʻN=ʼ,num2str(Ncnew(i),ʼ%.3fʼ),ʼ\ axis(axes2,[0 1 0 1.4]);
rightarrow ʻ],ʼHorizontalAlignmentʼ,ʼrightʼ,ʼVertic xlabel(axes2,ʼ\etaʼ);
alAlignmentʼ,ʼbottomʼ,ʼParentʼ,axes1) ylabel(axes2,ʼ(\pi_R_E_F-1)/(\pi-1)ʼ);
i=i+1; box(axes2,ʼonʼ);
text(WMAX(i),0,[ʻ \leftarrow N=ʼ,num2str(Ncnew(i hold(axes2,ʼallʼ);
),ʼ%.3fʼ)],ʼHorizontalAlignmentʼ,ʼleftʼ,ʼVerticalAli PP2=plot(Y0,X0,Y1,X1,Y2,X2,Y3,X3,Y4,X4,Y5,X5,Y6,X6,Y7
gnmentʼ,ʼbottomʼ,ʼParentʼ,axes1) ,X7,ʼParentʼ,axes2);
i=i+1; text(0.1,1.3,ʼ\itRendimentiʼ,ʼHorizontalAlignment
text(WMAX(i),0.1,[ʻ \leftarrow N=ʼ,num2str(Ncnew ʼ,ʼleftʼ,ʼParentʼ,axes2)
(i),ʼ%.3fʼ)],ʼHorizontalAlignmentʼ,ʼleftʼ,ʼParentʼ,
axes1)
i=i+1; hold off
text(WMAX(i),0.2,[ʻ \leftarrow N=ʼ,num2str(Ncnew
(i),ʼ%.3fʼ)],ʼHorizontalAlignmentʼ,ʼleftʼ,ʼParentʼ,

scale_y.m
Questo file è parte integrante del programma per di map-scaling per il compressore.Modifica i vettori y in
modo tale da ottenere una curva congruente con le ipotesi dopodichè effettua un fitting.

function [yy]= scale_y(y,Wmax,Wmin,Wnew,WMIN); WWnew=Wmax-int4;


for ff=1:1:sizex
[sizex,sizey]=size(y); yy(ff)=(y(ff)-WMIN)/int3;
if sizey>sizex if yy(ff)<2*eps
sizex=sizey; yy(ff)=WWnew;
end else
int1=Wmax-Wmin; yy(ff)=yy(ff)*int4+WWnew;
int2=Wmax-Wnew; end
int3=Wmax-WMIN; % yy(ff)=yy(ff)*(Wmax-Wnew)+Wnew;
int4=int2/int1*int3; end

76 • Matching tra componenti di un turbofan


Appendice A

scala_turbina.m
Questo file scala le mappe delle 3 turbine e dell’ugello secondo il metodo esposto nei capitoli precedenti.

function [x6a,y6a,y6an,x6m,y6m,y6mn,x6b,y6b,y6bn,x6u,
y6u,massflow1,massflow2,massflow3,massflow4,PCesp1,PCesp %--------------------------------------------------
2,PCesp3,PCesp4] = scala_turbina () % Elaborazione curva TURBINA DI BASSA PRESSIONE
%-------------------------------------------------- %--------------------------------------------------
% Stampa i grafici per i tre alberi relativi a mass massflow3=mass*sqrt(T80)/p80; %Turbina di bassa
flow delle turbine
%-------------------------------------------------- [x0b,y0b,x1b,y1b,x2b,y2b,x3b,y3b,x4b,y4b,x5b,y5b,x6b,
y6b]=forma_turb(massflow3,3,etat3);

% Carica il file contenente tutti i risultati


dellʼultimo ciclo di %--------------------------------------------------
% ottimizzazione (si tratta del file di ottimizzazi- % Elaborazione curva UGELLO FLUSSO CALDO
one) %--------------------------------------------------

load(ʻvar/CICLO.matʼ) massflow4=mass*sqrt(T90)/p90; %Ugello flusso caldo

%Passaggio di variabili [x0u,y0u,x1u,y1u,x2u,y2u,x3u,y3u,x4b,y4u,x5u,y5u,x6u,


y6u]=forma_turb(massflow4,PCesp4,etau1);
p60=VALORE_A(23,:);
p70=VALORE_A(24,:); %-------------------------------------------------
p80=VALORE_A(25,:); % Calcola la curva allʼuscita della turbina di alta
p90=VALORE_A(26,:); %-------------------------------------------------
max=16;
T60=VALORE_A(33,:); num=(max-1)*1000;
T70=VALORE_A(34,:);
T80=VALORE_A(35,:);
T90=VALORE_A(36,:); [sizex,sizey]=size(x6a);
if sizey>sizex
PCesp1=VALORE_A(47,:)-1; sizex=sizey;
PCesp2=VALORE_A(48,:)-1; end
PCesp3=VALORE_A(49,:)-1; a=-1;
PCesp4=VALORE_A(27,:)/VALORE_A(28,:)-1; for i=1:1:sizex
k=comb_prod(power((y6a(i)/massflow1*p60),2));
etat1=VALORE(11,:); y6an(i)=y6a(i)*x6a(i)*sqrt(1-y3a(i)*(1-
etat2=VALORE(12,:); power(x6a(i),(1-k)/k)));
etat3=VALORE(13,:); if y6an(i) >massflow2 & a==-1
etau1=VALORE(14,:); SCALE(1)=x6a(i)-1;
a=1;
mass=RISULTATO(6,:)+RISULTATO(8,:); end

end

%------------------------------------------------ %-------------------------------------------------
% Elaborazione curva TURBINA DI ALTA PRESSIONE % Calcola la curva allʼuscita della turbina di media
%------------------------------------------------ %-------------------------------------------------

massflow1=mass*sqrt(T60)/p60; %Turbina di alta [sizex,sizey]=size(x6m);


if sizey>sizex
sizex=sizey;
[x0a,y0a,x1a,y1a,x2a,y2a,x3a,y3a,x4a,y4a,x5a,y5a,x6a, end
y6a]=forma_turb(massflow1,3,etat1); a=-1;

%------------------------------------------------- for i=1:1:sizex


% Elaborazione curva TURBINA DI MEDIA PRESSIONE k=comb_prod(power((y6m(i)/massflow2*p70),2));
%------------------------------------------------- y6mn(i)=y6m(i)*x6m(i)*sqrt(1-y3m(i)*(1-
power(x6m(i),(1-k)/k)));
massflow2=mass*sqrt(T70)/p70; %Turbina di media if y6mn(i) >massflow3 & a==-1
SCALE(2)=x6m(i)-1;
a=1;
end
[x0m,y0m,x1m,y1m,x2m,y2m,x3m,y3m,x4m,y4m,x5m,y5m,x6m, end
y6m]=forma_turb(massflow2,3,etat2);

Matching tra componenti di un turbofan • 77


Appendice A

a=1;
%---------------------------------------------------- end
% Calcola la curva allʼuscita della turbina di bassa end
%--------------------------------------------------
x6a=1:((max-1)*power(PCesp1,1)/SCALE(1))/num:(max-
[sizex,sizey]=size(x6b); 1)*power(PCesp1,1)/SCALE(1)+1;
if sizey>sizex x6m=1:((max-1)*power(PCesp2,1)/SCALE(2))/num:(max-
sizex=sizey; 1)*power(PCesp2,1)/SCALE(2)+1;
end x6b=1:((max-1)*power(PCesp3,1)/SCALE(3))/num:(max-
a=-1; 1)*power(PCesp3,1)/SCALE(3)+1;
for i=1:1:sizex
k=comb_prod(power((y6b(i)/massflow3*p80),2)); PCesp1=PCesp1+1;
y6bn(i)=y6b(i)*x6b(i)*sqrt(1-y3b(i)*(1- PCesp2=PCesp2+1;
power(x6b(i),(1-k)/k))); PCesp3=PCesp3+1;
if y6bn(i) > massflow4 & a==-1 PCesp4=PCesp4+1;
SCALE(3)=x6b(i)-1;

plot_cubic.m
Il programma dati i coefficienti e gli estremi di x, stampa una quadratica di terzo grado.

function [X,Y] = plot_cubic(p1,p2,p3,p4,xin,xout);

X=xin:0.001:xout;
Y = p1*power(X,3)+p2*power(X,2) +p3*power(X,1)+p4;

cercaoptimum.m
Nel cercare il compromesso migliore per il calcolo delle prestazioni fuori progetto del propulsore è stato
implementato questo programma che provvede ad un calcolo iterativo alla ricerca del miglior compromesso e
stampa in funzione di rapporto di bypass il valore del rapporto di compressione del fan.
pamb = pressure_ratio(Alti);
%-------------------------------------------
%---------------OTTIMIZZATORE--------------- Tamb = temperature_ratio(Alti);
%------------------------------------------- fprintf(1,ʼ%e\nʼ,Tamb);

%Analizza il file ʻrisultato.txtʼ proveniente da anal- roam = ro_ratio(Alti);


isi dellʼalgoritmo
%genetico k=pure_air(Tamb);

nome_file= ʻrisultato.txtʼ; cp0=pure_air_cp(Tamb);


[RISULTATO,NOME_R,nn]= risultato_open(nome_file);
%Legge il file ʻcontorno.txtʼ contenente le informazi- camb = Mach*sqrt((k-1)*cp0*Tamb);
oni al contorno
%relative alle condizioni operative del turbofan Tam0=Tamb+power(camb,2)/(2*cp0);
Temp0=Tam0;
nome_file= ʻcontorno.txtʼ;
fprintf(1,ʼ%e\nʼ,RISULTATO(1,:)); [sizex,sizey]=size(x);
if sizey>sizex
%if RISULTATO(1,:) > 0 sizex=sizey;
[VALORE,NOME,n]= contorno_open(nome_file); end
RISULTATO(1,:) = 50; Temp0=Tam0;
%end Tam00=Tam0;
toll=0.0001;
x=1:0.01:50; for i=1:1:sizex
for n_it = 1:1:10
Alti = VALORE(1,:); T2efmedia=(Temp0+Tam0)/2;
Mach = VALORE(2,:); k2=pure_air(T2efmedia);
cpef=pure_air_cp(T2efmedia);
Temp0=Tam00*(1+1/VALORE(4,:)*(power(x(i),(k2-1)/

78 • Matching tra componenti di un turbofan


Appendice A

k2)-1)); b=b+1;
RR(b)=RISULTATO(13,:);
deltat=abs(Temp0-Tam0); else
if deltat<toll [RMAX(aa),PCmedia(aa)] = max(RR);
break; [NTOTMAX(aa),PCmedia1(aa)] = max(NTOT);
end break;
Tam0=Temp0; break;
Temp00(i)=Temp0; break;
end end
end end

for i=1:1:sizex
if Temp00(i)>VALORE(15,:) end
pimax= x(i-1); if isreal(RISULTATO(13,:))==1
break; R(a)=RISULTATO(13,:);
end spinta=RISULTATO(13,:);
end else
%Avvia lo studio del ciclo termodinamico [Rmax(aa),I(aa)] = max(R);
[ntotmax(aa),J(aa)] = max(ntot);
n0=RISULTATO(12,:);
spinta=RISULTATO(13,:); fprintf(1,ʼRapporto di By Pass: %e\nʼ,ii);
marco=1; RISULTATO(2,:)=I(aa);
mirco=1; for SS=1:0.1:pimax/I(aa)
picomp= pimax/RISULTATO(2,:); RISULTATO(3,:)=SS;
a=0; RISULTATO(4,:)=pimax/I(aa)/SS;
aa=0; [VALORE,RISULTATO] = ciclo_termodin(VALORE,RISUL
TATO);
if isreal(RISULTATO(12,:))==1
for ii=1:0.1:3.5 b=b+1;
RISULTATO(5,:)=ii; NTOT(b)=RISULTATO(12,:);
aa=aa+1; else
a=0; [RMAX(aa),PCmedia(aa)] = max(RR);
R=0; [NTOTMAX(aa),PCmedia1(aa)] = max(NTOT);
ntot=0; break;
for i=1:0.01:pimax break;
end
RISULTATO(2,:)=i; if isreal(RISULTATO(13,:))==1
RISULTATO(3,:)=sqrt(pimax/i); b=b+1;
RISULTATO(4,:)=sqrt(pimax/i); RR(b)=RISULTATO(13,:);
else
[VALORE,RISULTATO] = ciclo_termodin(VALOR [RMAX(aa),PCmedia(aa)] = max(RR);
E,RISULTATO); [NTOTMAX(aa),PCmedia1(aa)] = max(NTOT);
break;
if isreal(RISULTATO(12,:))==1 break;
a=a+1; end
ntot(a)=RISULTATO(12,:); end
else
[Rmax(aa),I(aa)] = max(R); end

[ntotmax(aa),J(aa)] = max(ntot);
end
fprintf(1,ʼRapporto di By Pass: %e\nʼ,ii); end

RISULTATO(2,:)=I(aa); [VALORE,RISULTATO] = ciclo_termodin(VALORE,RISULTATO


);
for SS=1:0.1:pimax/I(aa) %Scrive i risultati sul file ʻrisultato.txtʼ in modo
RISULTATO(3,:)=SS; tale da poter essere
RISULTATO(4,:)=pimax/I(aa)/SS; %analizzato dallʼalgoritmo genetico.
[VALORE,RISULTATO] = ciclo_termodin(VALORE,RISUL
TATO); risultato_write(NOME_R,RISULTATO,nn);
if isreal(RISULTATO(12,:))==1
b=b+1; i=1:0.01:0.99+a*0.01;
NTOT(b)=RISULTATO(12,:); A=1:0.1:3.5;
else %plot(i,R,i,ntot);
[RMAX(aa),PCmedia(aa)] = max(RR); plot(A,I,A,PCmedia);
[NTOTMAX(aa),PCmedia1(aa)] = max(NTOT); title(ʻ\bf\fontsize{12}Max R_s e max \eta_T_O_T in
break; funzione di By-Passʼ);
break; xlabel(ʻBy-Pass m_c/m_hʼ);
break; ylabel(ʻ\eta_0 R_sʼ);
end
if isreal(RISULTATO(13,:))==1 fprintf(1,ʼOK\nʼ);

Matching tra componenti di un turbofan • 79


Appendice A

bypassmaxrs.m
Anche questo piccolo programma è stato sviluppato con l’intento di trovare il compromesso migliore
nella scelta di rapporto di compressione del fan e rapporto di bypass. Il programma stampa un grafico con le
migliori prestazioni di rendimento e spinta specifica in funzione di tale scelta.

%------------------------------------------- Tam0=Temp0;
%---------------OTTIMIZZATORE--------------- Temp00(i)=Temp0;
%------------------------------------------- end
% Stampa un grafico con i valori massimi di rendimento end
totale e spinta for i=1:1:sizex
% specifica in funzione del rapporto di bypass. Il if Temp00(i)>VALORE(15,:)
calcolo viene effettuato pimax= x(i-1);
% in base al massimo rapporto di compressione sos- break;
tenibile da progetto end
% (massima temperatura palette uscita compressore), end
dopodicheʼ viene %Avvia lo studio del ciclo termodinamico
% effettuato il calcolo per ogni rapporto di bypass n0=RISULTATO(12,:);
di tutte le spinta=RISULTATO(13,:);
% combinazioni possibili di rapporto di compressione marco=1;
del fan, viene scelta mirco=1;
% la ripartizione migliore e successivamente trac- picomp= pimax/RISULTATO(2,:);
ciata a video. val=0.01;
%Analizza il file ʻrisultato.txtʼ proveniente da anal- a=0;
isi dellʼalgoritmo aa=0;
%genetico for ii=1:0.1:5
nome_file= ʻrisultato.txtʼ; RISULTATO(5,:)=ii;
[RISULTATO,NOME_R,nn]= risultato_open(nome_file); aa=aa+1;
%Legge il file ʻcontorno.txtʼ contenente le informazi- a=0;
oni al contorno R=0;
%relative alle condizioni operative del turbofan ntot=0;
nome_file= ʻcontorno.txtʼ; for i=1:0.01:pimax
fprintf(1,ʼ%e\nʼ,RISULTATO(1,:)); RISULTATO(2,:)=i;
[VALORE,NOME,n]= contorno_open(nome_file); RISULTATO(3,:)=sqrt(pimax/i);
RISULTATO(1,:) = 50; RISULTATO(4,:)=sqrt(pimax/i);
x=1:0.01:50; [VALORE,RISULTATO] = ciclo_termodin(VALORE,RI
SULTATO);
Alti = VALORE(1,:); if isreal(RISULTATO(12,:))==1 & isreal(RISULTATO(13,
Mach = VALORE(2,:); :))==1
pamb = pressure_ratio(Alti); a=a+1;
Tamb = temperature_ratio(Alti); ntot(a)=RISULTATO(12,:);
fprintf(1,ʼ%e\nʼ,Tamb); R(a)=RISULTATO(13,:);
roam = ro_ratio(Alti); else
k=pure_air(Tamb); [Rmax(aa),I(aa)] = max(R);
cp0=pure_air_cp(Tamb); [ntotmax(aa),J(aa)] = max(ntot);
camb = Mach*sqrt((k-1)*cp0*Tamb); fprintf(1,ʼRapporto di By Pass: %e\nʼ,ii);
Tam0=Tamb+power(camb,2)/(2*cp0); break;
Temp0=Tam0; end
[sizex,sizey]=size(x); end
if sizey>sizex end
sizex=sizey; i=1:0.01:0.09+a*0.01;
end A=1:0.1:5;
Temp0=Tam0; % plot(i,R,i,ntot);
Tam00=Tam0; plot(A,Rmax,A,ntotmax);
toll=0.0001; plot(A,Rmax,A,ntotmax);
for i=1:1:sizex title(ʻ\bf\fontsize{12}Max R_s e max \eta_T_O_T in
for n_it = 1:1:10 funzione di By-Passʼ);
T2efmedia=(Temp0+Tam0)/2; xlabel(ʻBy-Pass m_c/m_hʼ);
k2=pure_air(T2efmedia); ylabel(ʻ\eta_0 R_sʼ);
cpef=pure_air_cp(T2efmedia); [VALORE,RISULTATO] = ciclo_termodin(VALORE,RISULTATO
Temp0=Tam00*(1+1/VALORE(4,:)*(power(x(i),(k2-1)/ );
k2)-1)); %Scrive i risultati sul file ʻrisultato.txtʼ in modo
deltat=abs(Temp0-Tam0); tale da poter essere
if deltat<toll %analizzato dallʼalgoritmo genetico.
break; risultato_write(NOME_R,RISULTATO,nn);
end fprintf(1,ʼOK\nʼ);

80 • Matching tra componenti di un turbofan


Appendice A

map_manager2.m
In questo caso il programma è stato sviluppato per ricreare le mappe dei compressori a partire dalle
immagini.

% Questo foglio eʼ responsabile della sintesi dei y6 = 0.4325:0.001:1.096;


dati (coordinate dei x6 = fitn1000r(y6);
% punti del grafico) in una equazione che ne descriva Wmax(i)=max(x6);
il comportamento (con i=i+1;
% il rispettivo campo di validit‡). Si tenga conto %---------------------------------------------
del fatto che tutte le % Calcola la linea per N corretto= 1.028 (r)
% curve per N corretto sono a coordinate invertite %---------------------------------------------
ossia pigreco-mass flow y7 = 0.455:0.001:1.139;
% e non viceversa (come da grafico e come surge line e x7=fitn1028r(y7);
reference line). Wmax(i)=max(x7);
i=1; i=i+1;
%----------------------------------------------- %---------------------------------------------
% Calcola la linea per N corretto= 0.359 % Calcola la linea per N corretto= 1.144 (r)
%----------------------------------------------- %----------------------------------------------
load(ʻcompfitʼ,ʼfitn0352ʼ,ʼfitn0528ʼ,ʼfitn0661ʼ,ʼfi y8 = 0.5445:0.001:1.282;
tn0792ʼ,ʼfit0880rʼ,ʼfitn0952rʼ,ʼfitn1000rʼ,ʼfitn1 x8 =fitn1144r(y8);
028rʼ,ʼfitn1144rʼ); Wmax(i)=max(x8);
x0 = 0.23:0.001:0.4; i=i+1;
y0 = fitn0352(x0); %---------------------------------------------
Wmax(i)=max(x0); %reference line
i=i+1; %---------------------------------------------
%---------------------------------------------- p1 = 1.6724;
% Calcola la linea per N corretto= 0.528 p2 = -2.3117;
%---------------------------------------------- p3 = 1.7569;
x1 = 0.385:0.001:0.57; p4 = -0.11935;
y1=fitn0528(x1); p5 = 0.006458;
x9 = 0.24:0.001:1;
Wmax(i)=max(x1); y9 = p1*power(x9,4)+p2*power(x9,3) +p3*power(x9,2
i=i+1; )+p4*power(x9,1)+p5;
%---------------------------------------------- %-------------------------------------------
% Calcola la linea per N corretto= 0.661 %surge line
%---------------------------------------------- %-------------------------------------------
x2 = 0.52:0.0005:0.67; p1 = 3.6837;
y2=fitn0661(x2); p2 = -12.459;
p3 = 14.918;
Wmax(i)=max(x2); p4 = -6.8672;
i=i+1; p5 = 2.0287;
%---------------------------------------------- p6 = -0.17645;
% Calcola la linea per N corretto= 0.791 x10 = 0.24:0.001:1.094;
%---------------------------------------------- y10 = p1*power(x10,5)+p2*power(x10,4) +p3*power(x
x3 = 0.665:0.0005:0.78325; 10,3)+p4*power(x10,2)+p5*x10+p6;
y3=fitn0792(x3); %-----------------------------------------------
Wmax(i)=max(x3); %Rendimenti
i=i+1; %-----------------------------------------------
%--------------------------------------------- name=ʼn100b.gifʼ;
% Calcola la linea per N corretto= 0.88 (r) format=ʼgifʼ;
%--------------------------------------------- x=693;
y4 = 0.279:0.001:0.777; y=224;
x4 = fit0880r(y4); [X11,Y11]=get_rendimento(name,format,x,y);
Wmax(i)=max(x4); name=ʼn99b.gifʼ;
i=i+1; format=ʼgifʼ;
%---------------------------------------------- x=573;
% Calcola la linea per N corretto= 0.952 (r) y=144;
%---------------------------------------------- [X12,Y12]=get_rendimento(name,format,x,y);
y5 = 0.3735:0.0005:0.966;
x5 = fitn0952r(y5); name=ʼn98b.gifʼ;
Wmax(i)=max(x5); format=ʼgifʼ;
i=i+1; x=509;
y=99;
%--------------------------------------------- [X13,Y13]=get_rendimento(name,format,x,y);
% Calcola la linea per N corretto= 1.000 (r)
%---------------------------------------------

Matching tra componenti di un turbofan • 81


Appendice A

name=ʼn96b.gifʼ; %STAMPA IL GRAFICO


format=ʼgifʼ; %---------------------------------------------
x=393; plot (x0,y0,x1,y1,x2,y2,x3,y3,x4,y4,x5,y5,x6,y6,x
y=65; 7,y7,x8,y8,x9,y9,x10,y10,ʼLineWidthʼ,2)
[X14,Y14]=get_rendimento(name,format,x,y); xlabel(ʻrel. corr. mass flowʼ)
ylabel(ʻ(\pi(ref)-1)/(\pi-1)ʼ)
name=ʼn94b.gifʼ; title(ʻMappa Compressore \pi = 2.6ʼ)
format=ʼgifʼ;
x=284; text(0.1,1.3,ʼEquazioniʼ,ʼHorizontalAlignmentʼ,ʼ
y=72; leftʼ)
[X15,Y15]=get_rendimento(name,format,x,y);
text(0.59,0.46,ʼsurge line\rightarrowʼ,ʼHorizonta
name=ʼn90b.gifʼ; lAlignmentʼ,ʼrightʼ)
format=ʼgifʼ; text(0.34,0.04,ʼN=0.359\rightarrowʼ,ʼHorizontalAl
x=312; ignmentʼ,ʼrightʼ)
y=241; text(0.58,0.04,ʼ\leftarrow N=0.528ʼ,ʼHorizontalAl
[X16,Y16]=get_rendimento(name,format,x,y); ignmentʼ,ʼleftʼ)
text(0.68,0.1,ʼ\leftarrow N=0.661ʼ,ʼHorizontalAli
name=ʼn80b.gifʼ; gnmentʼ,ʼleftʼ)
format=ʼgifʼ; text(0.79,0.2,ʼ\leftarrow N=0.791ʼ,ʼHorizontalAli
x=343; gnmentʼ,ʼleftʼ)
y=375; text(0.90,0.30,ʼ\leftarrow N=0.88ʼ,ʼHorizontalAli
[X17,Y17]=get_rendimento(name,format,x,y); gnmentʼ,ʼleftʼ)
text(0.63,0.30,ʼ\leftarrow ref lineʼ,ʼHorizontalA
name=ʼn70b.gifʼ; lignmentʼ,ʼleftʼ)
format=ʼgifʼ; text(0.90,0.96,ʼN=0.952\rightarrowʼ,ʼHorizontalAl
x=363; ignmentʼ,ʼrightʼ)
y=464; text(0.98,1.09,ʼN=1.000\rightarrowʼ,ʼHorizontalAl
[X18,Y18]=get_rendimento(name,format,x,y); ignmentʼ,ʼrightʼ)
text(1.01,1.17,ʼN=1.028\downarrowʼ,ʼHorizontalAli
name=ʼn60b.gifʼ; gnmentʼ,ʼrightʼ)
format=ʼgifʼ; text(1.08,1.28,ʼN=1.144\rightarrowʼ,ʼHorizontalAl
x=362; ignmentʼ,ʼrightʼ)
y=728; axis([0 1.2 0 1.4])
[X19,Y19]=get_rendimento(name,format,x,y); hold on

name=ʼn50b.gifʼ;
format=ʼgifʼ;
x=377; %plot(X11,Y11,X12,Y12,X13,Y13,X14,Y14,X15,Y15,X16
y=761; ,Y16,X17,Y17,X18,Y18,X19,Y19,X20,Y20)
[X20,Y20]=get_rendimento(name,format,x,y); hold off

%---------------------------------------------

isorendimenti.m
Questo foglio e’ responsabile della sintesi dei dati (coordinate dei punti del grafico) in una equazione che
ne descriva il comportamento (con il rispettivo campo di validità). Si tenga conto del fatto che tutte le curve
per N corretto sono a coordinate invertite ossia pigreco-mass flow e non viceversa (come da grafico e come
surge line e reference line). Il programma permette di trasformare le curve circolari di isorendimento generale
in curve di rendimento applicate alle linee di velocità.

% Questo foglio eʼ responsabile della sintesi dei


dati (coordinate dei %---------------------------------------------
% punti del grafico) in una equazione che ne descriva % Calcola la linea per N corretto= 0.359
il comportamento (con %---------------------------------------------
% il rispettivo campo di validit‡). Si tenga conto p1 = 96.22;
del fatto che tutte le p2 = -150.66;
% curve per N corretto sono a coordinate invertite p3 = -0.47071;
ossia pigreco-mass flow p4 = -0.68372;
% e non viceversa (come da grafico e come surge line e p5 = 0.39604;
reference line).

82 • Matching tra componenti di un turbofan


Appendice A

xin=0; %-------------------------------------------
xout=0.084; % Calcola la linea per N corretto= 0.952
%-------------------------------------------
[N03X,N03Y]=find_sol(p1,p2,p3,p4,p5,xin,xout); p1 = -1.6094;
p2 = 3.2769;
%--------------------------------------------- p3 = -2.4623;
% Calcola la linea per N corretto= 0.528 p4 = 0.80924;
%--------------------------------------------- p5 = 0.86498;

p1 = -123.44; xin=0.3735;
p2 = 19.754; xout=0.964;
p3 = -1.8941;
p4 = -0.29469; [N09X,N09Y]=find_sol(p1,p2,p3,p4,p5,xin,xout);
p5 = 0.56274;
%---------------------------------------------
xin=0; % Calcola la linea per N corretto= 1.000
xout=0.1965; %---------------------------------------------
p1 = -0.98344;
[N05X,N05Y]=find_sol(p1,p2,p3,p4,p5,xin,xout); p2 = 2.449;
p3 = -2.2557;
%---------------------------------------------- p4 = 0.91026;
% Calcola la linea per N corretto= 0.661 p5 = 0.88191;
%----------------------------------------------
p1 = -45.816; xin=0.4325;
p2 = 30.17; xout=1.09;
p3 = -8.7078;
p4 = 0.97759; [N1X,N1Y]=find_sol(p1,p2,p3,p4,p5,xin,xout);
p5 = 0.6315;
%--------------------------------------------
xin=0.0825; % Calcola la linea per N corretto= 1.028
xout=0.3445; %--------------------------------------------
p1 = -0.72297;
[N06X,N06Y]=find_sol(p1,p2,p3,p4,p5,xin,xout); p2 = 1.9222;
p3 = -1.8878;
%--------------------------------------------- p4 = 0.81128;
% Calcola la linea per N corretto= 0.791 p5 = 0.90782;
%---------------------------------------------
p1 = -15.678; xin=0.455;
p2 = 18.979; xout=1.138;
p3 = -8.8428;
p4 = 1.8095; [N10X,N10Y]=find_sol(p1,p2,p3,p4,p5,xin,xout);
p5 = 0.64799;
%---------------------------------------------
xin=0.18; % Calcola la linea per N corretto= 1.144
xout=0.565; %---------------------------------------------

[N07X,N07Y]=find_sol(p1,p2,p3,p4,p5,xin,xout); p1 = -0.33415;
p2 = 1.1222;
%-------------------------------------------- p3 = -1.3862;
% Calcola la linea per N corretto= 0.88 p4 = 0.74589;
%-------------------------------------------- p5 = 0.95323;
p1 = -3.8993
p2 = 5.9884 xin=0.5445;
p3 = -3.4896 xout=1.2765;
p4 = 0.91237
p5 = 0.79282 [N11X,N11Y]=find_sol(p1,p2,p3,p4,p5,xin,xout);

xin=0.279; %rend=[1.0,0.99,0.98,0.96,0.94,0.90,0.80,0.70,0.60,0
xout=0.77; .5];

[N08X,N08Y]=find_sol(p1,p2,p3,p4,p5,xin,xout); %plot(N06Y,N06X);

Matching tra componenti di un turbofan • 83


Appendice A

find_ref.m
Questa funzione calcola le intersezioni per la linea di riferimento, effettua un’analisi della linea di
rendimento per ogni linea di velocità, ne calcola il massimo e per il valore trovato del rapporto di compressione
identifica sulla linea di velocità la portata di massa corretta.

function [SOLX,SOLY]=find_ref(p1,p2,p3,p4,p5,xin,xout) 2)+p4*power(XX11,1)+p5;

name=ʼreflineb.gifʼ; [xs]=get_sol_ref(XX11,YY11,y);
format=ʼgifʼ;
x=287; SOLX=xs(1);
y=230; if SOLX~=0
[X11,Y11]=get_rendimento(name,format,x,y); SOLY=p1*power(SOLX,4)+p2*power(SOLX,3) +p3*power(SOL
X,2)+p4*power(SOLX,1)+p5;
else
% Calcola le intersezioni per refline SOLY=0;
%-------------------------------------------- end
[XX11,YY11]=tronca(Y11,X11,xin,xout);

y = p1*power(XX11,4)+p2*power(XX11,3) +p3*power(XX11,

find_sol.m
Questa funzione è ampiamente utilizzata nel programma ”isorendimenti.m”. Utilizza a sua volta una
funzione “get_rendimento.m”, in pratica compie l’analisi di un’immagine “.gif” e ne salva i pixel neri in
una matrice alla quale poi viene effettuata una media, in questo modo si ottiene una linea.

function [SOLX,SOLY]=find_sol(p1,p2,p3,p4,p5,xin,xout)
name=ʼn90b.gifʼ;
name=ʼn100b.gifʼ; format=ʼgifʼ;
format=ʼgifʼ; x=312;
x=693; y=241;
y=224; [X16,Y16]=get_rendimento(name,format,x,y);
[X11,Y11]=get_rendimento(name,format,x,y);
name=ʼn80b.gifʼ;
name=ʼn99b.gifʼ; format=ʼgifʼ;
format=ʼgifʼ; x=343;
x=573; y=375;
y=144; [X17,Y17]=get_rendimento(name,format,x,y);
[X12,Y12]=get_rendimento(name,format,x,y);
name=ʼn70b.gifʼ;
name=ʼn98b.gifʼ; format=ʼgifʼ;
format=ʼgifʼ; x=363;
x=509; y=464;
y=99; [X18,Y18]=get_rendimento(name,format,x,y);
[X13,Y13]=get_rendimento(name,format,x,y);
name=ʼn60b.gifʼ;
name=ʼn96b.gifʼ; format=ʼgifʼ;
format=ʼgifʼ; x=362;
x=393; y=728;
y=65; [X19,Y19]=get_rendimento(name,format,x,y);
[X14,Y14]=get_rendimento(name,format,x,y);
name=ʼn50b.gifʼ;
name=ʼn94b.gifʼ; format=ʼgifʼ;
format=ʼgifʼ; x=377;
x=284; y=761;
y=72; [X20,Y20]=get_rendimento(name,format,x,y);
[X15,Y15]=get_rendimento(name,format,x,y);

84 • Matching tra componenti di un turbofan


Appendice A

% Calcola le intersezioni per n=1.00


%------------------------------------------ [xs6]=get_sol(XX11,YY11,y);
[XX11,YY11]=tronca(Y11,X11,xin,xout);
% Calcola le intersezioni per n=0.70
y = p1*power(XX11,4)+p2*power(XX11,3) +p3*power(XX11, %---------------------------------------------
2)+p4*power(XX11,1)+p5; [XX11,YY11]=tronca(Y18,X18,xin,xout);

[xs]=get_sol(XX11,YY11,y); y = p1*power(XX11,4)+p2*power(XX11,3) +p3*power(XX11


,2)+p4*power(XX11,1)+p5;
% Calcola le intersezioni per n=0.99
%-------------------------------------------- [xs7]=get_sol(XX11,YY11,y);
[XX11,YY11]=tronca(Y12,X12,xin,xout);
% Calcola le intersezioni per n=0.60
y = p1*power(XX11,4)+p2*power(XX11,3) +p3*power(XX11 %--------------------------------------------
,2)+p4*power(XX11,1)+p5; [XX11,YY11]=tronca(Y19,X19,xin,xout);

[xs1]=get_sol(XX11,YY11,y); y = p1*power(XX11,4)+p2*power(XX11,3) +p3*power(XX11


% Calcola le intersezioni per n=0.98 ,2)+p4*power(XX11,1)+p5;
%---------------------------------------------
[XX11,YY11]=tronca(Y13,X13,xin,xout); [xs8]=get_sol(XX11,YY11,y);

y = p1*power(XX11,4)+p2*power(XX11,3) +p3*power(XX11 % Calcola le intersezioni per n=0.50


,2)+p4*power(XX11,1)+p5; %--------------------------------------------
[XX11,YY11]=tronca(Y20,X20,xin,xout);
[xs2]=get_sol(XX11,YY11,y);
y = p1*power(XX11,4)+p2*power(XX11,3) +p3*power(XX11
% Calcola le intersezioni per n=0.96 ,2)+p4*power(XX11,1)+p5;
%---------------------------------------------
[XX11,YY11]=tronca(Y14,X14,xin,xout); [xs9]=get_sol(XX11,YY11,y);

y = p1*power(XX11,4)+p2*power(XX11,3) +p3*power(XX11 %Controllo


,2)+p4*power(XX11,1)+p5;
%xs(2,:)=0;
[xs3]=get_sol(XX11,YY11,y); %xs1(2,:)=1;
%xs2(2,:)=2;
% Calcola le intersezioni per n=0.94 %xs3(2,:)=3;
%--------------------------------------------- %xs4(2,:)=4;
[XX11,YY11]=tronca(Y15,X15,xin,xout); %xs5(2,:)=5;
%xs6(2,:)=6;
y = p1*power(XX11,4)+p2*power(XX11,3) +p3*power(XX11 %xs7(2,:)=7;
,2)+p4*power(XX11,1)+p5; %xs8(2,:)=8;
%xs9(2,:)=9;
[xs4]=get_sol(XX11,YY11,y);
SOLX=[xs,xs1,xs2,xs3,xs4,xs5,xs6,xs7,xs8,xs9];
% Calcola le intersezioni per n=0.90
%---------------------------------------------- [sizesol,sizey]=size(SOLX);
if sizey>sizesol
[XX11,YY11]=tronca(Y16,X16,xin,xout); sizesol=sizey;
end
y = p1*power(XX11,4)+p2*power(XX11,3) +p3*power(XX11
,2)+p4*power(XX11,1)+p5; for i=1:1:sizesol
if SOLX(1,i)~=0
[xs5]=get_sol(XX11,YY11,y); SOLY(i)=p1*power(SOLX(1,i),4)+p2*power(SOLX(1,i)
,3) +p3*power(SOLX(1,i),2)+p4*power(SOLX(1,i),1)+p5;
% Calcola le intersezioni per n=0.80 else
%--------------------------------------------- SOLY(i)=0;
[XX11,YY11]=tronca(Y17,X17,xin,xout); end
end
y = p1*power(XX11,4)+p2*power(XX11,3) +p3*power(XX11
,2)+p4*power(XX11,1)+p5;

Matching tra componenti di un turbofan • 85


Appendice A

get_rendimento.m
Questa file apre una serie di immagini ottenute dalla selezione di una mappa di un compressore assiale
con rapporto di compressione 2.6 (G.L. Converse 1984). Le immagini vengono prelevate in formato “.gif” ed
hanno tutte il medesimo formato.

%Questo file apre una serie di immagini ottenute dal b(rad)=b(rad)+1;


sezionamento di una k(rad)=n;
%mappa di un compressore con rapporto di compressione else
2.6 (G.L.Converse, if b(rad)~=0
%1984).Le immagini vengono prelevate in formato .gif rad=rad+1;
ed hanno tutte le b(rad)=0;
%medesime dimensioni.Dopodichè per snellire la ma- k(rad)=0;
trice si costruisce una end
%seconda matrice con le coordinate dei punti di in- end %fine if
teresse. Particolare end %fine for width
%attenzione va posta sul fatto che lo zero della ma-
trice dellʼimmagine non if k(1)~=0 & k(2)~=0
%corrisponde con lo zero del sistema di riferimento. %for s=1:1:rad-1
In ingresso ha filename s=1;
%nella forma ʻnome_file.formatʼ e fmt nella forma MATX(a)=(k(s)-(b(s)-1)/2+boxx)/origx*xs;
ʻ.gifʼ. MATY(a)=(origy-j-boxy)/origy*ys;
%VALE PER SOLUZIONI ANCHE MULTIPLE: questa versione s=2;
ritorna 4 array in modo MATXX(c)=(k(s)-(b(s)-1)/2+boxx)/origx*xs;
%tale da permettere lo studio dei rendimenti (circo- MATYY(c)=(origy-j-boxy)/origy*ys;
lari). c=c+1;
a=a+1;
function [MATX,MATY] = get_rendimento(filename,fmt,box k(1)=0;
x,boxy) b(1)=0;
k(2)=0;
%Si ricava le dimensioni del grafico b(2)=0;
else if k(1)~=0 & k(2)==0
info= imfinfo(filename,fmt); s=1;
width=getfield(info,ʼWidthʼ); MATX(a)=(k(s)-(b(s)-1)/2+boxx)/origx*xs;
height=getfield(info,ʼHeightʼ); MATY(a)=(origy-j-boxy)/origy*ys;
a=a+1;
%Legge lʼimmagine: k(1)=0;
b(1)=0;
MATRIX= imread(filename,fmt); end %fine if

%Variabili per lo snellimento end % fine else if

white=1; end % fine for height


a=1; if c>1
c=1; % L=c-1;
origx=1178; %new
origy=813;
xs=1.2; for i=1:1:a-1
ys=1.4; MAX(i)=MATX(a-i);
n=0; MAY(i)=MATY(a-i);
end
b=0; MATX=[MAX,MATXX];
k=0; MATY=[MAY,MATYY];
%Ciclo per il salvataggio delle coordinate dei soli
punti di interesse
%mediati % for d=a:1:(a+c-2)
for j=height:-1:1 %
% MATX(d)=MATXX(L);
% MATY(d)=MATYY(L);
rad=1; % L=L-1;
%end
for n=1:1:width %MATX(a+c-1)=MATX(1);
%MATY(a+c-1)=MATY(1);
end
if MATRIX(j,n)~=white

86 • Matching tra componenti di un turbofan


Appendice A

get_sol.m
Sempre sviluppato come complemento al pacchetto “imageread ” questo file determina la media dei
valori in colonna di una matrice (tecnica descritta nel capitolo 5). Questa tipologia di soluzione si aspetta una
curva lineare (non riesce a determinare la presenza di soluzioni multiple, come nel caso di circonferenza).

function [X] = get_sol(x,y,y1) a=a-1;


[sizex,sizey]=size(y1); ics=-ics;
if sizey>sizex end
sizex=sizey; end
end end
a=0; if a == 1
ics=sign(y1(1)-y(1)); X(2)=0;
%ics=-1; end
for i=1:1:sizex if a == 0
F(i)=y1(i)-y(i); X(1)=0;
if sign(F(i)) == sign(ics) X(2)=0;
a=a+1; end
% Y(a)=y1(i); %if a >2
if i>1 % A(1)=X(1);
X(a)=(x(i)+x(i-1))/2; % A(2)=X(2);
ics=-ics; % X=A;
else %end

get_pictnnn.m
Sempre sviluppato come complemento al pacchetto “imageread ” questo file determina la media dei
valori in colonna di una matrice (tecnica descritta nel capitolo 5). Questa tipologia di soluzione si aspetta una
curva lineare (non riesce a determinare la presenza di soluzioni multiple, come nel caso di circonferenza).

%Questo file apre una serie di immagini ottenute dal white=1;


sezionamento di una a=1;
%mappa di un compressore con rapporto di compressione c=1;
2.6 (G.L.Converse, origx=1178;
%1984).Le immagini vengono prelevate in formato .gif origy=813;
ed hanno tutte le xs=1.2;
%medesime dimensioni.Dopodichè per snellire la ma- ys=1.4;
trice si costruisce una n=0;
%seconda matrice con le coordinate dei punti di in-
teresse. Particolare b=0;
%attenzione va posta sul fatto che lo zero della ma- k=0;
trice dellʼimmagine non %Ciclo per il salvataggio delle coordinate dei soli
%corrisponde con lo zero del sistema di riferimento. punti di interesse
In ingresso ha filename %mediati
%nella forma ʻnome_file.formatʼ e fmt nella forma for j=height:-1:1
ʻ.gifʼ. rad=1;
%VALE PER SOLUZIONI ANCHE MULTIPLE
function [MATX,MATY] = get_pictnnn(filename,fmt,boxx, for n=1:1:width
boxy) if MATRIX(j,n)~=white
%Si ricava le dimensioni del grafico b(rad)=b(rad)+1;
k(rad)=n;
info= imfinfo(filename,fmt); else
width=getfield(info,ʼWidthʼ); if b(rad)~=0
height=getfield(info,ʼHeightʼ); rad=rad+1;
b(rad)=0;
%Legge lʼimmagine: k(rad)=0;
end
MATRIX= imread(filename,fmt); end %fine if
end %fine for width
%Variabili per lo snellimento
if k(1)~=0 & k(2)~=0

Matching tra componenti di un turbofan • 87


Appendice A

%for s=1:1:rad-1 b(1)=0;


s=1; end %fine if
MATX(a)=(k(s)-(b(s)-1)/2+boxx)/origx*xs;
MATY(a)=(abs(origy-j-boxy))/origy*ys; end % fine else if
s=2;
MATXX(c)=(k(s)-(b(s)-1)/2+boxx)/origx*xs; end % fine for height
MATYY(c)=(abs(origy-j-boxy))/origy*ys;
c=c+1; if c>1
a=a+1; L=c-1;
k(1)=0; for d=a:1:(a+c-2)
b(1)=0;
k(2)=0; MATX(d)=MATXX(L);
b(2)=0; MATY(d)=MATYY(L);
else if k(1)~=0 & k(2)==0 L=L-1;
s=1; end
MATX(a)=(k(s)-(b(s)-1)/2+boxx)/origx*xs;
MATY(a)=(abs(origy-j-boxy))/origy*ys; end
a=a+1;
k(1)=0;

get_cpk.m
Anche questo programma è stato sviluppato come complemento al pacchetto “imageread ”.Questo file
determina la media dei valori in colonna di una matrice (tecnica descritta nel capitolo 5).Si applica alla lettura
delle immagini relative ai grafici dell’esponente isoentropico e del calore specifico a pressione costante.

function [MATX,MATY] = get_cpk(filename,fmt,boxx,boxy, k=0;


origx,origy,xs,ys,xxs,yys) %Ciclo per il salvataggio delle coordinate dei soli
punti di interesse.
%Si ricava le dimensioni del grafico for j=height:-1:1
b=0;
info= imfinfo(filename,fmt); for n=1:1:width
width=getfield(info,ʼWidthʼ); if MATRIX(j,n)~=white
height=getfield(info,ʼHeightʼ); b=b+1;
k=n;
%Legge lʼimmagine: end

MATRIX= imread(filename,fmt); end


if k ~=0
%Variabili per lo snellimento MATX(a)=(k-(b-1)/2+boxx)/origx*xs+xxs;
MATY(a)=(abs(origy-j-boxy))/origy*ys+yys;
white=1; a=a+1;
a=1; end
k=0;
end
n=0;

clean_order.m
Anche questa applicazione rientra nel pacchetto “imageread ”. La sua funzione è quella di riordinare in
modo coerente i dati di una figura circolare in modo tale da permettere, in fase di plot, di ottenere una figura
continua chiusa.

function [H,J] = clean_order (NN,rendi) end


a=1; if a>1
for i=1:1:20 [H,I]=sort(H);
if NN(i)~=0 J=J(I);
H(a)=NN(i); elseif a==1
J(a)=rendi(i); H=0;
a=a+1; J=0;
end end

88 • Matching tra componenti di un turbofan


Appendice A

tronca.m
Anche questa funzione rientra nel pacchetto “imageread ”. La sua funzione è quella di troncare i valori
di una equazione una volta incontrati gli estremi (tipicamente pompaggio e soffocamento).
function [A,YY] = tronca(X,Y,xin,xout) a=a+1;
A(a)=X(i);
[sizex,sizey]=size(X); YY(a)=Y(i);
if sizey>sizex end
sizex=sizey; end
end if a==0
a=0; A=0;
for i=1:1:sizex YY=0;
if xin<X(i) && xout>X(i) end

get_turbine.m
Questo programma è stato sviluppato come complemento al pacchetto “turbineread ”. Il file determina
a partire da immagini “.gif” una matrice, successivamente effettua una media ed infine ottiene tramite
fitting, l’equazione della curva.

%Le immagini vengono prelevate in formato .gif ed end


hanno tutte le
%medesime dimensioni.Dopodichè per snellire la ma- n=0;
trice si costruisce una
%seconda matrice con le coordinate dei punti di in- b(1)=0;
teresse. Particolare b(2)=0;
%attenzione va posta sul fatto che lo zero della ma- k(1)=0;
trice dellʼimmagine non k(2)=0;
%corrisponde con lo zero del sistema di riferimento. %Ciclo per il salvataggio delle coordinate dei soli
In ingresso ha filename punti di interesse
%nella forma ʻnome_file.formatʼ e fmt nella forma %mediati
ʻ.gifʼ. for j=1:1:height
%VALE PER SOLUZIONI ANCHE MULTIPLE: questa versione
ritorna 4 array in modo
%tale da permettere lo studio dei rendimenti (circo- rad=1;
lari).
function [MATX,MATY] = get_turbine(filename,fmt,graph for n=1:1:width
_type)

%Si ricava le dimensioni del grafico if MATRIX(j,n)~=white


b(rad)=b(rad)+1;
info= imfinfo(filename,fmt); k(rad)=n;
width=getfield(info,ʼWidthʼ); else
height=getfield(info,ʼHeightʼ); if b(rad)~=0
rad=rad+1;
%Legge lʼimmagine: b(rad)=0;
k(rad)=0;
MATRIX= imread(filename,fmt); end

%Variabili per lo snellimento


end %fine if
white=1;
a=1; end %fine for width
c=1;
ys=4; if k(1)~=0 & k(2)~=0
%for s=1:1:rad-1
if graph_type==0 s=1;
xs=1.0; MATX(a)=(k(s)-(b(s)-1)/2)/width*xs;
%origy=398; MATY(a)=j/height*ys+1;
else s=2;
xs=1.2; MATXX(c)=(k(s)-(b(s)-1)/2)/width*xs;
% origy=478; MATYY(c)=(j)/height*ys+1;

Matching tra componenti di un turbofan • 89


Appendice A

c=c+1;
a=a+1; for i=1:1:a-1
k(1)=0; MAX(i)=MATX(a-i);
b(1)=0; MAY(i)=MATY(a-i);
k(2)=0; end
b(2)=0; MATX=[MAX,MATXX];
else if k(1)~=0 & k(2)==0 MATY=[MAY,MATYY];
s=1;
MATX(a)=(k(s)-(b(s)-1)/2)/width*xs;
MATY(a)=(j)/height*ys+1; % for d=a:1:(a+c-2)
a=a+1; %
k(1)=0; % MATX(d)=MATXX(L);
b(1)=0; % MATY(d)=MATYY(L);
end %fine if % L=L-1;
%end
end % fine else if %MATX(a+c-1)=MATX(1);
%MATY(a+c-1)=MATY(1);
end % fine for height end
if c>1
% L=c-1;
%new

forma_turb.m
Anche questa applicazione rientra nel pacchetto “turbineread ”. La sua funzione è quella di restituire
i valori delle equazioni delle turbine dato passo e limiti di esistenza. Effettua inoltre uno scaling dei valori
attraverso i termini in ingresso “massflow“ “PC“ “eta“.

function [x0,y0,x1,y1,x2,y2,x3,y3,x4,y4,x5,y5,x6,y6] y3=fitn10(x3)*eta;


= forma_turb(massflow,PC,eta) x3=1:((max-1)*PC/3)/num:(max-1)*PC/3+1;
max=16;
num=(max-1)*1000; %---------------------------------------------
load(ʻrendfitʼ,ʼfitn04ʼ,ʼfitn06ʼ,ʼfitn08ʼ,ʼfitn10ʼ); % Calcola le linee per il grafico della massa
%---------------------------------------------
x0=1:0.001:max; %era 1.02
y0=fitn04(x0)*eta; load(ʻmassfitʼ, ʻfit04ʼ,ʼfit06ʼ,ʼfit10ʼ);
x0=1:((max-1)*PC/3)/num:(max-1)*PC/3+1;
x4=1:0.001:max;
x1=1:0.001:max; %era 1.25 y4=fit04(x4)*massflow;
y1=fitn06(x1)*eta; x4=1:((max-1)*PC/3)/num:(max-1)*PC/3+1;
x1=1:((max-1)*PC/3)/num:(max-1)*PC/3+1;

x5=1:0.001:max;
x2=1:0.001:max; %era 1.3 y5=fit06(x5)*massflow;
y2=fitn08(x2)*eta; x5=1:((max-1)*PC/3)/num:(max-1)*PC/3+1;
x2=1:((max-1)*PC/3)/num:(max-1)*PC/3+1;
x6=1:0.001:max;
y6=fit10(x6)*massflow;
x3=1:0.001:max; %era 1.6 x6=1:((max-1)*PC/3)/num:(max-1)*PC/3+1;

90 • Matching tra componenti di un turbofan


Appendice A

create4turbine.m
La funzione di questo programma, appartenente al pacchetto “turbineread ”, è di stampare il grafico
delle 3 turbine e dell’ugello del flusso caldo. In ingresso si aspetta i vettori delle curve ed i valori limite
necessari per tracciare le linee tratteggiate.

function create4turbine(x1, y1, y2, x2, y3, y4, x3, %% Create plot
y5, y6, x4, y7,massflow1,massflow2,massflow3,massflow4,P plot5 = plot(x2,y3,ʻLineWidthʼ,2,ʻParentʼ,axes2);
Cesp1,PCesp2,PCesp3,PCesp4) %% Create plot
plot6 = plot(x2,y4,ʻLineWidthʼ,2,ʻParentʼ,axes2);
massflow1x=[massflow1;massflow1]; %% Create plot
massflow2x=[massflow2;massflow2]; plot7 = plot(PCesp2x,massflow3x,ʼColorʼ,ʼkʼ,ʼLineStyle
massflow3x=[massflow3;massflow3]; ʼ,ʼ:ʼ,ʼParentʼ,axes2);
massflow4x=[massflow4;massflow4]; %% Create plot
plot8 = plot(PCesp2y,massflow3y,ʼColorʼ,ʼkʼ,ʼLineStyle
massflow1y=[massflow1;0]; ʼ,ʼ:ʼ,ʼParentʼ,axes2);
massflow2y=[massflow2;0]; %% Create plot
massflow3y=[massflow3;0]; plot9 = plot(PCesp2xx,massflow2x,ʼColorʼ,ʼkʼ,ʼLineStyl
massflow4y=[massflow4;0]; eʼ,ʼ:ʼ,ʼParentʼ,axes2);

PCesp1x=[PCesp1;16];
PCesp2x=[PCesp2;16]; %% Create axes
PCesp3x=[PCesp3;16]; axes3 = axes(ʻPositionʼ,[0.5064 0.11 0.1925 0.7274],ʻ
PCesp4x=[PCesp4;16]; YTickLabelʼ,{},ʻParentʼ,figure1);
axis(axes3,[1 5 0 0.06]);
PCesp1y=[PCesp1;PCesp1]; xlabel(axes3,ʼ\pi Turbina di bassaʼ);
PCesp2y=[PCesp2;PCesp2]; hold(axes3,ʼallʼ);
PCesp3y=[PCesp3;PCesp3];
PCesp4y=[PCesp4;PCesp4]; %% Create plot
plot10 = plot(x3,y5,ʼLineWidthʼ,2,ʼParentʼ,axes3);
PCesp1xx=[0;PCesp1];
PCesp2xx=[0;PCesp2]; %% Create plot
PCesp3xx=[0;PCesp3]; plot11= plot(x3,y6,ʼLineWidthʼ,2,ʼParentʼ,axes3);
PCesp4xx=[0;PCesp4];
%% Create plot
%% Create figure plot12= plot(PCesp3x,massflow4x,ʼColorʼ,ʼkʼ,ʼLineStyle
figure1 = figure( ʻFileNameʼ,ʼ/Users/giovanni/Desktop/ ʼ,ʼ:ʼ,ʼParentʼ,axes3);
Tesi/8-07/printable/P4Turbinemap.epsʼ,ʼNameʼ,ʼGrafic
oʼ,ʼPaperPositionʼ,[4.256 12.09 12.46 5.497],ʼPaper- %% Create plot
Sizeʼ,[20.98 29.68],... plot13= plot(PCesp3y,massflow4y,ʼColorʼ,ʼkʼ,ʼLineStyle
ʻPaperTypeʼ,ʼ<custom>ʼ); ʼ,ʼ:ʼ,ʼParentʼ,axes3);

%% Create axes %% Create plot


axes1 = axes(ʻPositionʼ,[0.08994 0.11 0.1967 0.7274], plot14= plot(PCesp3xx,massflow3x,ʼColorʼ,ʼkʼ,ʼLineStyl
ʼParentʼ,figure1); eʼ,ʼ:ʼ,ʼParentʼ,axes3);
axis(axes1,[1 5 0 0.06]); %% Create axes
xlabel(axes1,ʼ\pi Turbina Altaʼ); axes4 = axes(ʻPositionʼ,[0.7099 0.11 0.1951 0.7274],ʼ
ylabel(axes1,ʼm_0 \surdT_0 / p_0ʼ); YAxisLocationʼ,ʼrightʼ,ʼParentʼ,figure1);
hold(axes1,ʼallʼ); axis(axes4,[1 5 0 0.06]);
%% Create plot xlabel(axes4,ʼ\pi Ugello caldoʼ);
plot1 = plot(x1,y1,ʼLineWidthʼ,2,ʼParentʼ,axes1); ylabel(axes4,ʼm_0 \surd T_0 / p_0ʼ);
%% Create plot hold(axes4,ʼallʼ);
plot2 = plot(x1,y2,ʼLineWidthʼ,2,ʼParentʼ,axes1);
%% Create plot %% Create plot
plot3 = plot(PCesp1x,massflow2x,ʼColorʼ,ʼkʼ,ʼLineStyle plot15 = plot(x4,y7,ʼLineWidthʼ,2,ʼParentʼ,axes4);
ʼ,ʼ:ʼ,ʼParentʼ,axes1);
%% Create plot %% Create plot
plot4 = plot(PCesp1y,massflow2y,ʼColorʼ,ʼkʼ,ʼLineStyle plot16 = plot(PCesp4xx,massflow4x,ʼColorʼ,ʼkʼ,ʼLineSty
ʼ,ʼ:ʼ,ʼParentʼ,axes1); leʼ,ʼ:ʼ,ʼParentʼ,axes4);

%% Create axes %% Create textbox


axes2 = axes(ʻPositionʼ,[0.2987 0.11 0.1941 0.7274],ʼ annotation1 = annotation(figure1,ʼtextboxʼ,ʼPositionʼ
YTickLabelʼ,{},ʼParentʼ,figure1); ,[0.3865 0.8718 0.3565 0.07624],ʼHorizontalAlignmen
axis(axes2,[1 5 0 0.06]); tʼ,ʼCenterʼ,ʼLineStyleʼ,ʼnoneʼ,ʼStringʼ,{ʻ\bf\font-
xlabel(axes2,ʼ\pi Turbina di mediaʼ); size{14}\pi_E_S_P delle tre turbine e dellʼʼugelloʼ}
hold(axes2,ʼallʼ); ,ʼFitHeightToTextʼ,ʼonʼ);

Matching tra componenti di un turbofan • 91


Appendice A

ottimizzatorepigreco.m
La funzione del seguente tabulato rientra nell’ottimizzazione pre-design citata nel capitolo 4. L’obiettivo è
quello di calcolare la miglior scelta del rapporto di compressione per il fan al variare del rapporto di bypass.Il
rapporto di compressione totale rimane costante.

%------------------------------------------ toll=0.0001;
%---------------OTTIMIZZATORE-------------- for i=1:1:sizex
%------------------------------------------ for n_it = 1:1:10
% Il programma stampa un grafico con la miglior scelta T2efmedia=(Temp0+Tam0)/2;
di rapporto di k2=pure_air(T2efmedia);
% compressione per il fan al variare del rapporto di cpef=pure_air_cp(T2efmedia);
bypass.Il calcolo Temp0=Tam00*(1+1/VALORE(4,:)*(power(x(i),(k2-1)/
% viene effettuato mantenendo la massima temperatura k2)-1));
ammissibile in uscita
% al compressore e mantenendo massimo il rapporto di deltat=abs(Temp0-Tam0);
compressione totale if deltat<toll
% dei compressori-fan. break;
end
%Analizza il file ʻrisultato.txtʼ proveniente da anal- Tam0=Temp0;
isi dellʼalgoritmo Temp00(i)=Temp0;
%genetico end
nome_file= ʻrisultato.txtʼ; end
[RISULTATO,NOME_R,nn]= risultato_open(nome_file);

%Legge il file ʻcontorno.txtʼ contenente le informazi- for i=1:1:sizex


oni al contorno if Temp00(i)>VALORE(15,:)
%relative alle condizioni operative del turbofan pimax= x(i-1);
break;
nome_file= ʻcontorno.txtʼ; end
end

[VALORE,NOME,n]= contorno_open(nome_file);
RISULTATO(1,:) = 50; %Avvia lo studio del ciclo termodinamico

%Calcola le condizioni ambientali n0=RISULTATO(12,:);


spinta=RISULTATO(13,:);
x=1:0.01:50; marco=1;
mirco=1;
Alti = VALORE(1,:); picomp= pimax/RISULTATO(2,:);
Mach = VALORE(2,:); val=0.01;
a=0;
aa=0;
pamb = pressure_ratio(Alti); b=0;

Tamb = temperature_ratio(Alti); for ii=1:0.1:5


RISULTATO(5,:)=ii;
aa=aa+1;
roam = ro_ratio(Alti); a=0;
b=0;
k=pure_air(Tamb); R=0;
ntot=0;
cp0=pure_air_cp(Tamb); for i=1:0.01:pimax

camb = Mach*sqrt((k-1)*cp0*Tamb); RISULTATO(2,:)=i;


RISULTATO(3,:)=sqrt(pimax/i);
Tam0=Tamb+power(camb,2)/(2*cp0); RISULTATO(4,:)=sqrt(pimax/i);
Temp0=Tam0;
[VALORE,RISULTATO] = ciclo_termodin(VALOR
[sizex,sizey]=size(x); E,RISULTATO);
if sizey>sizex
sizex=sizey; if isreal(RISULTATO(12,:))==1 & isreal(RISULTATO(13,
end :))==1
Temp0=Tam0; a=a+1;
Tam00=Tam0; ntot(a)=RISULTATO(12,:);

92 • Matching tra componenti di un turbofan


Appendice A

R(a)=RISULTATO(13,:); end
else end
[Rmax(aa),I(aa)] = max(R); i=1:0.01:0.09+a*0.01;
[ntotmax(aa),J(aa)] = max(ntot); A=1:0.1:5;
fprintf(1,ʼ-----------------------\nRapporto di
By Pass: %e\n\nʼ,ii); PCfan=I*0.01+1;
ByPass=A;
for SS=1:0.1:pimax/(I(aa)*0.01+1) PCperBypass=[ByPass;PCfan];

RISULTATO(2,:)=I(aa)*0.01+1; plot(A,(I*0.01+1));
RISULTATO(3,:)=SS;
RISULTATO(4,:)=pimax/(I(aa)*0.01+1)/SS;
[VALORE,RISULTATO] = ciclo_termodin(VALORE,RI title(ʻ\bf\fontsize{12}Miglior \pi_C_f_a_n in funzi-
SULTATO); one di By-Passʼ);
xlabel(ʻBy-Pass m_c/m_hʼ);
if isreal(RISULTATO(12,:))==1 & isreal(RISULT ylabel(ʻ\pi_C_f_a_nʼ);
ATO(13,:))==1
b=b+1;
NTOT(b)=RISULTATO(12,:); [VALORE,RISULTATO] = ciclo_termodin(VALORE,RISULTATO
RR(b)=RISULTATO(13,:); );
else

fprintf(1,ʼRapporto di Pcomp: %e\nʼ,SS);


%Scrive i risultati sul file ʻrisultato.txtʼ in modo
break; tale da poter essere
end %analizzato dallʼalgoritmo genetico.

end risultato_write(NOME_R,RISULTATO,nn);
[RRmax(aa),PC(aa)] = max(RR);
[NTOTmax(aa),PC1(aa)] = max(NTOT);
break;
end

fprintf(1,ʼOK\nʼ);

scala_mappa.m
Questo programma è l’artefice dello scaling delle mappe dei compressori e del fan. Viene applicato
il metodo illustrato da J. Kuzke e C. Riegler. Per un’analisi approfondita delle operazioni contenute nella
procedura è consigliabile passare al capitolo 3.

%Questo file si preoccupa di scalare tutte le in- %- velocit‡ e ai valori della portata sulla ref line
formazioni relative al (Wcn)
%grafico del compressore %------------------------------------------------
%Pur utilizzando il metodo “Kurzke, Riegler” si è de- function [p0m,p1m,p2m,p3m,p4m,p5m,p6m,p7m,p8m,p0n,p1n
ciso di modificare il ,p2n,p3n,p4n,p5n,p6n,p7n,p8n,pref,psurge,Ncnew,SURGE
%valore per il calcolo del pigreco di riferimento, in REF]= scala_mappa(pi_ref,His)
quanto il campo è
%molto pi˘ ristretto: + - 0.5 e non + 23. Lo si è %Questo è il dato di riferimento (ossia il rapporto
portato da di compressione della
% pi_rel=0.1961+0.08*ln(pi_ref) a: %mappa originale
% pi_rel=0.123559085+0.08*ln(pi_ref)
%Fornendo solo i dati relativi a nuovo rapporto di pi_old=2.6;
compressione e lavoro
%isoentropico questa funzione restituisce i coeffici- %Questo è il valore del lavoro calcolato per un rap-
enti relativi a tutte porto di compressione
%le curve necessarie ad una completa rappresentazione %uguale a pi_old, riporta quindi il valore del lavoro
della macchina. di un compressore di
%geometria uguale a quella data, con compressione
uguale a pi_old
%-----------------------------------------------
%- In questa prima parte vengono modificati i parame- Hisorig= 107131.8962;
tri relativi alle Wmax=[0.39604,0.56274,0.66795,0.78346,0.88292,0.96337

Matching tra componenti di un turbofan • 93


Appendice A

,1.0178,1.0367,1.1011]; p0n=polyfit(X0,Y0,3);

Wcorig=[0.29724,0.069742;0.45799,0.16617;0.60476,0. %calcola il massimo valore della portata di massa


27811;0.75564,0.4572;0.86211,0.64317;0.94769,0.84 (choke)
293;1,1];
[refx(r) I]=max(Y0);
%Velocità corrette originali
%calcola il rapporto di compressione relativo
Nold=[0.359,0.528,0.661,0.791,0.88,0.952,1,1.028,1.1
44]; refy(r)=X0(I);
r=r+1;
%Rapporto di compressione con N=50%
xin=0;
pi_rel50=0.123559085+0.08*log(pi_ref); xout=0.1965;

%Massa corretta con N=50% p1 = -75.88;


p2 = -6.4141;
W_N50=1.1037*power(pi_ref,-0.2223); p3 = 8.1785;
p4 = 0.14495;
%Lavoro della linea N=80% nuovo
[X1,Y1]=plot_cubic(p1,p2,p3,p4,xin,xout);
W80=0.1751*exp(-0.1042*pi_ref);
p1n=polyfit(X1,Y1,3);
%Lavoro della linea N=80% vecchio
[refx(r) I]=max(Y1);
W80old=0.1751*exp(-0.1042*pi_old); refy(r)=X1(I);
r=r+1;
fhis=His/Hisorig;
xin=0.0825;
wref=0; xout=0.3445;
refx=0;
refy=0; p1 = -2.7567;
REFy=0; p2 = -10.274;
WWCN=0; p3 = 6.3937;
p4 = 0.068776;
%Calcola le nuove velocità corrette e le nuove por-
tate di massa per la [X2,Y2]=plot_cubic(p1,p2,p3,p4,xin,xout);
%reference line
p2n=polyfit(X2,Y2,3);
for i=1:1:9
if i<8 [refx(r) I]=max(Y2);
Wcn(i)=Wcmax(i)-W80/W80old*(Wcmax(i)- refy(r)=X2(I);
Wcorig(i,1)); r=r+1;
end
Ncnew(i)=sqrt(Nold(i)^2/fhis); xin=0.18;
xout=0.565;
end
p1 = -2.011;
%--------------------------------------------- p2 = -2.5448;
%-ALL GRAPHIC MANAGER: p3 = 3.5717;
%-In questa seconda parte la funzione ricerca i punti p4 = 0.096164;
di massimo dei
%-rendimenti salvandone la coordinata in pigreco, in [X3,Y3]=plot_cubic(p1,p2,p3,p4,xin,xout);
questo modo attraverso
%-la fase successiva si puÚ risalire alla coordinata p3n=polyfit(X3,Y3,3);
di intercetto della
%-reference line [refx(r) I]=max(Y3);
%--------------------------------------------- refy(r)=X3(I);
%curva caratteristica per N=0.359 r=r+1;

r=1; xin=0.279;
xin=0; xout=0.77;
xout=0.084;
p1 = -1.4355;
p1 = -1743.8; p2 = -0.18816;
p2 = 96.375; p3 = 2.005;
p3 = 10.591; p4 = 0.17934;
p4 = 0.32465;
[X4,Y4]=plot_cubic(p1,p2,p3,p4,xin,xout);
[X0,Y0]=plot_cubic(p1,p2,p3,p4,xin,xout);
p4n=polyfit(X4,Y4,3);

94 • Matching tra componenti di un turbofan


Appendice A

%-reference line si passa al calcolo delle nuove por-


[refx(r) I]=max(Y4); tate di massa corrette.
refy(r)=X4(I); %-Il calcolo avviene riscalando la tutte le coordi-
r=r+1; nate x delle curve
%-tenendo fissa la massima portata di massa (choke).Si
xin=0.3735; procede invece ad
xout=0.964; %-una proporzione per stabilire la nuova posizione
della portata minima
p1 = -0.83594; %-(surge).Viene quindi effettuato nuovamente un fit-
p2 = 0.39699; ting ed sono proprio
p3 = 1.1172; %-i coefficienti di questi fitting che vengono forniti
p4 = 0.28265; in uscita.

[X5,Y5]=plot_cubic(p1,p2,p3,p4,xin,xout); p1 = 96.22;
p2 = -150.66;
p5n=polyfit(X5,Y5,3); p3 = -0.47071;
p4 = -0.68372;
[refx(r) I]=max(Y5); p5 = 0.39604;
refy(r)=X5(I);
r=r+1; x0 = 0:0.001:0.088;
xin=0.4325; y0 = p1*power(x0,4)+p2*power(x0,3) +p3*power(x0,2
xout=1.09; )+p4*power(x0,1)+p5;
WMAX(i)=max(y0);
p1 = -1.1502;
p2 = 1.8001; [WMIN(i) I]=min(y0);
p3 = -0.22279;
p4 = 0.56923; [y0]=scale_y(y0,WMAX(i),Wcorig(i,1),Wcn(i),WMIN(
i));
[X6,Y6]=plot_cubic(p1,p2,p3,p4,xin,xout);
p0m=polyfit(x0,y0,4);
p6n=polyfit(X6,Y6,3); y0 = p0m(1)*power(x0,4)+p0m(2)*power(x0,3)
+p0m(3)*power(x0,2)+p0m(4)*power(x0,1)+p0m(5);
[refx(r) I]=max(Y6); [WMIN(i) I]=min(y0);
refy(r)=X6(I); SY(i)=x0(I);
r=r+1; wref(i)=p0m(1)*power(refy(i),4)+p0m(2)*power(re
xin=0.455; fy(i),3) +p0m(3)*power(refy(i),2)+p0m(4)*power(refy(
xout=1.138; i),1)+p0m(5);

p1 = -0.14934; i=i+1;
p2 = -0.29621;
p3 = 1.2201; p1 = -123.44;
p4 = 0.21569; p2 = 19.754;
p3 = -1.8941;
[X7,Y7]=plot_cubic(p1,p2,p3,p4,xin,xout); p4 = -0.29469;
p5 = 0.56274;
p7n=polyfit(X7,Y7,3);

[refx(r) I]=max(Y7); x1 = 0:0.001:0.2;


refy(r)=X7(I); y1 = p1*power(x1,4)+p2*power(x1,3) +p3*power(x1,2
r=r+1; )+p4*power(x1,1)+p5;
xin=0.5445; WMAX(i)=max(y1);
xout=1.2765; [WMIN(i) I]=min(y1);
[y1]=scale_y(y1,WMAX(i),Wcorig(i,1),Wcn(i),WMIN(
p1 = 0.31691; i));
p2 = -1.296;
p3 = 1.961; p1m=polyfit(x1,y1,4);
p4 = -0.07467; y1 = p1m(1)*power(x1,4)+p1m(2)*power(x1,3)
+p1m(3)*power(x1,2)+p1m(4)*power(x1,1)+p1m(5);
[X8,Y8]=plot_cubic(p1,p2,p3,p4,xin,xout); [WMIN(i) I]=min(y1);
SY(i)=x1(I);
p8n=polyfit(X8,Y8,3); wref(i)=p1m(1)*power(refy(i),4)+p1m(2)*power(
refy(i),3) +p1m(3)*power(refy(i),2)+p1m(4)*power(ref
[refx(r) I]=max(Y8); y(i),1)+p1m(5);
refy(r)=X8(I);
r=r+1; i=i+1;
p1 = -45.816;
i=1; p2 = 30.17;
p3 = -8.7078;
%---------------------------------------------- p4 = 0.97759;
%-Ora che un sono disponibili i risultati delle in- p5 = 0.6315;
tersezioni con la

Matching tra componenti di un turbofan • 95


Appendice A

x2 = 0.0825:0.0005:0.347;
y2 = p1*power(x2,4)+p2*power(x2,3) +p3*power(x2,2 p1 = -1.6094;
)+p4*power(x2,1)+p5; p2 = 3.2769;
WMAX(i)=max(y2); p3 = -2.4623;
[WMIN(i) I]=min(y2); p4 = 0.80924;
[y2]=scale_y(y2,WMAX(i),Wcorig(i,1),Wcn(i),WMI p5 = 0.86498;
N(i)); x5 = 0.3735:0.0005:0.966;
y5 = p1*power(x5,4)+p2*power(x5,3) +p3*power(x5,2
p2m=polyfit(x2,y2,4); )+p4*power(x5,1)+p5;
y2 = p2m(1)*power(x2,4)+p2m(2)*power(x2,3) WMAX(i)=max(y5);
+p2m(3)*power(x2,2)+p2m(4)*power(x2,1)+p2m(5); [WMIN(i) I]=min(y5);
[WMIN(i) I]=min(y2); [y5]=scale_y(y5,WMAX(i),Wcorig(i,1),Wcn(i),WMIN(
SY(i)=x2(I); i));
wref(i)=p2m(1)*power(refy(i),4)+p2m(2)*power(r p5m=polyfit(x5,y5,4);
efy(i),3)+p2m(3)*power(refy(i),2)+p2m(4)*power(refy( y5 = p5m(1)*power(x5,4)+p5m(2)*power(x5,3)
i),1)+p2m(5); +p5m(3)*power(x5,2)+p5m(4)*power(x5,1)+p5m(5);

i=i+1; [WMIN(i) I]=min(y5);


SY(i)=x5(I);
p1 = -15.678; wref(i)=p5m(1)*power(refy(i),4)+p5m(2)*power(r
p2 = 18.979; efy(i),3)+p5m(3)*power(refy(i),2)+p5m(4)*power(refy(
p3 = -8.8428; i),1)+p5m(5);
p4 = 1.8095;
p5 = 0.64799; i=i+1;
p1 = -0.98344;
p2 = 2.449;
x3 = 0.18:0.0005:0.5696; p3 = -2.2557;
y3 = p1*power(x3,4)+p2*power(x3,3) +p3*power(x3,2 p4 = 0.91026;
)+p4*power(x3,1)+p5; p5 = 0.88191;
WMAX(i)=max(y3); x6 = 0.4325:0.001:1.096;
[WMIN(i) I]=min(y3); y6 = p1*power(x6,4)+p2*power(x6,3) +p3*power(x6,2
)+p4*power(x6,1)+p5;
[y3]=scale_y(y3,WMAX(i),Wcorig(i,1),Wcn(i),WM WMAX(i)=max(y6);
IN(i)); [WMIN(i) I]=min(y6);
p3m=polyfit(x3,y3,4); [y6]=scale_y(y6,WMAX(i),Wcorig(i,1),Wcn(i),WMIN(
y3 = p3m(1)*power(x3,4)+p3m(2)*power(x3,3) i));
+p3m(3)*power(x3,2)+p3m(4)*power(x3,1)+p3m(5); p6m=polyfit(x6,y6,4);
[WMIN(i) I]=min(y3); y6 = p6m(1)*power(x6,4)+p6m(2)*power(x6,3)
SY(i)=x3(I); +p6m(3)*power(x6,2)+p6m(4)*power(x6,1)+p6m(5);
wref(i)=p3m(1)*power(refy(i),4)+p3m(2)*power(ref
y(i),3) +p3m(3)*power(refy(i),2)+p3m(4)*power(refy(i [WMIN(i) I]=min(y6);
),1)+p3m(5); SY(i)=x6(I);
wref(i)=p6m(1)*power(refy(i),4)+p6m(2)*power(r
i=i+1; efy(i),3)+p6m(3)*power(refy(i),2)+p6m(4)*power(refy(
p1 = -3.8993; i),1)+p6m(5);
p2 = 5.9884;
p3 = -3.4896; i=i+1;
p4 = 0.91237; p1 = -0.72297;
p5 = 0.79282; p2 = 1.9222;
p3 = -1.8878;
x4 = 0.279:0.001:0.777; p4 = 0.81128;
y4 = p1*power(x4,4)+p2*power(x4,3) +p3*power(x4,2 p5 = 0.90782;
)+p4*power(x4,1)+p5;
WMAX(i)=max(y4); x7 = 0.455:0.001:1.139;
[WMIN(i) I]=min(y4); y7 = p1*power(x7,4)+p2*power(x7,3) +p3*power(x7,2
[y4]=scale_y(y4,WMAX(i),Wcorig(i,1),Wcn(i),WM )+p4*power(x7,1)+p5;
IN(i)); WMAX(i)=max(y7);
[WMIN(i) I]=min(y7);
p4m=polyfit(x4,y4,4); Wcorig(i,1)=p1*power(refy(i),4)+p2*power(refy(i),
y4 = p4m(1)*power(x4,4)+p4m(2)*power(x4,3) 3) +p3*power(refy(i),2)+p4*power(refy(i),1)+p5;
+p4m(3)*power(x4,2)+p4m(4)*power(x4,1)+p4m(5); Wcorig(i,2)=refy(i);
Wcn(i)=Wcmax(i)-W80/W80old*(Wcmax(i)-
Wcorig(i,1));
[WMIN(i) I]=min(y4); [y7]=scale_y(y7,WMAX(i),Wcorig(i,1),Wcn(i),WMIN(i)
SY(i)=x4(I); );
wref(i)=p4m(1)*power(refy(i),4)+p4m(2)*power(r p7m=polyfit(x7,y7,4);
efy(i),3)+p4m(3)*power(refy(i),2)+p4m(4)*power(refy( y7 = p7m(1)*power(x7,4)+p7m(2)*power(x7,3) +p7m(3)*
i),1)+p4m(5); power(x7,2)+p7m(4)*power(x7,1)+p7m(5);

i=i+1;
[WMIN(i) I]=min(y7);

96 • Matching tra componenti di un turbofan


Appendice A

SY(i)=x7(I); WWCN(csi)=wref(i);
wref(i)=p7m(1)*power(refy(i),4)+p7m(2)*power(refy( REFy(csi)=refy(i);
i),3) +p7m(3)*power(refy(i),2)+p7m(4)*power(refy(i), end
1)+p7m(5); end
pref=polyfit(WWCN,REFy,4);
i=i+1;
p1 = -0.33415;
p2 = 1.1222; x9 = WWCN(1):0.001:WWCN(csi);
p3 = -1.3862; y9 = pref(1)*power(x9,4)+pref(2)*power(x9,3) +pre
p4 = 0.74589; f(3)*power(x9,2)+pref(4)*power(x9,1)+pref(5);
p5 = 0.95323; y9label= pref(1)*power(0.68,4)+pref(2)*power(0.68
,3) +pref(3)*power(0.68,2)+pref(4)*power(0.68,1)+pr
p8m=[p1,p2,p3,p4,p5]; ef(5);
x8 = 0.5445:0.001:1.282;
y8 = p1*power(x8,4)+p2*power(x8,3) +p3*power(x8,2 %--------------------------------------------
)+p4*power(x8,1)+p5; % SURGE LINE
%--------------------------------------------
WMAX(i)=max(y8);
[WMIN(i) I]=min(y8); psurge=polyfit(WMIN,SY,4);

x10 = WMIN(1):0.001:WMIN(9);
SY(i)=x8(I);
y10 = psurge(1)*power(x10,4)+psurge(2)*power(x10,
WMAX(i)=max(y8); 3)+psurge(3)*power(x10,2)+psurge(4)*power(x10,1)+psu
[WMIN(i) I]=min(y8); rge(5);
SY(i)=x8(I);
wref(i) = p1*power(refy(i),4)+p2*power(refy(i),3 y10label=psurge(1)*power(0.7,4)+psurge(2)*power(0
) +p3*power(refy(i),2)+p4*power(refy(i),1)+p5; .7,3)+psurge(3)*power(0.7,2)+psurge(4)*power(0.7,1)
+psurge(5);

%-------------------------------------------- %------------------------------------------
% REFERENCE LINE % Salva le informazioni relative ai limiti di
%-------------------------------------------- surge e ref line
%------------------------------------------
csi=0;
for i=1:1:7 SUR=[WWCN(1),WWCN(csi)];
SAR=[WMIN(1),WMIN(9)];
if wref(i)<1.2 && wref(i)>0 SURGEREF=[SUR;SAR];
csi=csi+1;

plot_eq_turbina.m
Questo programma calcola la mappa della turbina e la stampa a video con i rendimenti sulla parte
superiore.

%----------------------------------------------- %-------------------------------------------
% Calcola le linee per il grafico del rendimento % Calcola le linee per il grafico della massa
%----------------------------------------------- %-------------------------------------------

load(ʻrendfitʼ,ʼfitn04ʼ,ʼfitn06ʼ,ʼfitn08ʼ,ʼfitn10ʼ); load(ʻmassfitʼ, ʻfit04ʼ,ʼfit06ʼ,ʼfit10ʼ);

x0=1.12:0.001:5; x4=1.02:0.001:5;
y0=fitn04(x0); y4=fit04(x4);

x1=1.25:0.001:5; x5=1.32:0.001:5;
y1=fitn06(x1); y5=fit06(x5);

x2=1.3:0.001:5; x6=1.68:0.001:5;
y2=fitn08(x2); y6=fit10(x6);

x3=1.6:0.001:5; %---------------------------------------------
y3=fitn10(x3); %STAMPA IL GRAFICO
%---------------------------------------------

Matching tra componenti di un turbofan • 97


Appendice A

figure1 = figure; axes1)

axes1 = axes(ʻPositionʼ,[0.13 0.6524 0.775 0.2024],ʼX axes2 = axes(ʻPositionʼ,[0.13 0.07143 0.775 0.581],ʼP
AxisLocationʼ,ʼtopʼ,ʼParentʼ,figure1); arentʼ,figure1);

axis(axes1,[1 5 0.4 1]); axis(axes2,[1 5 0 1.2]);


title(axes1,ʼ\bf\fontsize{12}Grafico Turbina \pi=\pi_ xlabel(axes2,ʼ\bf\piʼ);
r_e_fʼ); ylabel(axes2,ʼ\bfrel. corr. mass flowʼ);

text(1.6,fitn10(1.6),ʼ \leftarrow 1.0ʼ,ʼHorizontalAli


gnmentʼ,ʼleftʼ,ʼParentʼ,axes1) text(1.12,fit04(1.12),ʼ \leftarrow N / \surdT_0_,_n_
(_r_e_l_ _t_o_ _d_e_s_i_g_n_) = 0.4ʼ,ʼHorizontalAlig
text(1.3,fitn08(1.3),ʼ \leftarrow 0.8ʼ,ʼHorizontalAli nmentʼ,ʼleftʼ,ʼParentʼ,axes2)
gnmentʼ,ʼleftʼ,ʼParentʼ,axes1)
text(1.32,fit06(1.32),ʼ \leftarrow 0.6ʼ,ʼHorizontalAl
text(1.25,fitn06(1.25),ʼ \leftarrow 0.6ʼ,ʼHorizontalA ignmentʼ,ʼleftʼ,ʼParentʼ,axes2)
lignmentʼ,ʼleftʼ,ʼParentʼ,axes1)
text(1.68,fit10(1.68),ʼ \leftarrow 1.0ʼ,ʼHorizontalAl
text(3.5,(fitn04(3.5)-0.05),ʼ \uparrow N / \surdT_0_ ignmentʼ,ʼleftʼ,ʼParentʼ,axes2)
,_n_(_r_e_l_ _t_o_ _d_e_s_i_g_n_) = 0.4ʼ,ʼHorizontal
Alignmentʼ,ʼleftʼ,ʼVerticalAlignmentʼ,ʼtopʼ,ʼParentʼ
,axes1) hold(axes2,ʼallʼ);

xlabel(axes1,ʼ\bf\piʼ); plot(x4,y4,x5,y5,x6,y6,ʼLineWidthʼ,2,ʼParentʼ,axes2)

ylabel(axes1,ʼ\bf\eta_tʼ); hold off

hold(axes1,ʼallʼ);

plot(x0,y0,x1,y1,x2,y2,x3,y3,ʼLineWidthʼ,2,ʼParentʼ,

98 • Matching tra componenti di un turbofan


Appendice A

Matching tra componenti di un turbofan • 99


Conclusioni

100 • Matching tra componenti di un turbofan


Conclusioni

6 Conclusioni

N
ello sviluppo di questo elaborato si sono implementati svariati programmi. Si è provveduto a
programmare: un sistema per l’analisi delle condizioni in progetto di un turbofan trialbero, una
metodologia di scala delle mappe di compressori e fan, una metodologia di scala per le turbine.
In questo modo è stato possibile implementare l’algoritmo per l’analisi delle condizioni fuori progetto di un
turbofan trialbero.
Per l’acquisizione dei dati dei grafici si è resa necessaria l’implementazione di un algoritmo che fosse in
grado di trasferire le informazioni contenute in un’immagine, all’interno di una matrice e successivamente da
questa matrice di ricercare l’equazione che meglio definisse la curva. In questo modo sono stati trattati tutti
i grafici presenti nell’elaborato.
I grafici utilizzati nel corso dell’elaborato sono: mappe caratteristiche di turbine ugello del flusso
caldo, fan e compressori; variabilità in funzione della temperatura di calore specifico a pressione costante
e dell’esponente isoentropico; andamento di temperatura assoluta, pressione assoluta e densità assoluta, in
funzione dell’altitudine.
A causa di difficoltà computazionali e della mole di dati da trattare, non si è riusciti ad ottenere un
andamento soddisfacente della linea operativa di macchina. Per questo motivo un possibile sviluppo è quello,
partendo dal lavoro svolto, di continuare nella ricerca dei punti operativi con l’obiettivo di progettare un
turbofan che operi il più vicino possibile alla ref line (linea dei massimi rendimenti).
Un consiglio per ottenere questo risultato è quello di affiancare il programma elaborato nel corso dello
studio di tesi a programmi di calcolo come GasTurb™ e GSP. Queste tipologie di software permettono
un’analisi immediata delle caratteristiche di un propulsore.

Matching tra componenti di un turbofan • 101


Bibliografia

102 • Matching tra componenti di un turbofan


Bibliografia

B Bibliografia

[1] H.I.H. Saravanamuttoo, G.F.C Rogers, H. Cohen, “Gas Turbine Theory”, Pearson Prentice Hall
2001
[2] E. Benini, “Propulsione Aerea”, Cleup 2005
[3] G. Sieros, A. Stamatis, K. Mathiundakis, “Jet Engine Component Maps for Performance Modeling
and Diagnosis”, Journal of Propulsion and Power, Vol. 13, No. 5, September-October 1997
[4] B. Narin, Y. A. Gögüs, “Simulation of Jet Engines and Determination of Engine Component
Performance”, Departement of Aeronautical Engineering, Middle East Technical University Ankara
[5] J. Kurzke, C. Riegler, ““A New Compressor Map Scaling Procedure For Preliminare Conceptional
Design of Gas Turbines”, ASME TurboExpo, Munich, 2000. 2000-GT-0006
[6] V. K. Garg, “Throughflow Analysis of Axial Flow Turbines”, Department of Mechanical Engineering,
Indian institute of Technologu, Kanpur India 1983.
[7] P.M. Tagade, S.K. Sane, K. Sudhakar, “Startup to Shutdown simulation of Single Spool Turbojet/
Turboshaft Engine”, Depatement of Aerospace Engineering, Indian Instiute of Technology, Bombay
[8] J. Kurzke, “Gas Turbine Cycle Design Methodology: a Comparison of Parameter Variation with
Numerical Optimization”, Engine Performance Department, MTU München, Deutschland.
[9] C. Kong, J. Ki, M. Kang, “Fuzzy Approaches for searching optimal Component Matching Point in
Gas Turbine Performance Simulation”, ASME TurboExpo, Atlanta, 2003. GT2003-38148
[10] C. Kong, S. Kho, J. Ki, “Component Map Generation of a Gas Turbine Using Genetic Algorithms”,
ASME TurboExpo, Wien, 2004. GT2004-53736
[11] T. N. Shiau, C. H. Kang, D. S. Liu, “Optimization Combines The Genetic Algorithms With ugmented
Lagrange Multiplier Method For Rotor-Bearing Systems Under Dynamic Behavior Constraints”
ASME TurboExpo, Wien, 2004. GT2004-54058
[12] S. H. Hwang, S. H. Yoon, T. S. Kim, ““Design and off-design Characteristics of the Alternative
Recuperated Gas Turbine Cycle with Divided Turbine Expansion”, ASME TurboExpo, Barcelona,
2006. GT2006-91311
[13] C. Riegler, M. Bauer, J. Kurzke, “Some Aspects of Modeling Compressor Behaviour in Gas Turbine
Performance Calculations”, ASME TurboExpo, Munich, 2000. GT2002-00012
[14] A. Seyr, G. Kulhanek, F. Neumayer, E. Rossi, W. Sanz, “Performance Measurement of the second
stage of a Transonic Turbine”, Institute for Thermal Turbomachinery and Machine Dynamics, Graz
University of Technology, Austria.
[15] J. Kurzke, “Performance Modeling Methodology: Efficiency Definitions for Cooled Single and
Multistaged Turbines”, ASME TurboExpo, Amsterdam, 2002. GT2002-30497
[16] C. Kong, J. Ki, S. Kho, M. Kang, ““Improvement on Performance Simulation Using Componet Maps

Matching tra componenti di un turbofan • 103


Bibliografia

of Aircraft Gas Turbine Obtained from System Identification”, Department of Aerospace Engineering,
Chosun University, Republic of Korea, American Institute of Aeronautics and Astronautics, 2003
[17] J. Kurzke, “Model Based Gas Turbine Parameter Corrections” ASME TurboExpo, Atlanta, 2003.
GT2003-38234
[18] H. J. Gladden, J. N. B. Livingood, “Procedure for Scalino of Experimental Turbine Vane Airfoil
Temperatures from low to high Gas Temperatures”, NASA Technical Note NASA TN D-6510
[19] J. Macek, J. Vàvra, O. Vìtek “Model of Radial Trubocharger Turbine Calibrated by Experiments”,
http://www2.fs.cvut.cz/web/fileadmin/documents/12241-BOZEK/publikace/2002/SAE010377.pdf
[20] R. Kurz, “Gas Turbine Performance”, Proceedings of the Thirty-Fourth Turbomachinery Symposium,
2005

104 • Matching tra componenti di un turbofan


Bibliografia

Matching tra componenti di un turbofan • 105