Appendice-B
Procedura utilizzata per la minimizzazione della superficie di scambio
dello scambiatore a recupero.
Sintassi del codice
Per la minimizzazione della superficie di scambio dello scambiatore a recupero è stato utilizzato il comando fmincon del software Matlab. Tale comando calcola il punto di minimo di una funzione obiettivo sottoposta ad un certo numero di vincoli.
La sintassi utilizzata nel file.m creato è stata la seguente: [x,fval] = fmincon (fun, xo, A ,B, Aeq, Beq, Lb, Ub, nonlcon).
I termini tra parentesi quadra rappresentano la risposta che vogliamo al termine del calcolo: in questo caso chiediamo di trovare il punti di minimo ed il valore della funzione obiettivo in tale punto.
Nella parentesi tonda, invece, sono riportati i dati in ingresso che noi diamo al codice:
• fun è la funzione obiettivo da minimizzare;
• xo è il punto dal quale si deve iniziare la ricerca del minimo; se la funzione è di più variabili esso è rappresentato da un vettore;
• A e B sono i coefficienti del vincolo lineare di disuguaglianza
A x
*
≤
B
; • Aeq e Beq sono i coefficienti del vincolo lineare di uguaglianza Aeq*x = Beq; • Lb e Ub rappresentano rispettivamente il limite inferiore e superiore della variabile;anche in questo caso se la funzione è di più variabili essi sono dei vettori
Lb
≤ ≤
x Ub
;Per quanto riguarda la funzione obiettivo ed il vincolo non lineare, essi possono essere introdotti anche sottoforma di funzioni esterne, attraverso la creazione di file.m loro dedicati e richiamati nel calcolo utilizzando una sintassi che verrà descritta più avanti.
Creazione del file.m
Il passo preliminare che si deve fare prima di andare a creare il file è quello di definire esattamente il problema che si deva affrontare.
Il nostro scopo è quello di minimizzare la superficie totale di uno scambiatore, garantendo un certo flusso termico scambiato (vincolo di uguaglianza), generando delle perdite di pressione inferiori ad un certo valore (vincolo di disuguaglianza) e potendo giocare su tre variabili geometriche, la lunghezza dei tubi, il diametro interno dei tubi ed il numero dei tubi. Osservando i dati in ingresso richiesti dal comando fmincon, ci manca soltanto di capire se i vincoli sono lineari o no; per il resto dobbiamo solo tradurre in termini matematici quanto detto nelle righe precedenti.
Definizione delle variabili
Le variabili devono essere indicate con la lettera x, seguita da un numero tra parentesi tonda; il numero serve ad identificare quale delle tre variabili stiamo considerando. Nel nostro modello le variabili sono state numerate così:
•
x
(1) : numero di tubi
•
x
(2) : diametro interno dei tubi
•x
(3) : lunghezza dei tubi
Definizione della funzione obiettivo
La funzione obiettivo, che deve essere minimizzata, è la superficie di scambio:
(
2
) *
*
A
=
π
di
+
sp
nt L
Nel codice la funzione obiettivo è stata introdotta come funzione esterna; la procedura utilizzata è stata la seguente:
• Si è creato un file.m chiamato con lo stesso nome della funzione che andremo a richiamare nella sintassi del comando, che nel nostro caso è myfun2;
• Nella prima riga del file deve essere inserito il comando “function f = myfun2 (x)”; • A seguire si devono definire tutte le costanti presenti nell’espressione della
funzione in oggetto; in questo caso si deve definire solo lo spessore del tubo;
• Si definisce la funzione con questa sintassi:
f
=
x
(1) * ( (2)
x
+
sp
) *
pi x
* (3)
; lo spessore non è stato raddoppiato perché la costate sp è stata definita nel file come il doppio spessore.Si riporta per intero il file myfun2.m
function f=myfun2(x) sp=0.006;
f=x(1)*(x(2)+sp)*x(3)*pi;
Una volta creata la funzione obiettivo, essa deve essere richiamata nel file principale; per fare questo si scrive nella prima posizione all’interno della parentesi tonda del comando fmincon il nome del file.m contenente la funzione, preceduto dal carattere @.
Il comando assume così il primo dato ed appare nella forma:
Definizione del punto di inizio del calcolo
La definizione del punto iniziale non presenta nessuna difficoltà; è sufficiente definire nel file principale un vettore di tre componenti che rappresentino tre valori plausibili per le tre variabili. Nel linguaggio Matlab un vettore si scrive tra parentesi quadra e le componenti sono separate da spazi o da punto e virgola.
Considerando che i valori sono tutti espressi in metri, un punto iniziale potrebbe essere:
[
500;0.01;10
]
xo
=
.L’espressione del comando diventa la seguente:
[
x fval
,
]
=
f
min
con
(
@
myfun
2,
xo
,....
)
Definizione dei vincoli lineari
Osservando i vincoli a cui è sottoposta la funzione obiettivo si nota che sono entrambi vincoli non lineari; ad esempio nella definizione del coefficiente globale di scambio, necessario per il vincolo di uguaglianza, le variabili sono elevate ad esponenti diversi da uno, generando la non linearità del vincolo.
Le caselle dal terzo al sesto posto nella parentesi tonda rimangono vuote ed il comando assume questa forma:
[
x fval
,
]
=
f
min
con
(
@
myfun
2,
xo
,
[ ] [ ] [ ] [ ]
,
,
,
....
)
Definizione dei limiti delle variabili
A questo è richiesta la definizione di due vettori che rappresentino i valori limite che possono essere assunti dalle variabili. Per influenzare il meno possibile la procedura di minimizzazione e cercare di non ottenere delle soluzioni di bordo, si è cercato di fornire
valori limite piuttosto blandi; soltanto il limite superiore della lunghezza ha l’effettivo scopo di limitare la variabile.
Il comando assume così questa forma:
[
x fval
,
]
=
f
min
con
(
@
myfun
2,
xo
,
[ ] [ ] [ ] [ ]
,
,
,
,
Lb Ub
,
,....
)
Definizione dei vincoli non lineari
La definizione dei vincoli non lineari è senza dubbio il passo più laborioso. Come per la funzione obiettivo, anche in questo caso si è utilizzata una funzione esterna, definita attraverso un file.m. La sintassi è leggermente diversa, poiché ora le funzioni da definire sono due. Si deve creare un file.m con lo stesso nome con il quale vogliamo richiamare il vincolo; nel nostro caso mycon.m. La differenza sta nella prima riga del file, nella definizione del comando function.
function [c,ceq] = mycon(x)
• c indica il vincolo di disuguaglianza, che nel calcolo verrà posto
≤
0
; • ceq indica il vincolo di uguaglianza, che sarà posto = 0.Il passo successivo nella creazione del file è la definizione di tutte le costanti geometriche e di tutte le proprietà termofisiche dei fluidi presenti nelle due espressioni dei vincoli.
A questo punto si possono iniziare a scrivere le espressioni dei due vincoli non lineari.
Vincolo di uguaglianza
L’espressione che dobbiamo arrivare a scrivere è
U
*
A
*
∆
T
lm−
Q
*
=
0
, doveQ
*
rappresenta il valore numerico della potenza termica da scambiare.Il salto termico medio logaritmico è indipendente dalle tre variabili; è quindi una costante e come tale definito tra le costanti.
La superficie di scambio ha la stessa espressione della funzione obiettivo e, coma abbiamo visto non comporta particolari complicazioni.
(1) * ( (2)
) *
* (3)
A
=
x
x
+
sp
pi x
Il coefficiente globale di scambio deve essere ricavato con alcuni passaggi.
1 e
1
1
e i e i id
U
R
R
h
h d
−⎛
⎞
=
⎜
+
+
+
⎟
⎝
⎠
Ri e Re sono le resistenze di fouling interna ed esterna e sono definite tra le costanti.
Il coefficiente di scambio lato mantello è stato ricavato con le correlazioni riportate in appendice-A, esplicitando le variabili principali, con la seguente procedura:
• Il diametro del mantello è stato approssimato come
Ds
=
1,5
nt
*
P
;l’espressione di S diviene quindi
S
C Ds Lb
*
*
1,5
nt C Lb
*
*
P
=
=
;• La portata per unità di sezione assume l’espressione
1,5
*
*
M
M
Ms
S
nt C Lb
=
=
;• Il diametro equivalente, scritto in funzione del diametro interno, è
(
)
(
)
2 2 2 24
4
4
4
do
di
sp
P
di
B
Deq
do
di
sp
π
π
π
π
⎛
⎞
+
−
⎜
⎟
+
−
⎝
⎠
=
=
+
• L’espressione del numero di Reynolds è
Re
*
1,5
*
*
*
M
Deq
nt C Lb
µ
=
;• A questo punto ci si può ricavare l’espressione del coefficiente i scambio
0,55 0,55 0,33 0,33
0,36 * Re
* Pr
*
*
0,36
* Pr
1,5
*
*
*
ek
M
Deq
k
h
Deq
nt C Lb
µ
Deq
⎛
⎞
=
=
⎜
⎟
⎝
⎠
.Raccogliendo le costanti e sviluppando i calcoli, arriviamo a questa espressione
(
)
0,33 0,55 0,55 0,45 0,2750,36 * Pr
*
*
1
1
1,5 *
*
*
eM
k
h
Deq
nt
C Lb
µ
=
;• Identificando con la lettere E il valore complessivo delle costanti, arriviamo all’espressione definitiva del coefficiente di scambio convettivo lato mantello:
0,45 0,275 0,55 0,33
1
1
0,36 * * Pr
1,5 *
*
*
eh
E
Deq
nt
M
E
k
C Lb
µ
⎧ =
⎪
⎪
⎨
⎛
⎞
⎪ =
⎜
⎟
⎪
⎝
⎠
⎩
.Il coefficiente di scambio lato tubi è ricavabile in modo analogo al precedente. Esplicitando le espressioni della velocità e della portata in funzione del diametro interno e del numero di tubi possiamo scrivere il numero di Reynolds come
2 2 2
*
*
4 *
*
4 *
4 *
Re
*
*
*
*
*
*
*
4 *
*
*
*
4
v
di
mt di
mt
m
di
di nt
di
mt
mt
mt
v
At
di
di
m
mt
nt
ρ
µ
π µ
π µ
π µ
ρ π
ρ
π
ρ
⎧
⎪
=
=
=
=
⎪
⎪
⎪
=
=
=
⎨
⎪
⎪
⎪
⎪
=
⎩
A questo punto si può andare a scrive il coefficiente di scambio in funzione delle variabili: 0,8 0,8 0,4
4 *
0,40,023Re
Pr
0,023
Pr
*
*
*
ik
k
m
k
h
Nu
di
di
π µ
di nt
di
⎛
⎞
=
=
=
⎜
⎟
⎝
⎠
Raggruppando le costanti otteniamo l’espressione definitiva:
0,8 0,4 0,8 1,8 0,8 1,8 0,8 0,4
4 *
1
1
1
1
0,023* * Pr
*
4 *
0,023* * Pr
*
m
hi
k
A
nt
di
nt
di
m
A
k
π µ
π µ
⎧
⎡
⎛
⎞
⎤
⎪ =
⎢
⎜
⎟
⎥
=
⎪
⎢
⎣
⎝
⎠
⎥
⎦
⎨
⎪
⎛
⎞
=
⎪
⎜
⎟
⎝
⎠
⎩
Il coefficiente globale di scambio assume così questa forma:
1 1 1 e 0,45 0,275 0,8 1,8
1
1
1
1
e i id
U
R
R
E
A
d
Deq
nt
nt
di
− − −⎡
⎛
⎞
⎛
⎞
⎤
⎢
⎥
=
+
+
⎜
⎟
+ ⎜
⎟
⎝
⎠
⎢
⎝
⎠
⎥
⎣
⎦
Vincolo di disuguaglianzaLe perdite di carico considerate nella procedura di minimizzazione sono state quelle lato tubi; l’inserimento delle perdite di carico lato mantello è stato evitato non perché esse siano di minore importanza, ma perché esse sono scarsamente influenzate dalla variabili scelte. Le perdite di carico lato mantello sono determinate principalmente dalla sezione minima di passaggio tra i tubi, che è stata indicata con la lettera S, che a sua volta dipende dal valore della distanza minima tra i tubi, indicata con la lettera C. Nella minimizzazione però C è stato considerato un parametro; ecco che le perdite di pressione lato mantello avrebbero avuto un significato marginale.
Per poter inserire correttamente il vincolo, dobbiamo scriverlo nella forma
∆ − ∆ ≤
p
p
* 0
.La correlazione per il calcolo delle perdite di carico è quella riportata nell’appendice-A.
2 0,2 2 2 0,2 0,2 2
4 *
4 *
2 *
*
2 * 0,046
*
*
*
*
*
*
4 *
0,046 Re
0,046
*
*
*
4 *
Re
*
*
*
4 *
*
* *
L
m
m
L
p
f
v
di
nt di
nt di
di
m
f
nt di
m
nt di
m
v
n di
ρ
ρ
π µ
π ρ
π µ
π µ
π ρ
− − −⎧
⎛
⎞
⎛
⎞
∆ =
=
⎪
⎜
⎟
⎜
⎟
⎪
⎝
⎠
⎝
⎠
⎪
⎛
⎞
⎪ =
=
⎜
⎟
⎪
⎝
⎠
⎨
⎪
=
⎪
⎪
⎪
=
⎪
⎩
Raggruppando le costanti e svolgendo elaborando i calcoli dove possibile si ottiene la forma definitiva. 0,2 1,8 1,8 4,8 1,8 4,8 0,2 1,8
2 * 0,046
4 *
4
*
*
2 * 0,046
4 *
4
m
L
L
p
F
nt
di
nt
di
m
F
µ
ρ
π
µ
ρ
π
⎧
⎛ ⎞ ⎛
⎞
∆ =
=
⎪
⎜ ⎟ ⎜
⎟
⎝ ⎠ ⎝
⎠
⎪
⎨
⎪
=
⎛ ⎞ ⎛
⎞
⎜ ⎟ ⎜
⎟
⎪
⎝ ⎠ ⎝
⎠
⎩
Descritti i procedimenti, riportiamo il file.m utilizzato per la definizione dei vincoli non lineari.
function [c,ceq] = mycon(x) %Resistenze di fouling Ra=0.0002;
Rb=0.0002;
%Salto termico medio logaritmico DT=18.6768;
C=0.01; Lb=0.2; B=C+sp; cp2=4220; visc2=0.0003; Pr2=(visc2*cp2)/k2; m2=12.3251;
%Caratteristiche lato tubi ro1=709; sp=0.006; m1=12.968; k1=0.07878; cp1=1509; visc1=0.000107; Pr1=(visc1*cp1)/k1;
%Costanti o variabili intermedie
Deq=4*((x(2)+B)^2-(pi*(x(2)+sp)^2)/4)/(pi*(x(2)+sp)); E=(2^0.55*0.36*m2^0.55*k2*Pr2^0.33)/((3*C*Lb*visc2)^0.55); A=(0.023*Pr1^0.4*k1*(m1*4)^0.8)/(pi*visc1)^0.8; U=(Ra+Rb+((x(1)^0.8*x(2)^1.8)/A)*((x(2)+sp)/x(2))+(x(1)^0.275*Deq^0.45)/E )^-1; F=(32*0.046*m1^1.8*visc1^0.2)/(pi^1.8*4^0.2*ro1); %Valori imposti nei due vincoli
Q=2459967; Dp=6000;
%Espressioni dei vincoli
c=(F*x(3)*x(1)^-1.8*x(2)^-4.8)-Dp; ceq=pi*DT*x(1)*(x(2)+sp)*x(3)*U-Q;
Forma definitiva del file.m
Conclusa la definizioni di tutti i dati in ingresso richiesti dalla sintassi del comando scelto per la minimizzazione, il file.m è concluso e pronto per il calcolo.
La forma definitiva, riferita alla minimizzazione della superficie di scambio dell’economizzatore operante con il fluido R-152a, è riportata di seguito.
% Resistenze di fouling Ra=0.0002;
Rb=0.0002;
%Delta T medio logaritmico DT=18.6768;
%Caratteristiche del mantello
sp=0.006; %doppio spessore del tubo C=0.001; %distanza tra i tubi
B=C+sp; %Differenza tra diametro interno e passo Lb=0.2; %Spazio tra i buffles
% Caratteristiche del fluido geotermico cp2=4220; %calore specifico
k2=0.67; %conducibilità visc2=0.0003; %viscosità
Pr2=(visc2*cp2)/k2; %numero di Prandtl m2=12.3251; %portata in massa
E=(2^0.55*0.36*m2^0.55*k2*Pr2^0.33)/((3*C*Lb*visc2)^0.55); %risultato dele costanti
%Caratteristiche del fluido di lavoro m1=12.968; %portata
k1=0.07878; %conducibilità ro1=709; %densità
cp1=1509; %calore specifico visc1=0.000107; %viscosità
Pr1=(visc1*cp1)/k1; %numero di Prandtl
A=(0.023*Pr1^0.4*k1*(m1*4)^0.8)/(pi*visc1)^0.8; %risultato delle costanti %Punto di inizio della minimizzazione
x0=[500 0.01 10];
%Potenza termica da scambiare Q=2459967;
%Perdite di carico lato tubi
F=(32*0.046*m1^1.8*visc1^0.2)/(pi^1.8*4^0.2*ro1); %risultato delle costanti
Dp=6000; %massimo valore ammissibile lato tubi %Minimizzazione [x,fval]=fmincon(@myfun2,x0,[],[],[],[],[0 0.005 0],[10000 3 10],@mycon) %valori da calcolare Deq=4*((x(2)+B)^2-(pi*(x(2)+sp)^2)/4)/(pi*(x(2)+sp)); %diametro equivalente U=(Ra+Rb+((x(1)^0.8*x(2)^1.8)/A)*((x(2)+sp)/x(2))+(x(1)^0.275*Deq^0.45)/E )^-1 %coefficiente globale di scambio
hi=((x(1)^0.8*x(2)^1.8)/A)^-1; %coefficiente convettivo interno he=((x(1)^0.275*Deq^0.45)/E)^-1; %coefficiente convettivo esterno Ds=1.5*x(1)^0.5*(x(2)+B) %diametro del mantello
Dp1=F*x(3)*x(1)^-1.8*x(2)^-4.8 %perdite di carico lato tubi Re=(4*m1)/(pi*x(1)*x(2)*visc1); %numero di Reynolds dei tubi v1=(4*m1)/(x(1)*pi*x(2)^2*ro1); %velocità nei tubi