> restart:#"m17_p53"

Un ciclo combinado de potencia Brayton-Rankine, toma 50 kg/s de aire ambiente, lo comprime hasta 1 MPa, y entra a la turbina de gas a 1400 K. La entrada a la turbina de vapor es a 10 MPa y 450 ºC, y la salida a 6 kPa. Tomando valores de rendimientos isoentrópicos del 80 %, 85 %, y 90 %, respectivamente, se pide:

a) Temperaturas entre los elementos del ciclo Brayton y potencia neta generada por la turbina de gas.

b) Esquema de los perfiles de temperatura en la caldera, suponiendo flujo a contracorriente, indicando los valores extremos.

c) Gasto de vapor generado.

d) Potencia generada por la turbina de vapor.

e) Consumo de combustible (gas natural) y rendimiento térmico del ciclo combinado.

Datos:

> read`../therm_chem.m`:with(therm_chem):with(therm_proc):

> su1:="Aire":su2:="H2O":dat:=[ma=50*kg_/s_,p2g=1e6*Pa_,T3g=1400*K_,p3v=10e6*Pa_,T3v=(450+273.15)*K_,p4v=6e3*Pa_,eta[C]=0.80,eta[Tg]=0.85,eta[Tv]=0.90];

Typesetting:-mprintslash([dat := [ma = `+`(`/`(`*`(50, `*`(kg_)), `*`(s_))), p2g = `+`(`*`(0.1e7, `*`(Pa_))), T3g = `+`(`*`(1400, `*`(K_))), p3v = `+`(`*`(0.10e8, `*`(Pa_))), T3v = `+`(`*`(723.15, `*`...

Image

> Adat:=get_gas_data(su1):Wdat:=gamma=1.33,get_gas_data(su2),get_liq_data(su2):get_pv_data(su2):dat:=[op(dat),Const,SI2,SI1]:

a) Temperaturas entre los elementos del ciclo Brayton y potencia neta generada por la turbina de gas.

> eqC:=subs(eta=eta[C],eq5_59);T1_:=T0;p1_:=p0;eq5_61;T2_:=subs(p2=p2g,p1=p0,T1=T0,Adat,dat,rhs(%));'T2_'=TKC(%);eqT:=subs(eta=eta[T],eq5_60);eq5_62;T4_:=subs(p4=p0,p3=p2g,T3=T3g,eta[T]=eta[Tg],Adat,dat,rhs(%));'T4_'=TKC(%);eqWg:=Wg=ma*c[p]*(T3-T4-(T2-T1));eqWg_:=subs(dat,subs(T1=T1_,T2=T2_,T3=T3g,T4=T4_,Adat,dat,%));

Typesetting:-mprintslash([eqC := eta[C] = `/`(`*`(`+`(`^`(pi[12], `/`(`*`(`+`(gamma, `-`(1))), `*`(gamma))), `-`(1))), `*`(`+`(`/`(`*`(T2), `*`(T1)), `-`(1))))], [eta[C] = `/`(`*`(`+`(`^`(pi[12], `/`(...
Typesetting:-mprintslash([T1_ := T0], [T0])
Typesetting:-mprintslash([p1_ := p0], [p0])
T2 = `*`(T1, `*`(`+`(1, `/`(`*`(`+`(`^`(`/`(`*`(p2), `*`(p1)), `/`(`*`(`+`(gamma, `-`(1))), `*`(gamma))), `-`(1))), `*`(eta[C])))))
Typesetting:-mprintslash([T2_ := `+`(`*`(623.1086184, `*`(K_)))], [`+`(`*`(623.1086184, `*`(K_)))])
T2_ = `+`(`*`(349.9586184, `*`(C)))
Typesetting:-mprintslash([eqT := eta[T] = `/`(`*`(`+`(1, `-`(`/`(`*`(T4), `*`(T3))))), `*`(`+`(1, `-`(`^`(`/`(`*`(p4), `*`(p3)), `/`(`*`(`+`(gamma, `-`(1))), `*`(gamma)))))))], [eta[T] = `/`(`*`(`+`(1...
T4 = `*`(T3, `*`(`+`(1, `-`(`*`(eta[T], `*`(`+`(1, `-`(`^`(`/`(`*`(p4), `*`(p3)), `/`(`*`(`+`(gamma, `-`(1))), `*`(gamma)))))))))))
Typesetting:-mprintslash([T4_ := `+`(`*`(826.5942867, `*`(K_)))], [`+`(`*`(826.5942867, `*`(K_)))])
T4_ = `+`(`*`(553.4442867, `*`(C)))
Typesetting:-mprintslash([eqWg := Wg = `*`(ma, `*`(c[p], `*`(`+`(T3, `-`(T4), `-`(T2), T1))))], [Wg = `*`(ma, `*`(c[p], `*`(`+`(T3, `-`(T4), `-`(T2), T1))))])
Typesetting:-mprintslash([eqWg_ := Wg = `+`(`*`(11970044.17, `*`(W_)))], [Wg = `+`(`*`(11970044.17, `*`(W_)))])

i.e. tras el compresor p2=1 MPa y T2=623 K, tras la turbina p4=p0 y T4=827 K, y la producción neta (turbina menos compresor) es de 12 MW.

b) Esquema de los perfiles de temperatura en la caldera, suponiendo flujo a contracorriente, indicando los valores extremos.

Como la presión de la caldera es p3v=10 MPa, la temperatura de cambio de fase del agua será Tv(p3v).

> Tboil:=Tv(p3v);p3v=subs(dat,p3v);eq6_42;Tboil_:=evalf(subs(dat,subs(dat,solve(p3v=pv(T),T))));'Tboil_'=TKC(%);

Typesetting:-mprintslash([Tboil := Tv(p3v)], [Tv(p3v)])
p3v = `+`(`*`(0.10e8, `*`(Pa_)))
T = `*`(T[u], `*`(`+`(`/`(`*`(B), `*`(`+`(A, `-`(ln(`/`(`*`(p), `*`(p[u]))))))), `-`(C))))
Typesetting:-mprintslash([Tboil_ := `+`(`*`(582.6814535, `*`(K_)))], [`+`(`*`(582.6814535, `*`(K_)))])
Tboil_ = `+`(`*`(309.5314535, `*`(C)))

i.e. el agua se vaporiza a 310 ºC en la caldera. Supondremos que los gases de la turbina de gas salen a esta temperatura (ver perfiles de temperatura en la figura anterior), aunque podrían aprovecharse un poco más, como se indica en dicho esquema, dejando en cualquier caso un salto térmico aceptable en el punto más cercano (pitch point).

c) Gasto de vapor generado.

En primera aproximación, supondremos T5g=Tboil; después veremos si el acercamiento máximo (pitch)  puede reducirse y aprovechar más los gases de escape.

> eqBEcald:=ma*c[p]*(T4g-T5g)=mv*(h3v-h2v);eqPitch:=T5g='Tboil';h2v=hl(T);h3v=hv(T);h3v_:=subs(Wdat,T=T3v,dat,dat,hv(T));T2v=Tv(p4v);T2v_:=evalf(subs(dat,subs(dat,solve(p4v=pv(T),T))));'T2v_'=TKC(%);h2v_:=subs(Wdat,T=T2v_,dat,dat,hl(T));mv:=solve(eqBEcald,mv);mv_:=subs(T4g=T4_,T5g=Tboil_,h2v=h2v_,h3v=h3v_,Adat,dat,%);

Typesetting:-mprintslash([eqBEcald := `*`(ma, `*`(c[p], `*`(`+`(T4g, `-`(T5g))))) = `*`(mv, `*`(`+`(h3v, `-`(h2v))))], [`*`(ma, `*`(c[p], `*`(`+`(T4g, `-`(T5g))))) = `*`(mv, `*`(`+`(h3v, `-`(h2v))))])
Typesetting:-mprintslash([eqPitch := T5g = Tboil], [T5g = Tboil])
h2v = `*`(c, `*`(`+`(T, `-`(T[f]))))
h3v = `+`(`*`(c, `*`(`+`(T[b], `-`(T[f])))), h[lv0], `*`(c[p], `*`(`+`(T, `-`(T[b])))))
Typesetting:-mprintslash([h3v_ := `+`(`/`(`*`(3393233.50, `*`(J_)), `*`(kg_)))], [`+`(`/`(`*`(3393233.50, `*`(J_)), `*`(kg_)))])
T2v = Tv(p4v)
Typesetting:-mprintslash([T2v_ := `+`(`*`(309.2017227, `*`(K_)))], [`+`(`*`(309.2017227, `*`(K_)))])
T2v_ = `+`(`*`(36.0517227, `*`(C)))
Typesetting:-mprintslash([h2v_ := `+`(`/`(`*`(151323.2009, `*`(J_)), `*`(kg_)))], [`+`(`/`(`*`(151323.2009, `*`(J_)), `*`(kg_)))])
Typesetting:-mprintslash([mv := `+`(`-`(`/`(`*`(ma, `*`(c[p], `*`(`+`(T4g, `-`(T5g))))), `*`(`+`(`-`(h3v), h2v)))))], [`+`(`-`(`/`(`*`(ma, `*`(c[p], `*`(`+`(T4g, `-`(T5g))))), `*`(`+`(`-`(h3v), h2v)))...
Typesetting:-mprintslash([mv_ := `+`(`/`(`*`(3.776916416, `*`(kg_)), `*`(s_)))], [`+`(`/`(`*`(3.776916416, `*`(kg_)), `*`(s_)))])

i.e. en la caldera se vaporizan 3,8 kg/s de agua, resultando un acercamiento máximo (punto P en la figura) de:

> eqP:=ma*c[p]*(T4g-TPg)='mv'*(h3v-h3l);h3l=hliq(Tboil);h3l_:=subs(Wdat,T=Tboil_,dat,dat,hl(T));TPg_:=subs(Adat,dat,T4_-mv_*(h3v_-h3l_)/(ma*c[p]));'TPg_'=TKC(%);DTP='TP-Tboil';DTP_:=TPg_-Tboil_;

Typesetting:-mprintslash([eqP := `*`(ma, `*`(c[p], `*`(`+`(T4g, `-`(TPg))))) = `*`(mv, `*`(`+`(h3v, `-`(h3l))))], [`*`(ma, `*`(c[p], `*`(`+`(T4g, `-`(TPg))))) = `*`(mv, `*`(`+`(h3v, `-`(h3l))))])
h3l = hliq(Tv(p3v))
Typesetting:-mprintslash([h3l_ := `+`(`/`(`*`(1294468.476, `*`(J_)), `*`(kg_)))], [`+`(`/`(`*`(1294468.476, `*`(J_)), `*`(kg_)))])
Typesetting:-mprintslash([TPg_ := `+`(`*`(668.6887076, `*`(K_)))], [`+`(`*`(668.6887076, `*`(K_)))])
TPg_ = `+`(`*`(395.5387076, `*`(C)))
DTP = `+`(TP, `-`(Tboil))
Typesetting:-mprintslash([DTP_ := `+`(`*`(86.0072541, `*`(K_)))], [`+`(`*`(86.0072541, `*`(K_)))])

i.e. el acercamiento DTP=86 ºC tiene todavía margen de mejora (bastará con dejar unos 10 ºC, por lo que podemos suponer ahora que la salida de los gases de escape sea unos 80 K por debajo de la Tboil, y repetir el cálculo.

> DTpit_:=80*K_;eqPitch:=T5g='Tboil-DTpit_';mv_:=subs(T4g=T4_,T5g=Tboil_-DTpit_,h2v=h2v_,h3v=h3v_,Adat,dat,mv);TPg_:=subs(Adat,dat,T4_-mv_*(h3v_-h3l_)/(ma*c[p]));'TPg_'=TKC(%);DTP='TP-Tboil';DTP_:=TPg_-Tboil_;

Typesetting:-mprintslash([DTpit_ := `+`(`*`(80, `*`(K_)))], [`+`(`*`(80, `*`(K_)))])
Typesetting:-mprintslash([eqPitch := T5g = `+`(Tboil, `-`(DTpit_))], [T5g = `+`(Tboil, `-`(DTpit_))])
Typesetting:-mprintslash([mv_ := `+`(`/`(`*`(5.015692210, `*`(kg_)), `*`(s_)))], [`+`(`/`(`*`(5.015692210, `*`(kg_)), `*`(s_)))])
Typesetting:-mprintslash([TPg_ := `+`(`*`(616.8978847, `*`(K_)))], [`+`(`*`(616.8978847, `*`(K_)))])
TPg_ = `+`(`*`(343.7478847, `*`(C)))
DTP = `+`(TP, `-`(Tboil))
Typesetting:-mprintslash([DTP_ := `+`(`*`(34.2164312, `*`(K_)))], [`+`(`*`(34.2164312, `*`(K_)))])

i.e. aun pensando que el escape sea 80 ºC por debajo de la Tboil, todavía queda margen porque el acercamiento es DTP=34 ºC, así que fijaremos el escape en Tboil-100 K y seguiremos.

> DTpit_:=100*K_;eqPitch:=T5g='Tboil-DTpit_';T5g_:=Tboil_-DTpit_;'T5g_'=TKC(%);mv_:=subs(T4g=T4_,T5g=Tboil_-DTpit_,h2v=h2v_,h3v=h3v_,Adat,dat,mv);TPg_:=subs(Adat,dat,T4_-mv_*(h3v_-h3l_)/(ma*c[p]));'TPg_'=TKC(%);DTP='TP-Tboil';DTP_:=TPg_-Tboil_;

Typesetting:-mprintslash([DTpit_ := `+`(`*`(100, `*`(K_)))], [`+`(`*`(100, `*`(K_)))])
Typesetting:-mprintslash([eqPitch := T5g = `+`(Tboil, `-`(DTpit_))], [T5g = `+`(Tboil, `-`(DTpit_))])
Typesetting:-mprintslash([T5g_ := `+`(`*`(482.6814535, `*`(K_)))], [`+`(`*`(482.6814535, `*`(K_)))])
T5g_ = `+`(`*`(209.5314535, `*`(C)))
Typesetting:-mprintslash([mv_ := `+`(`/`(`*`(5.325386160, `*`(kg_)), `*`(s_)))], [`+`(`/`(`*`(5.325386160, `*`(kg_)), `*`(s_)))])
Typesetting:-mprintslash([TPg_ := `+`(`*`(603.9501789, `*`(K_)))], [`+`(`*`(603.9501789, `*`(K_)))])
TPg_ = `+`(`*`(330.8001789, `*`(C)))
DTP = `+`(TP, `-`(Tboil))
Typesetting:-mprintslash([DTP_ := `+`(`*`(21.2687254, `*`(K_)))], [`+`(`*`(21.2687254, `*`(K_)))])

i.e. si el acercamiento es de 21 ºC se vaporizarían 5,3 kg/s de agua.

d) Potencia generada por la turbina de vapor.

Hay que determinar si la salida es seca (solo vapor) o húmeda (vapor con gotitas de agua). Si fuera seca, la T4 que daría el MGP para el vapor debería ser mayor que la T2v:

> eqWv:=Wv=mv*(h3v-h4v);eq5_62;'gamma'=subs(Wdat,gamma);T4_:=subs(p4=p4v,p3=p3v,T3=T3v,eta[T]=eta[Tv],Wdat,dat,rhs(eq5_62));'T4_'=TKC(%);

Typesetting:-mprintslash([eqWv := Wv = `+`(`-`(`/`(`*`(ma, `*`(c[p], `*`(`+`(T4g, `-`(T5g)), `*`(`+`(h3v, `-`(h4v)))))), `*`(`+`(`-`(h3v), h2v)))))], [Wv = `+`(`-`(`/`(`*`(ma, `*`(c[p], `*`(`+`(T4g, `...
T4 = `*`(T3, `*`(`+`(1, `-`(`*`(eta[T], `*`(`+`(1, `-`(`^`(`/`(`*`(p4), `*`(p3)), `/`(`*`(`+`(gamma, `-`(1))), `*`(gamma)))))))))))
gamma = 1.33
Typesetting:-mprintslash([T4_ := `+`(`*`(175.6065559, `*`(K_)))], [`+`(`*`(175.6065559, `*`(K_)))])
T4_ = `+`(`-`(`*`(97.5434441, `*`(C))))

T4<T2v, luego, como era de esperar, no sale vapor seco sino húmedo, y hay que determinar la fracción másica de vapor a la salida, x4.

> eqS:=s4s=s3s;s3s=sv(T,p);s4s=(1-x4s)*s4l+x4s*s4v;s3v_:=evalf(subs(dat,evalf(subs(Wdat,T=T3v,p=p3v,sv(T,p)))));s4v_:=evalf(subs(dat,evalf(subs(Wdat,T=T2v_,p=p4v,sv(T,p)))));s4l_:=evalf(subs(dat,evalf(subs(Wdat,T=T2v_,p=p4v,sl(T,p)))));x4s_:=(s3v_-s4l_)/(s4v_-s4l_);h4l_:=h2v_;h4v_:=subs(Wdat,T=T2v_,dat,dat,hv(T));h4s_:=(1-x4s_)*h4l_+x4s_*h4v_;h4__:=subs(dat,SI1,h3v_-eta[Tv]*(h3v_-h4s_));x4_:=(h4__-h2v_)/(h4v_-h2v_);eqWv_:=Wv=subs(dat,mv_*(h3v_-h4__));

Typesetting:-mprintslash([eqS := s4s = s3s], [s4s = s3s])
s3s = `+`(`*`(c, `*`(ln(`/`(`*`(T[b]), `*`(T[f]))))), `/`(`*`(h[lv0]), `*`(T[b])), `*`(c[p], `*`(ln(`/`(`*`(T), `*`(T[b]))))), `-`(`*`(R, `*`(ln(`/`(`*`(p), `*`(p0)))))))
s4s = `+`(`*`(`+`(1, `-`(x4s)), `*`(s4l)), `*`(x4s, `*`(s4v)))
Typesetting:-mprintslash([s3v_ := `+`(`/`(`*`(6583.544553, `*`(`^`(m_, 2))), `*`(`^`(s_, 2), `*`(K_))))], [`+`(`/`(`*`(6583.544553, `*`(`^`(m_, 2))), `*`(`^`(s_, 2), `*`(K_))))])
Typesetting:-mprintslash([s4v_ := `+`(`/`(`*`(8268.377941, `*`(`^`(m_, 2))), `*`(`^`(s_, 2), `*`(K_))))], [`+`(`/`(`*`(8268.377941, `*`(`^`(m_, 2))), `*`(`^`(s_, 2), `*`(K_))))])
Typesetting:-mprintslash([s4l_ := `+`(`/`(`*`(520.5023492, `*`(`^`(m_, 2))), `*`(`^`(s_, 2), `*`(K_))))], [`+`(`/`(`*`(520.5023492, `*`(`^`(m_, 2))), `*`(`^`(s_, 2), `*`(K_))))])
Typesetting:-mprintslash([x4s_ := .7825425347], [.7825425347])
Typesetting:-mprintslash([h4l_ := `+`(`/`(`*`(151323.2009, `*`(J_)), `*`(kg_)))], [`+`(`/`(`*`(151323.2009, `*`(J_)), `*`(kg_)))])
Typesetting:-mprintslash([h4v_ := `+`(`/`(`*`(2544639.532, `*`(J_)), `*`(kg_)))], [`+`(`/`(`*`(2544639.532, `*`(J_)), `*`(kg_)))])
Typesetting:-mprintslash([h4s_ := `+`(`/`(`*`(2024195.029, `*`(J_)), `*`(kg_)))], [`+`(`/`(`*`(2024195.029, `*`(J_)), `*`(kg_)))])
Typesetting:-mprintslash([h4__ := `+`(`/`(`*`(2161098.876, `*`(J_)), `*`(kg_)))], [`+`(`/`(`*`(2161098.876, `*`(J_)), `*`(kg_)))])
Typesetting:-mprintslash([x4_ := .8397451056], [.8397451056])
Typesetting:-mprintslash([eqWv_ := Wv = `+`(`*`(6561592.674, `*`(W_)))], [Wv = `+`(`*`(6561592.674, `*`(W_)))])

i.e. la turbina de vapor, que descarga con un 84 % en masa de vapor, genera 6,6 MW.

e) Consumo de combustible (gas natural) y rendimiento térmico del ciclo combinado.

Aproximamos por metano el gas natural.

> s3_:='s3_':s4_:='s4_':eqeta:=eta[glob]=(Wg+Wv)/Qg;Qg:=ma*c[p]*(T3g-T2g);Qg_:=subs(T2g=T2_,Adat,dat,dat,%);mf:=Qg/PCI;eq_:=CH4+2*O2=CO2+2*H2O;PCI_:=PCI(eq_);PCIm_:=PCI_/rhs(Mf(CH4));mf_:=subs(dat,Qg_/PCIm_);eqeta_:=subs(eqWg_,eqWv_,T2g=T2_,Adat,dat,eqeta);

Typesetting:-mprintslash([eqeta := eta[glob] = `/`(`*`(`+`(Wg, Wv)), `*`(Qg))], [eta[glob] = `/`(`*`(`+`(Wg, Wv)), `*`(Qg))])
Typesetting:-mprintslash([Qg := `*`(ma, `*`(c[p], `*`(`+`(T3g, `-`(T2g)))))], [`*`(ma, `*`(c[p], `*`(`+`(T3g, `-`(T2g)))))])
Typesetting:-mprintslash([Qg_ := `+`(`*`(38999947.36, `*`(W_)))], [`+`(`*`(38999947.36, `*`(W_)))])
Typesetting:-mprintslash([mf := `/`(`*`(ma, `*`(c[p], `*`(`+`(T3g, `-`(T2g))))), `*`(PCI))], [`/`(`*`(ma, `*`(c[p], `*`(`+`(T3g, `-`(T2g))))), `*`(PCI))])
Typesetting:-mprintslash([eq_ := `+`(CH4, `*`(2, `*`(O2))) = `+`(CO2, `*`(2, `*`(H2O)))], [`+`(CH4, `*`(2, `*`(O2))) = `+`(CO2, `*`(2, `*`(H2O)))])
Typesetting:-mprintslash([PCI_ := `+`(`/`(`*`(802310.00, `*`(J_)), `*`(mol_)))], [`+`(`/`(`*`(802310.00, `*`(J_)), `*`(mol_)))])
Typesetting:-mprintslash([PCIm_ := `+`(`/`(`*`(50144375.00, `*`(J_)), `*`(kg_)))], [`+`(`/`(`*`(50144375.00, `*`(J_)), `*`(kg_)))])
Typesetting:-mprintslash([mf_ := `+`(`/`(`*`(.7777531849, `*`(kg_)), `*`(s_)))], [`+`(`/`(`*`(.7777531849, `*`(kg_)), `*`(s_)))])
Typesetting:-mprintslash([eqeta_ := eta[glob] = .4751708168], [eta[glob] = .4751708168])

i.e.  se gastan 0,78 kg/s de gas natural, y el rendimiento térmico global es del 48 % (algo bajo para un ciclo combinado, que suele alcanzar el 55%).

>